Humusprivate beta

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, then closes itself. OSC Learn works the same way for OSC controls. Manage or remove mappings in Settings ▸ MIDI & OSC. Mappings persist 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. Right-click a knob for Clear MIDI, Clear OSC or Clear all control to start it over.

Shift combos and banks

Hold a button on your controller while you learn, and that button becomes the shift for the mapping: the Quick Map window shows it as "Note 36 + CC 7". The knob keeps its plain mapping too, so CC 7 alone still moves whatever it moved before, and under shift 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 shift stops firing its own mapping. Turn Own action back on in Settings ▸ MIDI & OSC if you want it to do both.
  • Latching turns a shift 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 shift instead.
  • A release always lands where the press did, so a pad you hold under shift lets go cleanly even if you lift the shift 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.

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.