MIDI recording

This function adds MIDI (note on) recording to all layers.

The baseline TNR already implements external setting of notes via remote (SysEx) messaging. Also, receiving note-on/note-off messages already stimulates the tone generator to play the correct sound, but does not set the notes in the grid.

This modification joins the two, so that the TNR can record incoming midi note-on streams. The behaviour is slightly different depending on the layer targetted.

This function is found under the MIDI menu:

Some notes:

  1. The function is enabled by the Record Mode entry under the MIDI menu. This enables the recording mode to be switched between “Time” and “Velocity”

  2. Only Note-on information is recorded. The internal workings of the TNR rely on knowing the sound duration when the note-on occurs; the durations are not established from the note-off event. Play back of recorded data uses the layer’s sound length time.

  3. Velocity is not recorded. (The TNR doesn’t generally handle velocity). The velocity output of played back notes is fixed at 100.

  4. Notes incoming on midi channel 1 will be recorded on layer 1, those on midi channel 2 will record on layer 2, irrespective of what the output midi channel is set to for that layer. This is deliberate in order to disambiguate from cases where several layers have the same midi channel number, as well as to avoid the need to “hunt” the layers for matching midi channels.

  5. Only notes that the TNR could play with the current settings are recorded. That means that only notes in the current layer scale, within the current transpose and octave range, are recorded. Incoming notes not in the scale may be heard - since the tone generator will still play them - but they will not be recorded.

  6. All loops are in continuous punch-in/overwrite mode. Deletion of notes has to be via interaction with the TNR itself, e.g. via layer clear, or specific deselection of notes.

  7. The behaviour is different for different layer types. In “Time” mode, the following occurs

    • Score records notes at the current loop position as might be anticipated. Quantization occurs at the loop speed of the layer.
    • Random records the pitch, but the other on-screen axis position is random. Consequently the timing of the playback is random.
    • Draw records the pitch, but the other on-screen axis position is random. The timing is quantized at draw’s loop tick (which is 24 times faster than score’s, for the same loop speed). Draw is therefore a good general recording target if you don’t want quantized data, and don’t need to edit it afterwards.
    • Bounce records the pitch, but assumes you are pressing the top row.
    • Push records the pitch, but the other on-screen axis position is random.
    • Score256 does not have recording capability (yet).
  8. In “Velocity” mode, the following occurs

    • Score uses the incoming note velocity to determine which column to draw the note, split evenly from 01-7F. HIgh velocities are drawn on the right, low ones on the left.
    • Random records the pitch, but the other on-screen axis position is determined by velocity. The timing of the playback is therefore not random, as such, but it is difficult to control.
    • Draw records the pitch, the other on-screen axis position is taken from the velocity. The time-quantization is as per the “Time” mode
    • Bounce records the pitch, but places notes towards the bottom for high velocities, and the top for low velocities. Bounce therefore provides the only way in which notes can be turned off, since a high velocity corresponds to the bottom row, which is Off in bounce mode.
    • Push records the pitch, the other axis is dictated by the incoming velocity.
    • Score256 does not have recording capability (yet).
  9. Only layers that are set to “pure” instruments can be recorded to. Layers with velocity, octave or duration splits, or controller layers, or meta controller layers, can not record incoming notes.

  10. It might be nice to have a “clear track” or “clear note” message - e.g. a low note not likely to represent a real recorded note, or a controller message - in order to allow hands-free recording. Again, suggestions welcome.

I also sorted out what - to me - was a discrepancy. In the original TNR firmware, received patch change commands (B0 00 3F / B0 20 01 / C0 nn) would change the on-board tone of the Tone Generator, but not actually update the instrument on the screen. This is now corrected so that the displayed instrument always tracks the instrument that the tone generator is playing.

Compatibility Issues

None known - there may be compatibility issues with hardware setups if the TNR was previously being bombarded by note-on messages.


First included in A018, broken in A019, and fixed in A021. (Let’s hope it stays fixed).

Pika Blue avatar
About Pika Blue
Pika Blue is overly obsessed with midi controllers, especially unsupported ones with blinky lights .