(Limited) User sample pitch shift

This function doesn’t allow arbitrary pitch shifting of user samples, but does open up some of the TNR’s base capability.

The stock TNR can load 48 short user samples, in 3 banks of 16. One of the most requested features is the ability to change the pitch of these samples dynamically, on board. Until recently, I thought this was completely impossible due to the limitations of the underlying tone generator - the Yamaha SWL01.

However, I have recently learnt that it has been an open secret from the early days of the TNR that directing MIDI note-on messages into layers with user samples could result in pitch-shifted samples being played, so the SWL01 does have the underlying capability to do this, with several (OK, lots of) limitations.

When a layer instrument is one of the three User Sample banks, then the layer scale is internally forced to be chromatic. Additionally, transpose and octave shifts are ignored for this layer. Consequently, the lowest user sample is locked to MIDI note 60 (C3), the next one to note 61 (C#3), etc., up to 75 (Eb4). So, receiving a MIDI note 60 - either from a LED on screen, or from an external device - will play the first sample, MIDI note 61 will play the second sample, etc. whatever the samples are. This is an important point - if the user bank of samples consists of 16 samples which are tonal, pitched according to the chromatic scale, starting on C, then playing these samples will sound as you might expect.

Samples in score mode

So what happens if a note outside the MIDI range 60-75, for example, 76, is played? Of course, you can’t generate this on-board from the stock TNR due to the restriction on octave and tranpose shifts, but you can play it in from an external MIDI keyboard. What happens is best understood with an example where the user samples loaded are tonal and chromatic, because the TNR assumes this is the case. An incoming MIDI note 76 (E5)) takes the “bottom” sample - assumed to be C4 - and pitch shifts it up 16 semitones (frequency x ~2.5), resulting in an audible E5 as expected. I have tried to show this in the diagram below.

Effect of off-grid notes

In fact, this isn’t really applying modern pitch shifting; it is simply playing the sample back at x2.5 speed, so the duration is shorter.

A similar thing happens if a note with MIDI note number lower than 60. For example, MIDI note 59 (B4) takes the top sample - the one in the top slot, notionally corresponding to an Eb5, and pitch shifts it down by 16 semitones.

This whole thing is a bit jarring, since the note pitch shifted is 16 semitones away, and not the closer one at 1 semitone away, so samples with a change in timbre across the range will sound strange.

To extend the TNR functionality, therefore, I have removed the octave and tranpose “lock” on playing user samples in release A023 onwards. So if the user sample set is chromatic, then the set will be shifted correctly to match. For example, playing the layer with +1 octave gives the following:

Effect of +1 octave

What happens for non-tonal sample sets? (e.g. voice recordings). Well, playing notes outside the 60-75 range will cause pitch shifting to occur, in fixed chunks of 16 semitones - i.e. no finer subdivision of the pitch is performed. This can be quite a nice effect for some samples (especially if you like voices sounding like chipmunks).

Octave shifts are set per-layer, so the user can decide to raise the octave, or not, for this layer only. However tranpose is a master effect and applied to all layers. This can be undesirable - for example, if the user sample represents a drum set, and a master tranpose is applied in order for a song to follow a harmonic progression, then the allocation to drum samples will change - the nice kick drum rhythm suddenly appears on the cowbell, for example. With this in mind, release A023 also adds a per-layer attribute in which the layers response to transpose can be turned off (for drum set user samples) or left on (the default, for tonal samples).

This feature is under the layer menu:

A couple more points:

  1. The user samples are loaded assuming a chromatic scale starting on C. With the unlocking of the octave and transpose, the layer scale setting is also unlocked. If the layer scale is not set to chromatic, then some samples will never be heard without pitch shifting.

Effect of Ionian scale

  1. The user manual states that the base scale used for user samples is Ionian, starting on C. It isn’t; it’s chromatic starting on C.

  2. I would love to open up the SWL01 CPU more to see if this 16-semitone shift limitation can be removed, but I have no documentation on the SWL01. If anybody has an application manual, or anything similar, they could share, I would be very grateful.

Compatibility Issues

Some songs/blocks loaded from previous release may have their layer transpose set to OFF rather than the default ON.


First included in A023.

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