MIDI Reference
OOOO Digital Tape Loops accepts MIDI note input and plays each matching loop polyphonically, like a tape-based keyboard. MIDI notes change loop playback speed and pitch together. Fixed MIDI CC assignments control useful performance, filter, send, note-start, and envelope parameters; the plugin does not produce MIDI output.
Supported messages
Note-on, note-off, sustain pedal, all-notes-off, and the mapped control-change messages are handled. Events are applied at their exact sample position inside the audio block.
| Message Type | Function | Description |
|---|---|---|
| Start or retrigger a note head | Every loop whose MIDI CH setting matches the message channel receives the note. Velocity values 1–127 all use the loop's note envelope; velocity does not currently change gain. |
|
| Release a note head | Starts the matching note head's Note Release stage on every matching loop, or defers it while the channel's sustain pedal is down. |
|
| Release a note head | Treated as note-off, including sustain-pedal behavior. | |
| Adjust loop performance controls | Mapped CC messages update every loop whose MIDI CH setting matches the message channel. |
|
| Ignored | Unmapped CC, pitch bend, aftertouch, program change, MIDI clock, and other messages are not handled. |
Per-loop channel routing
Selection does not decide which loop receives MIDI. Each loop independently filters incoming notes with MIDI CH, so one note can play several loops at once.
| MIDI CH | Behavior | New-loop default |
|---|---|---|
| Ignore note input on every channel. | Second and later loops | |
| Accept note input from channels 1–16. | First loop | |
| Accept notes only from the selected channel. | — |
Pitch and polyphony
Middle C (MIDI note 60) plays at the loop's current rate. Each semitone changes that rate by the usual equal-tempered pitch ratio.
| MIDI note | Rate multiplier | Result |
|---|---|---|
| 0.5× | One octave below the loop's current speed and pitch. | |
| 1× | The loop's current speed and pitch. | |
| 2× | One octave above the loop's current speed and pitch. |
Performance controls
These conventional controller assignments affect every channel-matched loop. Volume and pan use short existing loop slews to avoid abrupt changes. Playback Volume has no MIDI CC assignment.
| Loop control | MIDI CC | Value mapping | Behavior |
|---|---|---|---|
| Volume | 0 = mute, 100 = 0dB, 127 = +12dB | Sets the loop's final master level for both transport playback and MIDI note heads. Values 1–100 follow a linear gain curve; values above 100 add gain up to +12dB. | |
| Pan | 0 = left, 64 = center, 127 = right | Sets the loop's stereo position. | |
| Post LPF Q | 0–100% | Sets post-low-pass-filter resonance. | |
| Post LPF | 20Hz–18kHz | Sets post-low-pass-filter cutoff on a logarithmic frequency curve. | |
| Reverb | 0–100% | Sets the loop's reverb send. | |
| Sustain pedal | 0–63 up, 64–127 down | Defers note-off messages while held. Releasing the pedal starts the configured release stage for deferred notes. | |
| All notes off | Any value | Clears held and sustained MIDI-note state and starts release for every note tracked on that channel by the channel-matched loops. |
Note behavior
Each loop has one note-head slot for every MIDI note from 0–127. Different notes are polyphonic; repeated note-ons for the same pitch reuse that pitch's existing head.
| Loop parameter | MIDI CC | Default | Behavior |
|---|---|---|---|
| Note Mode: Mellotron | — | Enabled | A newly activated pitch starts at the most recently tracked note-head position. Before any note head has played, it starts at the transport position. |
| Note Mode: One-shot | — | — | A newly activated pitch starts at the active loop's start boundary, then follows the current forward or reverse rate. Despite the name, the head wraps and continues until note-off and release. |
| Note Start % | 0% | Adds a random offset between 0% and the selected percentage of the active loop length when a new note head starts. | |
| Note Attack | 2.0s | Time to rise from the current envelope level to full level. | |
| Note Decay | 0.05s | Time to move from full level to sustain. | |
| Note Sustain | 100% | Level held while the note remains on. | |
| Note Release | 2.0s | Time to fade from the current level after note-off. |
Implementation notes
Effective note rate = loop rate × 2(note − 60) / 12, clamped to −4×…+4×. Reverse loop rates remain reverse.
Note heads are independent of the loop's transport head. They can sound while transport playback is stopped, and they are mixed with the transport when it is running.
Note heads bypass Playback Volume, so setting it to -inf dB mutes only the transport. Notes remain subject to their envelopes and the shared tape, filters, master Volume/CC 7, pan, effects, and sends; muting master Volume silences both paths.
Note-envelope CC values scale linearly from 0–127. Note Start % and Note Sustain map to 0–100%; attack, decay, and release map to 0–20 seconds. Filter cutoff uses a logarithmic frequency curve.
DAW host automation remains separate from MIDI input. Fixed CC assignments update the matching loops directly; other exposed plugin parameters remain available to host automation.