MIDI
Controls MIDI output through sfxlib where the target backend supports it.
Syntax
`
result = Midi Open(device)
Midi Close
result = Midi Close()
result = Midi Play(filename)
Midi Stop
Midi Pause
Midi Resume
result = Midi Send(status, data1, data2)
`
Description
MIDI is not recorded audio. It is a stream of musical instructions sent to a MIDI device or synthesizer. Those instructions can say things like note on, note off, change instrument, or change controller value.
Midi Open selects a MIDI output device by index. Midi Send sends one short MIDI message using a status byte and two data bytes. For example, &h90 is a common note-on status byte on channel 1, the first data byte is the note number, and the second is velocity.
Midi Play attempts to play a MIDI file where the backend supports file playback. Stop, Pause, Resume, and Close control that MIDI path.
MIDI support varies a lot by operating system and backend. Programs should check return values and continue gracefully if no MIDI device exists.
Example
`
if midi open(0) >= 0 then
midi send &h90, 60, 100 ' note on: middle C
sleep 250, 1
midi send &h80, 60, 0 ' note off
midi close
end if
`
Notes

- Use MUSIC for recorded music files such as WAV or decoded audio.
- Use PLAY or NOTE for generated music that does not need a MIDI device.

See also

- `DEVICE`
- `MUSIC`
- `Sound Library Reference`