Here's a summary of commands available in HyperMIDI:
Opening and closing HyperMIDI
hmOpenMIDI
Open HyperMIDI (call before using other commands).
hmCloseMIDI
Close HyperMIDI (call when done using HyperMIDI).
Reading and writing MIDI
hmReadMIDI
Read a sequence from an input buffer. You can have up to 32 independent input buffers, fed from up to 6 independent MIDI Manager ports (or direct from modem or printer port).
hmWriteMIDI
Write a sequence to output—there is no limit to the number of simultaneous sequences you can write, and you can address them to any of up to six MIDI Manager output ports (or modem or printer port). You can set a sequence to loop any number of times (over four billion times).
hmPlay
Play a MIDI file from disk or memory (combines
hmMIDIFiler
andhmWriteMIDI
for the convenience of a single command).Realtime input processing functions
hmSetZone
hmGetZone
Set (or get) the zone specification of any of the 32 input buffers. With a zone, you can specify the MIDI channels, note range, and velocity range that the input will accept.
hmSetFilter
hmGetFilter
Set (or get) the MIDI filter settings of any of the 32 input buffers. You can enable or disable any type of MIDI message (note one, note off, sysex, program change...)
hmSetEcho
hmGetEcho
Set (or get) the MIDI echo paths of any of the 32 input buffers. Each input can echo its filtered and zoned MIDI data directly to up to six outputs, where they can be modified (transposed, velocity scaled, etc.) in real time.
Realtime output processing functions
hmSetChannel
hmGetChannel
Set (or get) the channel map for any of up to 32 output paths. You can map any channel to any other, or disable any channel.
hmSetTranspose
hmGetTranspose
Set (or get) the transpose map for any of up to 32 output paths. Transpose maps can change any note to any other, or disable individual notes. This lets you do diatonic (scale-based) transposition and other complex effects in addition to simple chromatic transposition.
hmSetVelocity
hmGetVelocity
Set (or get) the velocity map for any of up to 32 output paths. This lets you scale the playback velocity response to any possible curve, and do velocity cross-fading.
hmSetOffset
hmGetOffset
Set (or get) the time offset for any of up to 32 output paths. When input are echo to output, this lets you add MIDI delay effects in real time.
Control Utilities
hmUtility
Utility functions to find out whether a sequence is still playing, how many notes or other MIDI events remain to be played, for terminating a sequence, muting a sequence or individual channels in a sequence, adjusting the loop time of a playing sequence, and finding out the length of a sequence.
hmClock
Sequence clock functions: start and stop the clock, set or read the current time, the tempo in beats-per-minute (optionally overriding a sequence's tempo map, the playback rate by percent, the clock format (bpm, SMPTE, or milliseconds), and the synchronization (internal or external).
File handling
hmMIDIFiler
Read and write both type 0 (single track) and type 1 (multitrack) MIDI files. Handles all MIDI and meta (track names, markers, comments, tempo, time signature, etc.) events.
hmFiler
Reads or writes any type of binary data file (you can use this to read or write specific sysex editor formats, for instance).
User Interface
hmSlider
For MIDI data sliders. (HyperCard only.)
Clients, ports, and patching
hmPatcher
hmClients
For scripting MIDI Manager connections. (Note: HyperMIDI handles MIDI Manager connections automatically. These commands are for the rare cases in which you want to make patches under script control.)