All plugins

Midi · MIDI effect

Retune

Retunes any MIDI note stream to a Scala .scl scale using one pitch bend and one channel per note, so ordinary generators can drive microtonal synths.

Bundle
retune.vst3
Role
Scala microtuning
Retune plugin interface

Idea from Subsequence — a Python generative sequencer that supports microtonal output from Scala files and N-TET via per-note pitch bend. Retune applies the same approach to any Downspout generator. The code is original.

Opinion

Not yet auditioned in a host. The approach is the standard MPE-style one, so it will only help with synths that follow pitch bend per channel.

Functionality

Load a Scala .scl file (cents and ratio lines are both accepted) and set the root note, which plays the scale’s 1/1. Each incoming note is mapped through the scale, rounded to the nearest 12-tone key, and sent on its own output channel (2 to 16) after a pitch bend that corrects the difference. The scale map shows one period with the 12-tone keys above the scale degrees. Set the receiving synth’s pitch bend range to match Bend range (default 2 semitones).

Control change and program change are sent to every output channel, so sustain, mod wheel and volume still work. Polyphonic aftertouch follows its note. Incoming pitch bend and channel aftertouch are dropped, because they would undo the tuning. When fifteen notes are held, the oldest is stolen. With no file loaded the plugin plays 12-tone equal temperament, which leaves notes unchanged apart from the channel move.

Example scales ship in plugins/retune/scales/: Slendro as five equal steps, a Pelog-like seven-note scale, Bohlen-Pierce, 19, 24 and 31-EDO, 5-limit just major, Pythagorean, quarter-comma meantone and harmonics 8-16. The two gamelan files are idealised illustrations, because real slendro and pelog tunings differ from one ensemble to the next; for an authentic tuning load a measured .scl, for example from the Scala archive.

Status

Core and wrapper are covered by deterministic tests; the keyboard mapping (.kbm) file is not supported, and the scale file path rather than its contents is saved with the session.