User Tools

Site Tools


config:remotecontrol:midi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
config:remotecontrol:midi [2016/08/30 10:26] – [Configuration] twconfig:remotecontrol:midi [2016/08/30 10:33] – [Scripting] tw
Line 44: Line 44:
  
 ===== Scripting ===== ===== Scripting =====
 +
 +Any received MIDI message will also be passed to background scripts, using the following procedure:
 +
 +  // Called when a MIDI message is received
 +  procedure OnMidiMessage(Device: integer; Status, Data1, Data2: byte);
 +  begin
 +  end;
 +  
 +There is another procedure that will catch all MIDI SysEx messages:
 +
 +  // Called when a MIDI sysex is received
 +  procedure OnMidiSysex(Device: integer; Data: string);
 +  begin
 +  end;
 +
 +If you want to send back messages to the MIDI device, you should first enumerate the available devices, as the order of the output devices will not necessarily coincide with the order of the input devices. The following procedure will list all available output devices to the System Log:
 +
 +  MidiOutListDevices;
 +  
 +At the beginning of your script (or in the ''OnLoad'' procedure in case of a background script), you must first use the MidiOutOpen procedure to open the device for output, e.g. the device with index 1:
 +
 +  MidiOutOpen(1);
 +  
 +Then you can send messages to that device. Note that we use hexadecimal values here, prefixed by ''$'' in the Pascal language.
 +
 +  MidiOut(1, $B0, $10, 0); // device, status, data1, data2
 +  
 +There is also a procedure to send out SysEx messages:
 +
 +  MidiOutSysEx(1, 'somesysexdata');
 + 
 +At the end of the script, or in ''OnUnload'', you should close the device again:
 +
 +  MidiOutClose(1);
  
config/remotecontrol/midi.txt · Last modified: 2020/01/12 14:29 by tondose

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki