Jump to content

Component: USB MIDI (Comms: USB): Difference between revisions

From Flowcode Help
XML import
 
m Text replacement - "style="background-color:#EAE1EA;"" to "class="mtx-class-propfolder""
 
(22 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{| style="width:50%"
 
{| width="50%"
|-
|-
| width="20%" style="color: gray;" | Author
| width="20%" style="color:gray;" | Author
| Matrix Ltd.
| Matrix Ltd.
|-
|-
| width="20%" style="color: gray;" | Version
| width="20%" style="color:gray;" | Version
| 1.3 (Release)
| 1.3
|-
|-
| width="20%" style="color: gray;" | Category
| width="20%" style="color:gray;" | Category
| Comms: USB
| Comms: USB
|}
|}




==USB MIDI component==
Component to create and communicate using a standard MIDI connection. Compatible with simulation and USB enabled microcontroller devices. Currently only compatible with the 16-bit PIC range of devices.


==[[File:Component Icon fdceef06_919a_405b_8d0b_6118cd0e104c.png|Image]] USB MIDI component==
==Component Source Code==
Component to create and communicate using a standard MIDI connection.
Compatible with simulation and USB enabled microcontroller devices.
Currently only compatible with the 16-bit PIC range of devices.


==Examples==
Please click here to download the component source project: [https://www.flowcode.co.uk/wiki/componentsource/FC_Comp_Source_USBMIDI.fcfx FC_Comp_Source_USBMIDI.fcfx]
''<span style="color:red;">No additional examples</span>''


Please click here to view the component source code (Beta): [https://www.flowcode.co.uk/FlowchartView/?wfile=componentsource/FC_Comp_Source_USBMIDI.fcfx FC_Comp_Source_USBMIDI.fcfx]


==Downloadable macro reference==
==Detailed description==


===<span style="font-weight: normal;"><u><tt>SendMIDI</tt></u></span>===
Sends a MIDI packet consisting of up to three bytes of information,


'''Parameters'''


:[[Variable Types|BYTE]] ''Status''
::MIDI Status Byte - Used for commands such as NoteOn, NoteOff etc.


:[[Variable Types|BYTE]] ''Data1''
::MIDI Data Byte - Used as a parameter specific to the specified command


:[[Variable Types|BYTE]] ''Data2''
::MIDI Data Byte - Used as a parameter specific to the specified command




'''Return value'''


:''This call does not return a value''




===<span style="font-weight: normal;"><u><tt>SendPitchChange</tt></u></span>===
Sends out a pitch change command on the specified channel.


'''Parameters'''


:[[Variable Types|BYTE]] ''Channel''
::Channel to send the pitch change to


:[[Variable Types|UINT]] ''Pitch_Change''
::New pitch value to use, Default 0x2000




'''Return value'''


:''This call does not return a value''




===<span style="font-weight: normal;"><u><tt>SendNoteOff</tt></u></span>===
Sends a note off command using the channel, note and velocity specified.


'''Parameters'''


:[[Variable Types|BYTE]] ''Channel''


:[[Variable Types|BYTE]] ''Note''


:[[Variable Types|BYTE]] ''Velocity''




'''Return value'''


:''This call does not return a value''
''No detailed description exists yet for this component''


==Examples==


===<span style="font-weight: normal;"><u><tt>SendControl</tt></u></span>===
Sends a control command using the channel, controller and value specified.


'''Parameters'''


:[[Variable Types|BYTE]] ''Channel''


:[[Variable Types|BYTE]] ''Controller''


:[[Variable Types|BYTE]] ''Value''




'''Return value'''


:''This call does not return a value''




===<span style="font-weight: normal;"><u><tt>SendNoteOn</tt></u></span>===
Sends a note on command using the channel, note and velocity specified.


'''Parameters'''


:[[Variable Types|BYTE]] ''Channel''


:[[Variable Types|BYTE]] ''Note''


:[[Variable Types|BYTE]] ''Velocity''




'''Return value'''


:''This call does not return a value''




===<span style="font-weight: normal;"><u><tt>ReceiveMIDI</tt></u></span>===
Waits for the time specified in the timeout parameter for an incoming MIDI message.


Returns 0 to indicate a timeout, otherwise returns the first value from the MIDI message.


'''Parameters'''


:[[Variable Types|BYTE]] ''Timeout''




'''Return value'''


:[[Variable Types|BYTE]]


''<span style="color:red;">No additional examples</span>''


===<span style="font-weight: normal;"><u><tt>SendPolyPressure</tt></u></span>===
Sends a note press with an associated polyphonic pressure value.


'''Parameters'''


:[[Variable Types|BYTE]] ''Channel''


:[[Variable Types|BYTE]] ''Note''


:[[Variable Types|BYTE]] ''Pressure''




'''Return value'''


:''This call does not return a value''




===<span style="font-weight: normal;"><u><tt>ReadData</tt></u></span>===
Reads a byte from the last received MIDI message


'''Parameters'''


:[[Variable Types|BYTE]] ''Idx''
==Macro reference==
::Byte to read 0-3


===Initialise===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''Initialise'''
|-
| colspan="2" | Starts up the USB communications and attempts to enumerate. Returns 0 for a successful startup or 255 for a enumeration timeout.&nbsp;
|-
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


'''Return value'''


:[[Variable Types|BYTE]]
===ReadData===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''ReadData'''
|-
| colspan="2" | Reads a byte from the last received MIDI message&nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Idx
|-
| colspan="2" | Byte to read 0-3&nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}




===<span style="font-weight: normal;"><u><tt>SendPatch</tt></u></span>===
===ReceiveMIDI===
''<span style="color:red;">No additional information</span>''
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''ReceiveMIDI'''
|-
| colspan="2" | Waits for the time specified in the timeout parameter for an incoming MIDI message. Returns 0 to indicate a timeout, otherwise returns the first value from the MIDI message.&nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Timeout
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}




===SendChannelPressure===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''SendChannelPressure'''
|-
| colspan="2" | &nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Channel
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Pressure
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


'''Parameters'''


:[[Variable Types|BYTE]] ''Channel''
===SendControl===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''SendControl'''
|-
| colspan="2" | Sends a control command using the channel, controller and value specified.&nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Channel
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Controller
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Value
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


:[[Variable Types|BYTE]] ''Instrument''


===SendMIDI===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''SendMIDI'''
|-
| colspan="2" | Sends a MIDI packet consisting of up to three bytes of information,&nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Status
|-
| colspan="2" | MIDI Status Byte - Used for commands such as NoteOn, NoteOff etc.&nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Data1
|-
| colspan="2" | MIDI Data Byte - Used as a parameter specific to the specified command&nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Data2
|-
| colspan="2" | MIDI Data Byte - Used as a parameter specific to the specified command&nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


'''Return value'''


:''This call does not return a value''
===SendNoteOff===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''SendNoteOff'''
|-
| colspan="2" | Sends a note off command using the channel, note and velocity specified.&nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Channel
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Note
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Velocity
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}




===<span style="font-weight: normal;"><u><tt>SendChannelPressure</tt></u></span>===
===SendNoteOn===
''<span style="color:red;">No additional information</span>''
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''SendNoteOn'''
|-
| colspan="2" | Sends a note on command using the channel, note and velocity specified.&nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Channel
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Note
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Velocity
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}




===SendPatch===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''SendPatch'''
|-
| colspan="2" | &nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Channel
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Instrument
|-
| colspan="2" | &nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


'''Parameters'''


:[[Variable Types|BYTE]] ''Channel''
===SendPitchChange===
{| class="mtx-class-macrotable wikitable"
|-
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
| width="90%" class="mtx-class-macrohead" | '''SendPitchChange'''
|-
| colspan="2" | Sends out a pitch change command on the specified channel.&nbsp;
|-
|-
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
| width="90%" | Channel
|-
| colspan="2" | Channel to send the pitch change to&nbsp;
|-
| width="10%" align="center" | [[File:Fc9-u16-icon.png]] - UINT
| width="90%" | Pitch_Change
|-
| colspan="2" | New pitch value to use, Default 0x2000&nbsp;
|-
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}


:[[Variable Types|BYTE]] ''Pressure''


 
===SendPolyPressure===
'''Return value'''
{| class="mtx-class-macrotable wikitable"
 
|-
:''This call does not return a value''
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-comp-macro.png]]
 
| width="90%" class="mtx-class-macrohead" | '''SendPolyPressure'''
 
|-
===<span style="font-weight: normal;"><u><tt>Initialise</tt></u></span>===
| colspan="2" | Sends a note press with an associated polyphonic pressure value.&nbsp;
Starts up the USB communications and attempts to enumerate.
|-
 
|-
Returns 0 for a successful startup or 255 for a enumeration timeout.
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | Channel
'''Parameters'''
|-
 
| colspan="2" | &nbsp;
:''This macro has no parameters''
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | Note
'''Return value'''
|-
 
| colspan="2" | &nbsp;
:[[Variable Types|BYTE]]
|-
 
| width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE
 
| width="90%" | Pressure
 
|-
==Simulation macro reference==
| colspan="2" | &nbsp;
 
|-
''This component does not contain any simulation macros''
| width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-void-icon.png]] - VOID
| width="90%" style="border-top: 2px solid #000;" | ''Return''
|}




==Property reference==
==Property reference==
<span style="font-weight: normal;"><u>Vendor ID</u></span>


This property is of type ''Signed integer'' and can be referenced with the variable name ''vendor_ID''.
{| class="mtx-class-macrotable wikitable"
 
|-
USB VID
| width="10%" align="center" class="mtx-class-macrohead" | [[File:Fc9-prop-icon.png]]
 
| width="90%" class="mtx-class-macrohead" | '''Properties'''  
<span style="font-weight: normal;"><u>Product ID</u></span>
|-
 
|-
This property is of type ''Signed integer'' and can be referenced with the variable name ''product_ID''.
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
 
| width="90%" class="mtx-class-propfolder" | USB Properties
USB PID
|-
 
|-
<span style="font-weight: normal;"><u>Device Name</u></span>
| width="10%" align="center" | [[File:Fc9-type-14-icon.png]]
 
| width="90%" | Vendor ID
This property is of type ''Line of text'' and can be referenced with the variable name ''dev_name''.
|-
 
| colspan="2" | USB VID&nbsp;
USB Device Name
|-
 
| width="10%" align="center" | [[File:Fc9-type-14-icon.png]]
<span style="font-weight: normal;"><u>Manufacturer</u></span>
| width="90%" | Product ID
 
|-
This property is of type ''Line of text'' and can be referenced with the variable name ''dev_manufacturer''.
| colspan="2" | USB PID&nbsp;
 
|-
USB Manufacturer
| width="10%" align="center" | [[File:Fc9-type-10-icon.png]]
 
| width="90%" | Device Name
<span style="font-weight: normal;"><u>Major Version</u></span>
|-
 
| colspan="2" | USB Device Name&nbsp;
This property is of type ''Signed integer'' and can be referenced with the variable name ''major_version''.
|-
 
| width="10%" align="center" | [[File:Fc9-type-10-icon.png]]
USB Major Version Number
| width="90%" | Manufacturer
 
|-
<span style="font-weight: normal;"><u>Minor Version</u></span>
| colspan="2" | USB Manufacturer&nbsp;
 
|-
This property is of type ''Signed integer'' and can be referenced with the variable name ''minor_version''.
| width="10%" align="center" | [[File:Fc9-type-14-icon.png]]
 
| width="90%" | Major Version
USB Minor Version Number
|-
 
| colspan="2" | USB Major Version Number&nbsp;
<span style="font-weight: normal;"><u>Enumeration Timeout</u></span>
|-
 
| width="10%" align="center" | [[File:Fc9-type-14-icon.png]]
This property is of type ''True or false'' and can be referenced with the variable name ''enumeration_tout''.
| width="90%" | Minor Version
 
|-
Specifies if the enumeration (Initialise function) can timeout if taking too long.
| colspan="2" | USB Minor Version Number&nbsp;
 
|-
<span style="font-weight: normal;"><u>Label</u></span>
| width="10%" align="center" | [[File:Fc9-type-7-icon.png]]
 
| width="90%" | Enumeration Timeout
This property is of type ''Line of text'' and can be referenced with the variable name ''label''.
|-
 
| colspan="2" | Specifies if the enumeration (Initialise function) can timeout if taking too long.&nbsp;
Text displayed on the I/O flasher comms component.
|-
 
| width="10%" align="center" class="mtx-class-propfolder" | [[File:Fc9-conn-icon.png]]
<span style="font-weight: normal;"><u>Data Source</u></span>
| width="90%" class="mtx-class-propfolder" | Simulation
 
|-
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''DataSource''.
|-
 
| width="10%" align="center" | [[File:Fc9-type-10-icon.png]]
Simulation data source used to allow the component to connect to specific MIDI hardware or the the data injector components.
| width="90%" | Label
 
|-
<span style="font-weight: normal;"><u>MIDI Port</u></span>
| colspan="2" | Text displayed on the I/O flasher comms component.&nbsp;
 
|-
This property is of type ''Fixed list of ints'' and can be referenced with the variable name ''Midi_Port''.
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
 
| width="90%" | Data Source
''<span style="color:red;">No additional information</span>''
|-
| colspan="2" | Simulation data source used to allow the component to connect to specific MIDI hardware or the the data injector components.&nbsp;
|-
| width="10%" align="center" | [[File:Fc9-type-16-icon.png]]
| width="90%" | MIDI Port
|-
| colspan="2" | &nbsp;
|}

Latest revision as of 14:37, 13 July 2026

Author Matrix Ltd.
Version 1.3
Category Comms: USB


USB MIDI component

Component to create and communicate using a standard MIDI connection. Compatible with simulation and USB enabled microcontroller devices. Currently only compatible with the 16-bit PIC range of devices.

Component Source Code

Please click here to download the component source project: FC_Comp_Source_USBMIDI.fcfx

Please click here to view the component source code (Beta): FC_Comp_Source_USBMIDI.fcfx

Detailed description

No detailed description exists yet for this component

Examples

No additional examples







Macro reference

Initialise

Initialise
Starts up the USB communications and attempts to enumerate. Returns 0 for a successful startup or 255 for a enumeration timeout. 
- BYTE Return


ReadData

ReadData
Reads a byte from the last received MIDI message 
- BYTE Idx
Byte to read 0-3 
- BYTE Return


ReceiveMIDI

ReceiveMIDI
Waits for the time specified in the timeout parameter for an incoming MIDI message. Returns 0 to indicate a timeout, otherwise returns the first value from the MIDI message. 
- BYTE Timeout
 
- BYTE Return


SendChannelPressure

SendChannelPressure
 
- BYTE Channel
 
- BYTE Pressure
 
- VOID Return


SendControl

SendControl
Sends a control command using the channel, controller and value specified. 
- BYTE Channel
 
- BYTE Controller
 
- BYTE Value
 
- VOID Return


SendMIDI

SendMIDI
Sends a MIDI packet consisting of up to three bytes of information, 
- BYTE Status
MIDI Status Byte - Used for commands such as NoteOn, NoteOff etc. 
- BYTE Data1
MIDI Data Byte - Used as a parameter specific to the specified command 
- BYTE Data2
MIDI Data Byte - Used as a parameter specific to the specified command 
- VOID Return


SendNoteOff

SendNoteOff
Sends a note off command using the channel, note and velocity specified. 
- BYTE Channel
 
- BYTE Note
 
- BYTE Velocity
 
- VOID Return


SendNoteOn

SendNoteOn
Sends a note on command using the channel, note and velocity specified. 
- BYTE Channel
 
- BYTE Note
 
- BYTE Velocity
 
- VOID Return


SendPatch

SendPatch
 
- BYTE Channel
 
- BYTE Instrument
 
- VOID Return


SendPitchChange

SendPitchChange
Sends out a pitch change command on the specified channel. 
- BYTE Channel
Channel to send the pitch change to 
- UINT Pitch_Change
New pitch value to use, Default 0x2000 
- VOID Return


SendPolyPressure

SendPolyPressure
Sends a note press with an associated polyphonic pressure value. 
- BYTE Channel
 
- BYTE Note
 
- BYTE Pressure
 
- VOID Return


Property reference

Properties
USB Properties
Vendor ID
USB VID 
Product ID
USB PID 
Device Name
USB Device Name 
Manufacturer
USB Manufacturer 
Major Version
USB Major Version Number 
Minor Version
USB Minor Version Number 
Enumeration Timeout
Specifies if the enumeration (Initialise function) can timeout if taking too long. 
Simulation
Label
Text displayed on the I/O flasher comms component. 
Data Source
Simulation data source used to allow the component to connect to specific MIDI hardware or the the data injector components. 
MIDI Port