DAWs
This page discusses the relative merits of various digital audio workstations (DAWs) from a microtonal perspective. Since many keyboards and a few softsynths are retunable via sysex, and most keyboards and softsynths are only retunable via multiple-MIDI-channels-with-pitch-bends, special focus is given to how each DAW handles channels and sysexes.
Reaper
(Longer list of more reasons why Reaper is great)
- Extremely flexible MIDI and audio routing. No built-in softsynths except ReaSynth. No problems with sysexes or multiple MIDI channels.
- Has several built-in programming languages for extra power. Very easy to write your own MIDI effects.
- The QWERTY keyboard can be used as a MIDI keyboard, like most DAWs. But in Reaper, you can assign any MIDI note to any key. So you aren't stuck with 7 white & 5 black keys. Here's how.
- The appearance of the piano roll on the MIDI editor can be completely customized (e.g., other than 12 notes per octave).
Piano Roll Customization
Click on a MIDI item to pull up the built-in MIDI-editor. The Reaper menu on top should change. For example the 3rd option should change from View to Navigate. In the new menu, go to View and choose Mode: Named Notes. Then double-right-click a note on the far left of the edit window (where the black and white keys were) to rename it. Type in anything. Hit tab to go on to the next key. Then go to File and choose Customize Note Names / Save Note Names To File. That makes a little text file that you can even edit directly. In your next project you can load this file, using Customize Note Names / Load Note Names From File. There's also Customize Note Names / Merge Note Names From File, and Customize Note Names / Clear All Note Names.
You can put in any text. You can put in "5/4", "3:19", "H♯", "I♭", "D^" or "E+" among others. You might even be able to control the font with Reaper themes. To make a black key, you put in a special character. This example uses "█" (Unicode 2588 / "full block") ahead of the actual note name but you could use anything. Just copy-paste that. For other special characters, you may use Character Map on Windows, or refer to this tutorial for Mac.
This example uses underscores to make the note names on the white keys line up with the black key names. An octave was done this way in Reaper. Then the file was saved and TextEdit was used to cut and paste more octaves. The note numbers were edited to run 0-127. If your keyboard has MIDI notes 21-108 (standard 88 keys), you can delete lines 0-20 and 109-127. Then after you load it, choose View / Show/Hide Note Rows / Hide Unnamed Rows. Less to scroll through.
The first two screenshots have long black keys made of six block characters. The last one has short keys of just one block, so you can choose View / Piano Roll Notes / Show Note Names On Notes and directly see which notes are the black key notes.
You could use gray block characters to get three colors or more. Many possibilities! The text files containing the note names used for the screenshots are here: www.TallKite.com/misc_files/19-tonePianoRolls.zip
See also https://www.youtube.com/watch?v=hLO8KqDXhKk
Background colors
Piano roll background can also be customized via dummy tracks: video by User:Userminusone.
Useful Scripts
No doubt some of you are using the workflow of multiple instrument clones on multiple channels that is required for microtonality with certain instruments/methods.
I want to make you aware of two absolutely incredible scripts for workflow, available from the Actions menu.
-Copy and Paste fx functions (various versions including replace) for cloning your VSTi across tracks after a tweak - no more drag cloning one track at a time.
-More significantly, a control synchronizer which automatically maps all plugin controls from your chosen master track to all others. Now you can play the controls on one synth and have all your slaves follow! Installable from ReaPack: X-Raym_Set selected tracks FX parameters values from last focused FX (real-time).lua , NOTE the tracks must share a folder to sync
Logic Pro
- Logic's built-in instruments are of very high quality. There's a global setting for tuning them, and you can also import a .scl file. But they accept only 12-note-octave-repeating scales with max. +/-100 cent deviations from 12tet pitches. Logic only understands .scl files with this limitation. Logic is also incapable of changing the tuning via MIDI or automation, and you can only have one tuning per song.
GarageBand
- won't let you export its MIDI to any other DAW except Logic Pro. In other words it is a "MIDI trap". GarageBand won't load VST effects, only AU effects.
Ableton Live
AL merges all MIDI channels in track sends, effect outputs and max4Live outputs into channel 1, and filters out all sysex messages and all polyphonic aftertouch messages. MIDI effects, except for built-in MIDI effects and max4live MIDI effects, must be put in the audio effects section of the track. Receiving MIDI output from an effect requires creating an additional track and setting its input to that effect.
As per Live 11, MPE is supported, but channels get re-assigned arbitrarily.[1]
FL Studio (until 2003 known as FruityLoops)
FL Studio supports the "note fine pitch" setting on each midi note in the piano roll. If you double click on a note for instance, you can set the fine-tune pitch. This works at least with the plugins provided with FL Studio inside FL Studio, for instance these were confirmed to work at least: Flex, Harmor, Sakura, Direct Wave (this is a sampler so it can get quite practical), GMS, Harmless, Kepler, Kepler Exo, and likely most other similar FL Studio plugins, except the Sampler that is confirmed to not work (at least, Direct Wave works as a sampler, so microtonal sampling can work with that). For external plugins not made by FL Studio, this method doesn't work, therefore using tuning files is the way to go at the moment (and until MIDI 2 is supported and works with microtonal pitching).
How to automate these pitch fine tunings in FL Studio plugins
If you want to modify your piano roll such that it supports microtonal sampling, the way to do it is to Patcherize with Patcher the plugins mentionned at the paragraph above, isolating each 12 midi notes with instances of a VFX Key Mapper plugin, then have each of them be followed by an instance of a VFX Level Scaler. In the VFX level scaler, you can go to the Pitch tab, and apply a pitch fine tune change for each of these isolated notes so that your piano roll maps to these. However one caveat is that the VFX Key Mapper works on only two octaves (4 and 5), therefore to get keys outside this range, you may need to use a VFX Keyboard Splitter. The following YouTube video demonstrate how this can work: https://www.youtube.com/watch?v=fLET8HARsmo
The following limitations of FL Studio and Patcher makes this hard to setup for each scale you want to use, although there are tedious workarounds:
- The VFX Key Mapper only works on two octaves. This makes it super tedious to add new scales, because one must use a workaround.
- The VFX Key Mapper doesn't natively support a microtonal fine pitch adjustement per note, which requires using the VFX Level Scaler.
- Cannot copy and paste a selection of multiple plugins in Patcher - this workaround could have been an easy way to map more octaves on the scale. It could be really helpful to copy and paste multiple VSTs at once in patcher, but this feature doesn't exist because for most use-case the work around of copying a meta instance of Patcher works.
- It would be great if the Piano Roll itself would support more microtonal scales, doing this patcher work behind the scene.
- The VFX Lever Scaler's Key offset is a floating point between 0.0 and 1.0. Therefore to map from cents to increments of this variable, if you know the "cent difference" between your microtonal note and the nearest 12-EDO note you want to use to fine-tune pitch from, you can use this formula: `0.5 + (cent difference / 100 * 0.25 / 12)` to find the value of the offset, that should most of the time be between 0.49 and 0.51. You can use the effect named "Tuner" to validate your pitch is detuned as you wished compared to the original 12-EDO version of the note. It would have been easier to be able to just input the cents difference that wished to be applied rather than have to do this comparative math against the closest 12-EDO note, introducing the need to check changes with the Tuner to ensure proper tuning.
Unsupported Instruments
The way that FL Studio passes these microtonal pitches to their FL Studio plugins isn't supported by the vast majority of other external VST instruments that you may add. For instance, this Patcherized fine-tune pitch method is confirmed to not work at least already with Vital, Spitfire LABS, Kontakt 7, and VeeSeeVSTRack, and wasn't confirmed to work with any other external VST yet. For external VSTs or such instruments, the method is to use tuning files if they support it inside the plugin.
It is expected that the upgrade from MIDI to MIDI 2 may make this process simpler to use in most DAWs, FL Studio would benefit from such an upgrade to better support microtonality.
About sysex messages
FL filters out sysex messages (undocumented, see below).
- all softsynths require only a single instance to be retunable via the pitch bend method!
http://forum.image-line.com/viewtopic.php?p=824112
(official FL Studio forum, must register to view the full thread)
Excerpted from a July 2013 conversation with "Reflex", a site admin:
user: "The Voyager PlugSE (VST plugin) from Moog... doesn't work [in FL studio]."
Reflex: "VST plugins can send sysex out of FL, but can't receive it."
user: "Yes I guess it also receives Sysex, and so a bidirectional communication can't be established."
Reflex: "Then I don't know of any way to make it work in FL."
user: "Is it planned to add support for VST plugin to send Sysex?"
Reflex: "They already can. But they can't receive them. And that's not planned."
Cubase
- has a MIDI insert plug-in for tuning. But it only accepts 12-note-octave-repeating scales with max. +/-100 cent deviations from 12tet pitches. However you can change the tuning in the course of a song, and have multiple tunings simultaneously (on several MIDI channels). However, the plug-in only works with two or three older VSTi's and not with the new, better instruments that come with Cubase 7, so in effect, it has been discontinued.
Cubase has a pitch key tracking setting for all the synths, and if that's set to .50 you get 24 keys per octave, etc., so various EDOs are possible or can be approximated.
Studio One
- doesn't allow recording or playback of sysexes. Apparently Studio One also doesn't allow multi-channel MIDI files. [2]
ProTools
MIDI tracks in ProTools can't contain multiple channels of MIDI data.
Bitwig Studio
Bitwig Studio has native support for per-note microtuning within the piano roll. Each midi note event in the piano roll can be adjusted by +/- 1200 cents. All of Bitwig's built-in synthesizers & samplers support this form of retuning, however it does not affect VST instruments.
Bitwig also has a microtuning midi effect plugin which can adjust incoming midi notes to any desired scale. Again, this uses Bitwig's proprietary retuning messages, so it's only compatible with the built-in synths & samplers.
To use full-keyboard microtuning of VSTs via Scala files or MTS-ESP, there is a way to customize piano roll background using dummy tracks: video by User:Sevish.
Beat DJ by Soniare
- Beat DJ is a colorful microtonal music program tailored for live improvisation and daily use as a digital audio workstation (DAW), with a focus on electronic dance music. It is like a hybrid between DJing and producing.
- It features a command-line interface that allows users to create scales using a `scale` command, supporting equal divisions of the octave (EDO), just intonation (JI), and custom scales. The tonic of the scale is always tuned to the BPM which is often preferable for dance music. These scales can be exported as .scl or .kbm files for use in other software.
- Visually it looks like livecoding software like Tidal Cycles but is much simpler. It heavily uses samples and comes with a large database of free sounds but you can also use your own. It comes with a large collection of synthesized sounds called Generators. You can also write your own C# scripts to generate sounds and visuals.
Approaches to Microtonal Composition in a DAW
Software: Instrument plugins (VST/AU/etc.)
DAWs allow you to load samplers and other instrument plugins, some of which are capable of being microtuned. By using such a plugin, it is possible to make microtonal music within a DAW that otherwise could not have been be made.
Instrument plugins interface with your DAW through one of a handful of standards. Steinberg's VST is a standard supported by many DAWs, AudioUnit (AU) is widely supported on Mac computers and RTAS is used by ProTools. Put simply, you should check your DAW's user manual to see what kind of plugins you can run.
View a list of microtonal software plugins.
Plugin Microtuning Methods
Instrument plugins can be developed by anybody. As such, there is no standard way to set the tuning/scale of a plugin via user input. Navigating these competing methods of inputting microtonal scales can be rather messy. But generally we can group the methods like so:
Plugins which are microtuned by reading a 'tuning file' from hard disk
A very common method. These plugins ask the user to import a file from their hard disk, which we'll call a tuning file. Within the tuning file is the data for tuning the plugin. Such tuning files come in a variety of formats:
- scl/kbm (in this case, the data is stored in 2 files not 1)
- TUN
- MIDI tuning dump (sysex)
You can know which type of tuning file is supported by your plugin by reading its manual or supporting documentation.
Tuning files can be created by using software. The two options are Scala or LMSO. If your plugin supports the scl/kbm format, then you can download a large database (scroll to the bottom of the page) of these files to start with.
Plugins which are microtuned via MTS (MIDI Tuning Standard)
Some plugins can accept MIDI data in the form of SysEx messages. These messages contain the tuning data. The issue with this method, is that many DAWs filter out SysEx messages. However some plugins, such as those created by Xen-Arts, allow the user to load a MIDI file (containing the SysEx messages within) directly into the plugin, thus bypassing the restriction from the DAW. (Such MIDI files can be generated by Scala).
One benefit of using MTS is that tunings can be changed during the course of a piece. This gives much flexibility in tuning for the composer. MIDI Tuning is also highly accurate. Furthermore, the user can send one set of MTS messages to several plugins/hardware synthesizers at once, thereby making the tuning process relatively convenient. However since many DAWs filter out these messages, the real benefit of MTS can not be realized by everybody.
Plugins which are microtuned by user's direct inputting of values
ZynAddSubFX will accept user inputted values. No need to generate a tuning file (though it ZynAddSubFX can also read scl files).
Plugins which are microtuned via other methods
NI Kontakt sports a rich support for microtuning. To access those features, within an instrument go to Script Editor. Under Preset head to Factory / Tuning. For example, the Notes per Octave option automatically (and very brilliantly!) turns the instrument from 12edo to any other equally tempered scale, from right within the sampler! no need to load any Scala files! With live adjusting of the nearest recorded sample for the desired microtuned note, this feature cannot be underrated. Other features exist, just have fun and experiment.
If desired, you may alternatively write a script to retune each note (or use Scala to generate one).
Plugins which have no support for microtuning
One workaround is to use pitch-bend to microtune a monophonic MIDI part. Polyphonic MIDI parts require multiple instances of the plugin.
LMMS
LMMS supports microtuning for any track using the Microtuner, but this is only in the most recent versions. For older versions, microtuning is partially supported, it can be done either by using the built-in microtuning in the ZynAddSubFX plugin or by having multiple detuned tracks.