MIDI & OSC
Open Settings ▸ MIDI & OSC to configure everything below.
Ports (the eight-port model)
Humus has eight MidiIn and eight MidiOut ports, each assigned one device. Add a MidiIn / MidiOut organism from the organism list and pick its Port in the editor; it routes to whatever device you assigned that port. A port whose device isn't connected shows "(not connected)" and keeps its assignment - re-plug it and it comes back. Two grids in Settings map ports to devices.
MIDI flows through the patch on MIDI patch cords (drawn dotted): wire a MidiIn (or a PianoRoll, Sampler, etc.) to an instrument. A node's MIDI Receive mode (right-click → MIDI Receive) picks Omni / Patch-cords-only / a specific channel.
Playing without hardware
- On-screen keyboard - a piano strip embedded in MidiIn and PianoRoll editors.
- QWERTY piano - toggle it on the toolbar and play from the computer keyboard.
A keyboard embedded in an organism's editor plays only that organism's wired downstream - a MidiIn keyboard drives what MidiIn feeds, a PianoRoll's audition keyboard drives what the PianoRoll feeds - not every instrument in the patch.
Playing a written score
MidiPlayer loads a song that was written out rather than recorded - .mid,
.midi, .kar (the same thing with the words alongside) or .mus, the compact
score format the early first-person shooters used, read directly rather than
converted first - and sounds all sixteen channels itself, out of its own audio
outlets. Nothing else needs wiring.
The voices are frequency modulation: a bank of instrument definitions rather than recordings, so a full General MIDI set weighs less than one sampled piano note and sounds like the sound card it came from. That bank ships with the organism.
Point the bank slot at a .sf2 SoundFont instead and it plays recorded instruments
the same score without the period character, and without the per-chip voice limit. The engine follows the file in the slot, so there is no mode to choose. No SoundFont ships with Humus; bring your own.
Host tempo on follows the transport, so the score speeds up and slows down with the patch. Off keeps the tempo the piece was written at, including any changes the composer wrote in.
Chips is how many sound chips play at once. One is what the hardware had - six voices, and a busy score drops notes. Four gives twenty-four.
Channels 1-16 each pick an instrument. Left at nought a channel plays what the file asks for; set it and that channel is overridden, so a piano part can be heard on a flute without editing the file. Channel 10 is the drum channel.
For a score arriving from outside rather than out of a file, use MidiIn.
MIDI Learn (Quick-Map)
Right-click any knob → MIDI Learn. A small "Quick Map" window appears; move a controller on your device and it maps to that parameter. OSC Learn works the same way for OSC controls. Mappings persist in the patch.
Keep the control moving for half a second after the first touch: Humus listens to what it sends and guesses what kind of control it is. The window's Behaves as row shows the guess and lets you change it.
What kind of control it is
Every mapping is one of three kinds, and each kind has its own ways of behaving.
- Knob / Fader - an absolute control. Direct follows it at once. Pick up waits until the knob passes the parameter's current value, so nothing jumps after you move it on screen or switch banks. Curve and smoothing shape the response.
- Button / Pad - a press. Hold is on while held. Toggle flips on each press. Set value jumps to the To value. Step up and Step down nudge by Step, one item at a time on a list. Reset returns the parameter to its default. Threshold says how hard a press counts, for pads that send velocity-like values.
- Encoder - an endless knob that sends "a bit left" or "a bit right" rather than a position. Each detent nudges the parameter by Step. Controllers encode the direction in one of three ways, shown as the values they send for right and left: 7F / 01, 3F / 41 or 41 / 01. Learn tells them apart when you turn it; if a turn goes the wrong way, pick another.
Learn picks a sensible start: a pad on an on/off parameter toggles it, a pad on a trigger holds, a fader on an on/off switches at the threshold, and a knob on a frequency sweeps it evenly across the octaves.
Besides CC and notes, a mapping can listen to pitch bend (all 14 bits) and channel pressure. Each mapping can also be kept to one MIDI channel, or hear them all.
Markers
The ruler carries eight markers, and each is a mappable action like Play or Stop. Right-click a transport button to learn one onto a pad: press the pad where an empty marker is and it takes the playhead where it stands; press it again, anywhere in the song, and the transport goes back to it. Marker Next and Marker Prev walk the ones that are set, in the order they sit in the song rather than the order they were made, so eight pads become eight sections and two more step between them. The markers show as numbered flags on the ruler and travel in the patch.
Every mapping in one place
Control ▸ Parameter Control (F3), or its button on the window rail, lists what moves what: controllers, OSC and modulators. Each row starts with a picture of the kind of control and how it behaves (Toggle, Pick up, Encoder...), then the message (CC, Note, Bend, Pressure), its number, the channel and the device. Click that first button to change the kind and behaviour in the Mapping panel below. Hover a mapped knob to see what drives it. Right-click a knob for Clear MIDI, Clear OSC or Clear all control to start it over. Settings ▸ MIDI & OSC keeps a plain list of them all.
Combos and banks
Hold a button on your controller while you learn, and that button becomes the combo key for the mapping: it reads "CC 7 while holding Note C2", and Parameter Control shows the held key as a chip before the control. The knob keeps its plain mapping too, so CC 7 alone still moves whatever it moved before, and with the key held it moves the new target. Hold two buttons for a three-key combo; the combo with the most held buttons wins.
- A button used as a combo key stops firing its own mapping. Turn Own action back on in Settings ▸ MIDI & OSC if you want it to do both.
- Latching turns a combo key into a bank: tap once and every combo built on it is live until you tap again. Two latching buttons give you four banks with no extra setup.
- Learning a note on its own: press and release it. Holding it and touching something else makes it the combo key instead.
- A release always lands where the press did, so a pad you hold under a combo key lets go cleanly even if you lift the combo key first.
Clock sync
In Settings ▸ MIDI & OSC ▸ Clock sync (or the Control menu):
- Generate - Humus sends 24-ppqn MIDI clock + Start/Continue/Stop/SPP on MidiOut1, so external gear follows Humus.
- Chase - Humus follows incoming MIDI clock (tempo + transport).
OSC
Enable OSC input (UDP) and set the port to control parameters from any OSC control app on your phone or laptop. Right-click a knob → OSC Learn, then move an OSC control to map it.
A board on USB can speak OSC too: enable OSC over serial (SLIP), pick the port and the baud, and a Teensy or an ESP sending SLIP-framed OSC over its serial connection joins the same control bus. OSC Learn, the response curves and the OSC monitor all apply, and values sent to OSC go out over the same port.
Game controllers
Plug in a PS, Xbox or MFi pad (USB or Bluetooth) and it joins the OSC control bus
automatically: sticks, triggers and face buttons appear as /joy/1/lx, /joy/1/rt,
/joy/1/a and so on. Right-click a knob → OSC Learn, then move a stick to map it -
response curves, smoothing and patch persistence apply exactly as to any other OSC
source, and a small deadband keeps idle sticks from hijacking a Learn. Polling is on by
default; toggle it under Settings ▸ MIDI & OSC.
When a note hangs
Press Panic, the crossed circle after the undo and redo arrows, and every note stops: Humus sends a note-off for all 128 notes on all 16 channels to every organism that takes notes, plus All Notes Off, All Sound Off, sustain off and a centred pitch bend, and repeats it to your hardware MIDI outputs. The song keeps running, the patch keeps its sound and your loops are untouched - only the notes are cleared. Right-click the button to map it, so a footswitch can reach it mid-set.
Bluetooth MIDI
A paired Bluetooth keyboard only shows up once something connects it. Click Bluetooth MIDI devices... in Settings ▸ MIDI & OSC, connect it there, and it joins the port grids.