Delayed Block Change

This function introduces delayed block changes, so that block changes only execute at the end of a bar.

Probably the easiest way to explain this is to describe the original use case, which is unashamedly related to operation as a drum machine.

Basic usage

The goal was to have the TNR operating as a drummer, in a live performance environment, able to change on command between beat patterns used for the intro, verse, refrain, outro, etc., and perform sensible fills between them. Rather than pre-program numbers-of-bars between changes, each different pattern type is set as a different block, for example:

  • Block 1 = Intro ( a short fill at the end of the block)
  • Block 2 = Verse ( a simple beat )
  • Block 3 = Refrain ( a more complex beat )
  • Block 4 = Bridge ( like verse, but with more cowbell )
  • Block 5 = Outro ( a big show-off finish )

Then, an external MIDI pedal is hooked up to the TNR, and the pedal is used to send “block change” MIDI commands when switches are pressed. (See Remote block change and Block change by CC ). Using a foot pedal allows the guitarist to indulge in multiple repeats of some solo bridge section before signalling that the band should move on to the refrain…

The normal block change behavior would change the block immediately the foot pedal was pressed, so the user needs to time their foot press quite carefully near the end of the block. This is quite hard live, so the idea of “delayed block change” : pressing the foot pedal doesn’t change the block immediately, but waits until the end of the current block’s loop point before switching to another block. This means you can press it whenever you like in the bar before the block change is needed.

More complex usage

Of course, it would be nice if the drummer could “fill” just before the block change.

This is done by setting layers to only play when a block change is pending, or mute when a block change is pending. In this setting you would have:

  • Layer 1 : Score mode, Drums, mute if block change is pending. Layer contains the normal pattern
  • Layer 2 : Score mode, Drums, play if block change is pending. Layer contains a fill pattern.

In this case, normally, layer 1 would be playing and layer 2 would be silent. Sending a block change would cause layer 1 - the normal beat - to be silent, and be replaced by layer 2 - a fill pattern. This fill would start occuring at the moment of pressing the block change.

This - of course - would play the same fill whenever block 1 to block 2 occurred, but it is hoped that the randomness associated with when the block change pedal is pressed would add some human randomness to the drum feel.

More human-ness can be added by having the fill layer be using a probability split, so the fill would not always be played the same.

How to setup

First, the TNR has to be told that block changes should be delayed. This is done in the Preference menu, under Block Change Delay. The options are “None”, which means the default behavior of not delaying block change, and then “Layer 1”, “Layer 2”, etc. This is the selection of which layer loop end the block change is pending on.

(This selection is needed because different layers could be running at different speeds with different loop lenghts etc. etc. )

Note that currently only Score/Score256 modes - with defined loop ending points - make sense to be selected here, but no check is made on whether the layer is indeed a score layer.

Secondly, each layer has to be told whether it is always playing (the default), playing only with a pending block change, or muting when there is a pending block change. Since this is a per-layer setting, it is in the layer menu.

Compatibility Issues

None known.


First included in A030

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