Skip to content

Latest commit

 

History

History
195 lines (156 loc) · 10.1 KB

director-midi.md

File metadata and controls

195 lines (156 loc) · 10.1 KB

The Director's .mid export — your show in a DAW

The Pattern Lab's Director authors a show: four knob-automation lanes over time. The device plays that show natively from a .pfs file. The .mid button exports the same show as a Standard MIDI File, so the identical automation can drive things that speak MIDI — an Ableton Live set first of all. Both files come from the same sampler, sampling the same curves the lab plays, so what the DAW sees is what the panel does.

This guide assumes you know nothing about MIDI files. That's fine; there is not much to know.

What is in the file

Format Standard MIDI File, format 0 (one track), importable by any DAW
Lanes Knob 1 → CC 20 · Knob 2 → CC 21 · Knob 3 → CC 22 · Knob 4 → CC 23, all on channel 1
Values The wire bus (0–1000) scaled to MIDI's 0–127
Timing PPQ 480 at a fixed 120 BPM — so 1 second of show = 1 second at 120 BPM (2 beats; a 4/4 bar = 2 s; a 30 s show = exactly 15 bars)
Names The track is named after the show; four text events record which knob is which (Glitch = CC20)

CC 20–23 are undefined controllers in the MIDI spec — nothing listens to them by accident, which is exactly what you want for mapping.

Two behaviors carry over from the device:

  • A hold keyframe is a single CC event — the value jumps there and stays. A curve is a dense ramp of events, one per 7-bit value change.
  • A lane is silent before its first keyframe (on the device the knob keeps its live value there; in the DAW, nothing moves until the show says so).

One thing to check before anything: tempo

MIDI files count beats, not seconds. The export is authored at 120 BPM, where beats and seconds line up. If your Live set runs at 140 BPM the same clip plays the whole show proportionally faster; at 90, slower.

Set the set to 120 BPM and show-time equals wall-clock time — the same timing the device plays from the .pfs. Any other tempo is a legitimate creative choice (the show stretches with the music), just a deliberate one.

Ableton Live, step by step

  1. In the lab: Director → .mid — the file downloads.
  2. Drag it from your file manager onto a MIDI track in Live (Live 11/12). A clip appears.
  3. Double-click the clip, open its Envelopes box (the ⊞-ish toggle at the clip panel's bottom-left). In the first chooser pick MIDI Ctrl, in the second pick 20 Undefined — there is your knob 1 lane, drawn exactly as the Director drew it. CC 21/22/23 are the other knobs.

Now the clip contains the automation. To make it move something, pick one of these routes, simplest first:

Route A — drive a device on that track

Anything sitting on that MIDI track that responds to CC gets it for free: many VST synths let you MIDI-learn CC to a parameter, and a Max for Live device can read it with [ctlin 20]. Fine when the target lives on one track.

Route B — the loopback, to map ANYTHING in Live

Live's own MIDI-map mode (Ctrl/Cmd-M) can bind a CC to any knob, macro, send, or mixer control — but only from an input port. So send the track back into Live:

  1. Install a virtual MIDI cable: loopMIDI (Windows) or use the built-in IAC Driver (macOS, enable it in Audio MIDI Setup).
  2. On the .mid clip's track, set MIDI To → the virtual port.
  3. Live → Preferences → MIDI: for that port's Input, switch Remote on.
  4. Enter MIDI-map mode (Ctrl/Cmd-M), click any parameter — a synth macro, a filter cutoff, a return level — then press play so the clip fires its CC. The moving CC binds to the clicked parameter. Leave map mode.

Play the clip: the show now turns your sound. Four lanes, four macros — the same four knobs, just aimed at a synthesizer.

Route C — freeze it into Live automation

Record the mapped parameters onto their tracks (or record the loopback input into another MIDI clip) and you have plain Live automation you can edit with Live's tools, detached from the file.

Route D — send it to the panel

The three routes above aim the clip at things inside Live. This one aims it at the panel itself: the same CC 20–23, out over the network and straight onto the four knobs. It needs the Audio edition on the panel, which is where the midi feature lives.

Once, to make the panel a MIDI port:

  1. Windows: install rtpMIDI, open it, make a session and tick Enabled, then find Patternflow in the Directory and press Connect. macOS: Audio MIDI Setup → Network, the same idea. (The panel can also invite your machine itself, so it comes back after a reboot with nobody reopening anything — the host field on the device's /midi page.)
  2. Live → Preferences → Link, Tempo & MIDI. On that port's Output row, switch Track on. The Remote switch on its Input row is the other direction, the Bridge's; both can be on at once. Leave Remote on the Output row off. With it on, Live sends every mapped parameter's value back to the panel on the same CC, and the panel reads that position as a relative turn: the knob pins itself to one value and ticks whenever you move it. The same applies to the USB port on the MIDI bundle.

Then, to send a lane:

  1. Make a MIDI track (Ctrl/Cmd-Shift-T) and put no instrument on it. An instrument makes the track's output audio, and the chooser you need turns from MIDI To into Audio To. If you want a synth too, that is a second track.
  2. In that track's In/Out section (Ctrl/Cmd-Alt-I if it is hidden), set MIDI To to the port and the channel below it to Ch. 1 — the panel listens on channel 1 unless its /midi page says otherwise. MIDI carries sixteen channels down one wire and ignores the fifteen that are not its own; that is all that setting is for.
  3. Drop the .mid on that track — or draw your own: an empty clip, its Envelopes box, MIDI Ctrl then 20 Undefined, Draw Mode off (B) and the grid off (Ctrl/Cmd-4) so breakpoints land anywhere. Alt-drag a segment between two breakpoints to bend it into a curve. Press play.

Knob 1 follows CC 20, the others follow 21, 22 and 23. The lane's floor is 0 and its ceiling is 127, and that is the whole of that knob's range on the panel — one MIDI step is about 8 of the device's 1000. A value holds until a hand turns that encoder, so automation and hands share the panel and the hand always wins.

Loop the clip and that is an LFO: the shape drawn once, the clip's length its period, tempo-locked for nothing. Draw two cycles into one lane and one into another and the four knobs drift out of phase, which is most of what makes a pattern stop looking like a loop.

The same curve turning sound as well

A track's MIDI To points at one destination, so the track feeding the panel cannot also feed a synth. Three ways round it, least hassle first.

  • Copy the lane onto the mod wheel. Select the CC 20 envelope, copy it, switch the chooser to 1 (Mod Wheel) and paste — Live copies envelopes between parameters, not just through time. Then put Expression Control (Core Library) on that same track, source Mod Wheel, and Map it onto any parameter in the set; mapping does not care which track the target is on. Its Min/Max decides how far that parameter travels, so the light can swing end to end while a filter only breathes — and setting Min above Max inverts it, so the same curve that opens the pattern closes the filter. The catch: it is a copy, not a link — edit one lane and the other keeps the old shape.
  • A CC-mapping device. Expression Control reads only Velocity, Mod Wheel, Pitch Bend, Aftertouch and Keytrack — never a chosen CC number. The community fills that gap (CCMapper, CC map8 and others on maxforlive.com), and those are a file you drag in rather than an install.
  • A virtual cable. loopMIDI (Windows) or the IAC Driver (macOS): duplicate the track, aim the copy at the virtual port, switch that port's Input → Remote on, and MIDI-map (Ctrl/Cmd-M) the moving CC onto anything at all. This is Route B pointed at the panel's twin, and it is the only one of the three that needs no copying and reaches Live's own instruments.

Whichever you pick, choose the target by what that knob already does. If knob 1 sets a pattern's speed, put it on something that gets faster; if it sets colour, put it on a filter. Then the eye and the ear are saying the same thing, which is the whole point of running one curve into both.

Light and sound together

The .mid drives the DAW. The device plays the same show natively: export the .pfs (the button next to .mid), upload it at the device's /shows page, and both are the same automation to the tick — same sampler, same curves.

So for a synced piece: Live at 120 BPM, .mid clip at 1.1.1, start the show on the device and press play together. For filmed work, the alignment slate in integrations/ableton/docs/recording-sync.md is the precise version of "press together".

Driving the device from Live has its own section above (Route D) — this paragraph used to say there was no way, which was true until the panel became a MIDI port. CC 20–23 over RTP-MIDI is the absolute-automation path from a DAW to the panel, and this file plays down it unchanged. OSC's knob messages are relative deltas (osc-spec.md), which is why MIDI is the transport that carries a Director lane.

The Patternflow Bridge (integrations/ableton/) is the other half: it maps the physical knobs to Live parameters over Wi-Fi, so a hand on the panel plays the rig. Together with Route D the panel is an ordinary two-way instrument in the set — it plays Live, Live plays it, and a show can play both.

And to place the third sibling: the Audio edition drives the knobs from sound (levels over WebSocket, audio-ws-spec.md) — reactive, live, inbound. The Director's exports are the opposite direction: authored, deterministic, outbound. Same four knobs either way.