Here's a summary of commands available in HyperMIDI:
Opening and closing HyperMIDI
Open HyperMIDI (call before using other commands).
Close HyperMIDI (call when done using HyperMIDI).
Reading and writing MIDI
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).
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).
Play a MIDI file from disk or memory (combines
hmWriteMIDIfor the convenience of a single command).
Realtime input processing functions
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.
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...)
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
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.
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.
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.
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.
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.
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).
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.
Reads or writes any type of binary data file (you can use this to read or write specific sysex editor formats, for instance).
For MIDI data sliders. (HyperCard only.)
Clients, ports, and patching
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.)