Monitoring & Thru
A MIDI track with an input can pass what you play on to its own output — MIDI thru. This page explains what decides whether it does, and what happens to the notes on the way.
The monitor decides what you hear
Section titled “The monitor decides what you hear”Monitoring is a track setting, as it is in a DAW. "off", the default, takes nothing from the input
to the output: the input is connected but silent. "in" passes everything through. "auto" currently
passes everything through, the same as "in".
The default is off because an input you didn’t ask to hear should stay silent: connecting a keyboard never makes a track start playing it.
Played notes follow the track
Section titled “Played notes follow the track”A note passed through leaves on the track’s output port and the track’s channel, not the channel it arrived on. A keyboard sending on channel 1 into a channel-5 track plays channel 5. The track, not the keyboard, decides where its notes go — the same as for the notes of its pattern — so moving a track to another synth moves what you play on it too.
Played notes are not delayed
Section titled “Played notes are not delayed”Resonon sends pattern notes early, by the time the audio takes to reach your speakers, so hardware lands with the mix (Clock & Alignment). A note you play is the other way round: it is a keypress happening now, and delaying it to line up with the audio buffer would only make the instrument feel late. So played notes get the port’s own trim, and nothing else.
A feedback loop is caught
Section titled “A feedback loop is caught”An input and an output on the same virtual port form a loop: every note passed through arrives back at the input and is passed through again. Resonon watches the event rate, and when it runs away — thousands of events in a fraction of a second — it suspends thru, prints a warning, and tries again a second later. The session keeps playing. To avoid loops, use separate ports for input and output.
Every input feeds Cc()
Section titled “Every input feeds Cc()”CC messages from every connected input are captured, whether or not a track uses that input, and
Cc() reads the latest value. The value is a single number updated without a lock, so the audio
thread can read it in every block.
Disconnecting leaves nothing hanging
Section titled “Disconnecting leaves nothing hanging”When an input is disconnected, every track that was passing it through sends all-notes-off. Pulling a controller mid-performance doesn’t leave a held note ringing.
Related
Section titled “Related”- Play Through from a Keyboard — route and monitor an input
- Map a Controller — read CC as a signal