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.
The function is “always on” - that is, there is currently no menu item for turning it on, or more particularly, turning it off. (This could be added if needed).
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.
Velocity is not recorded. (The TNR doesn’t generally handle velocity). The velocity output of played back notes is fixed at 100.
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.
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.
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.
The behaviour is different for different layer types.
- 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).
If anyone has any better ideas for what to do with the “random” positions, then suggestions are welcome! For example, the bounce height could be linked in some way to received velocity?
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.
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.
None known - there may be compatibility issues with hardware setups if the TNR was previously being bombarded by note-on messages.
Bug 007 tracks the fact that the quantization (most obvious in score mode with a slow loop speed) isn’t quite correct.
First included in A018, broken in A019, and fixed in A021. (Let’s hope it stays fixed).