The midi module in PIXERA has several different functionalities and can be used for:
- Receive Midi commands
- Send Midi commands
- Receive Midi Timecode → MIDI Timecode

General use
To receive midi in the module, the module must be initialized after the devices have been defined.
To do this press init()
Receive Midi
To receive midi, the correct input device must be set in the properties. The module provides teach in functionality, by sending midi notes / control change / program change commands, actions can be created for these.

Depending on what is sent, "Control Change" “Program Change” or “Note”, there are separates teach in folders in the properties.
Send Midi
For testing, we use the Microsoft GS Wavetabel synth. This is a virtual midi device from windows with which we can generate sounds and play them back on the speakers of the system.
In the signature of the sendNote()
function, you can see what parameters can be sent. In this case it is int channel,int note,bool on,int velocity.
We can use a custom action or a CombineValues Module to send those parameters.

When successful you should be able to hear a Piano note on you Audio device.
The same workflow applies if you use as example sendControlChange()
.
Data
Actions
Action |
Info |
Input |
Output |
---|---|---|---|
ref | - | - | |
init | - | - | |
uninit | - | - | |
Send | FOLDER | FOLDER | FOLDER |
sendNote | channel (int), note (int), on (bool), velocity (int) | - | |
sendPolymorphicAfterTouch | channel (int), note (int), value (int) | - | |
sendControlChange | channel (int), controller (int), value (int) | - | |
sendProgramChange | channel (int), device (int) | - | |
sendChannelAftertouch | channel (int), value (int) | - | |
sendPitchBlend | channel (int), value (int) | - | |
sendSysEx | channel (int), data () | - | |
Receive | FOLDER | FOLDER | FOLDER |
Note | FOLDER | FOLDER | FOLDER |
recvNote | error (), time (), channel (), on (), note (), velocity () | - | |
Polymorphic | FOLDER | FOLDER | FOLDER |
recvPolymorphicAftertouch | error (), time (), channel (), note (), value () | - | |
ControlChange | FOLDER | FOLDER | FOLDER |
recvControlChange | error (), time (), channel (), controller (), value () | - | |
ProgramChange | FOLDER | FOLDER | FOLDER |
recvProgramChange | error (), time (), channel (), device () | - | |
ChannelAftertouch | FOLDER | FOLDER | FOLDER |
recvChannelAftertouch | error (), time (), channel (), value () | - | |
PitchBlend | FOLDER | FOLDER | FOLDER |
recvPitchBlend | error (), time (), channel (), value () | - | |
SysEx | FOLDER | FOLDER | FOLDER |
recvSysEx | error (), time (), dataTable () | - | |
MSC | FOLDER | FOLDER | FOLDER |
recvMsc | dataTable () | - | |
getInDevices | (hidden) | - | - |
getOutDevices | (hidden) | - | - |
Timecode | FOLDER | FOLDER | FOLDER |
Internal | FOLDER | FOLDER | FOLDER |
timecodeFunction | error (), time (), mtc (), fps () | - | |
checkInput | - | - | |
Timecode | val (), doSet (bool) | - | |
TimecodeMode | val (), doSet (bool) | - | |
timecodeToTimeline | Connect this function to the Timeline setTimecodeInput function or Compound setTimecodeInput and set the Timeline SMPTE Mode to receive. | - | - |
disableLog | (hidden) | state (bool) | - |
midiNoteList | (hidden) | note () | - |
learnNote | (hidden) | state (bool) | - |
buildNote | (hidden) | - | - |
range | (hidden) | minIn (), maxIn (), minOut (), maxOut (), val () | - |
buildControlChange | (hidden) | - | - |
learnCC | (hidden) | state (bool) | - |
buildPC | (hidden) | - | - |
learnPC | (hidden) | state (bool) | - |
resetActions | (hidden) | folder (string) | - |
Parameters
Name |
Content |
Type Hint |
Options Source |
Options Action |
Auto Init | true | bool | [] | |
Midi In Device | loopMIDI Port 1 | string | Utils.Midi.In.list | [] |
Midi Out Device | loopMIDI Port 2 | string | Utils.Midi.Out.list | [] |
Disable Logs | true | bool | self.disableLog | |
Learn Note | false | bool | self.learnNote | |
Last Received Note | Channel: 2 Note: 6 Value: 1.0 | string | [] | |
Note Min Out | 0 | number | [] | |
Note Max Out | 127 | number | [] | |
Note Action Name | Ch2_Note_6 | string | [] | |
createNote | create action | button | self.buildNote | |
Learn CC | false | bool | self.learnCC | |
Last Received CC | string | [] | ||
CC Min In | 0 | [] | ||
CC Max In | 127 | [] | ||
CC Min Out | 0 | number | [] | |
CC Max Out | 127 | number | [] | |
CC Action Name | string | [] | ||
createCC | create action | button | self.buildControlChange | |
Learn PC | false | bool | self.learnPC | |
Last Received PC | string | [] | ||
PC Action Name | string | [] | ||
createPC | create action | button | self.buildPC | |
resetNote | Reset Note Receive Actions | button | self.resetActions("Note") | |
resetCC | Reset Control Change Actions | button | self.resetActions("ControlChange") | |
resetPC | Reset Program Change Actions | button | self.resetActions("ProgramChange") | |
resetPoly | Reset Polymorphic Actions | button | self.resetActions("Polymorphic") | |
resetPitch | Reset PitchBlend Actions | button | self.resetActions("PitchBlend") | |
resetSysex | Reset SysEx Actions | button | self.resetActions("SysEx") | |
Author | AV Stumpfl GmbH | string | [] | |
Logo | image | [] | ||
Version | 01.Aug | string | [] | |
Description | To use Midi SysEx messages as Table comment out the string message and in the Table Massege. To Use Midi Timecode connect timcodeToTimeline function with Timeline setTimecodeInput function and set the Timeline to receive | string | [] |
Pixera 25.1 RC 16 | 02 June 2025 | J.B