Meta Controller - Block Change

This function introduces meta controllers, the first one of which is a block change.

Meta controllers are instruments that, rather than playing notes, or outputting control change messages, act to change internal parameters of the TNR.

The first meta controller is a block change controller, that simply executes a block change to the block indicated by the “note”, where the lowest pitch is block 1, and the highest pitch is block 16.

This function is a property of the layer, and is selected under the layer menu. When active, the main display will change slightly to indicate that it is not an “INST” that is being played, but a META.

A typical usage model for this is to have layer 1 be a “sequencer” layer, set in score-256 mode (see Score 256 ), with a slow loop speed, using the block change meta controller as its instrument. This provides a way of writing a track, with a certain number of ticks of block 1, then a certain number of ticks of block 3, then block 4, etc.

Currently, since a running block change controller does change the current block, the visible block will keep changing. This makes entering block change commands tricky. (I am working on this). One workaround is to “program” the block changes with the Meta instrument set to 000 (No action), and then change the instrument to the block change instrument.

Track Sequencer

However, this does not preclude inventive use in other modes. The block change meta controller deliberately doesn’t do anything in PUSH mode since it isn’t meaningful. Behaviour in SOLO mode does change block as expected, but is probably only useful as a way of changing blocks with one key press e.g. in a live situation. Trying to use a block change meta in a BOUNCE layer, for example, can be quite confusing, since the block - and hence the live set of notes - keeps changing.

A few notes:

  1. The timing of when the block change happens can be a bit bizarre. The TNR executes the block change at the end of the current internal tick. This means that with two score layers running in perfect parallel, a block change LED column 1 will take effect some time between column 1 and column 2, meaning that column 1 LEDs from the other score blocks will be played for the OLD block rather than the new block. I am still trying to see how this might be made more predictable.

  2. Block changes are quite processor expensive, so rapid sequences of block changes may lead to audible timing glitches if there are a lot of notes. (Improving this is part of the overall optimization activity, but the TNR isn’t a powerhouse, so be nice)

  3. Controller 0 is defined as a NULL controller deliberately, and is switched to by default when Meta controllers are selected, as a way of ensuring that nothing crazy happens to connected hardware. Contollers 2-15 are at the moment empty slots - selecting them will result in nothing happening.

  4. Only 1 block change is allowed per “tick”; this is to try prevent loops where block 1 changes to block 2 which immediately changes back to block 1 etc.

Compatibility Issues

Loading songs/blocks saved in previous releases are unlikely to play properly.


First included in A017.

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