Sevish

You are browsing the Synth Geekery category


A look inside Dolores Catherino’s creative space

I’ve been following Dolores Catherino’s beautiful microtonal music for quite a while and it’s fascinating to get a look into her musical space. Everybody has a different approach to microtonality and hers is certainly different to mine. There are some very cool pieces of kit on display, like the Starr Labs Microzone U-648, H-Pi Tonal Plexus, Haken Continuum Fingerboard, and ROLI Seaboard.

This video also serves as a very inspiring introduction to why one would start using microtonal scales to push music into the future.

She also mentions that we could extend frequencies up above and beyond the range of human hearing (i.e. above 20kHz) with future advancements in sample rate fidelity and loudspeaker design. While it remains to be seen if this would have an effect on our perception of the music, it’s very interesting food for thought.

Sevish in the studio, live stream starts in 12 hours

Just for fun I’ll will be live streaming my next music making session. Tune in here:
http://www.twitch.tv/sevishmusic/
Sunday 2:30am UTC

There will be live chat so we can discuss approaches to microtonal composition, sound design, audio engineering etc. Just follow the link to start watching. You’ll need to sign up for a free Twitch.tv account to get on the chat, and I hope you’ll do that so I can have some company while making noises.

I’ll be working on some new stuff, and maybe also creating some synth sound designs to be used later. I’m happy to load up the songs from Rhythm and Xen if you want to see how they were made. Never tried anything like this before so let’s do something new!

Microtonal equal temperaments on a Max/MSP synth using expr

The mtof object can take a MIDI note number and output the frequency of that note in standard 12-tone equal temperament tuning (aka 12-EDO). But what if you want to get away from this musical dogma? How about we start to explore say 13-EDO, 7-EDO, 24-EDO, or 41-EDO with Max/MSP?

Equal temperament on Wikipedia
Equal temperament on the Xenharmonic Wiki

Some years ago I wrote an expression that could quickly be dropped into any Max/MSP synth and then play microtonal equal temperaments. It’s a more generalised version of mtof and I want to share that with you today. It’s an mtof-killer!

mtof and expr

First let’s take a quick look inside the mtof object and see how it works. Really, mtof just performs one simple expression.

mtof-as-an-exprThe mtof object on the left always gives the exact same result as the expr on the right. Got it?

A replacement expr for microtonal equal temperaments

Here is my mtof-killer expression in all its beasthood:

An expression to replace mtof in microtonal settings

Nasty, right?

Copy and paste this code into Max/MSP and continue along with this tutorial.

----------begin_max5_patcher----------
882.3ocyXE0aaBCD94To9evh0GZlxRwfwD1aapaR8gsIsWampHfSp6.Cy3zl
1p0e6yXGRnYg.AkRSdvN9riuu6ymu6bd53i5YLNYNIy.7Qvkfd8dRJomRVtj
dEB5YD6OOHxOSsPCF49jw2ZLXwbBxbgRtfSedozjYhHhP7PJQu4FYzoL+HCv
uJVwjDlf4Gql23SbpbxhongJgRs7AK7RorYwTlbSUnvtPZpuH3FJa50bRfPq
KanyPyA.aSq7NDNu0xbn4JcK2JM.U6ErLjxnOpfDT9iUh+6wGk2K6FzXJZpO
kUOWL.XPYhRTRY6FsY61pA1sMJuCpGYgp1vKsYb4Igfvulv7GGovY6sdxig9
AOuwSSq1aUiTmiHmh1pLp1i6IQIxsp5iM479h7Ssw9ro6tmLby1Nrda2xEl2
4XVmm71OP26t4RkOlvqlvx8t+e5RZ6zXIOuNjpmBg0QgRzUr0PK2sPrXOUrA
3H6WShckbdruRynCTmSuc22zAiGZK+3hd04wCTRyc2IMDxbHV9wBujzrcOvH
semEQCav05Wl6JkSxHLguflvJYvJOBScZIU.bG6xFZI1zo0oFbvUt+cR9tfj
3XRNmrdEQ+jLgvIr.B3aWb9EfumHHua4phnLRPxLl3EHaBe5XEZFtkXifOmD
EtIOR6Z7HyQ1syxDzIz.0IUc9qXWOUbRzn7N8.6sTQw92arAj6W4j+LS9sGd
U4Vq8M253fVE.8.jf+x4+vX+PcsnxGjq6tGnrCImN5B8nQsnnQKUfPnKZnir
T42.WppdgHYdJGb5ISrAmARStGbpt05pqFHKv8rSlX0W90Snn98Aueqq.1u5
zSaMOdkLMthXmnFTdNTUdts2avKMS8YjUEmLdZPRTBe8TuEMdlPO7FS9Bwsv
OyT+NS88RDVwEPSul+zL85TWbV++fPou7IVy3yRlwCJNoKdnLnjFCIxPvrkA
fub0COKupanggD1K79CoY4kBDVSs.MFX4NTM.XvNGX6.iA2JvhogoIxp.yJh
6nB3X6piVKeLPwnR5ZeaK3FYKntmjgMBX3NGXvFALkyqcmBLuFiKqNEWtMFW
vNEWNMFWls3VLbQNsRiZ1s3Ewz8SSuivyVfFsUHybcqN4DdfdLkoGqSyXvI2
QK9I5+fWCetLsiPlyYFWmEe9HrgbFkBkM+yHSxvn
-----------end_max5_patcher-----------

How to use it

The ‘EDO’ value sets what equal tempered tuning you want. So a setting of 5 gives you 5-EDO, a setting of 34 gives you 34-EDO.

‘Reference Frequency’ is the standard pitch for the scale. Usually in Western music A = 440 Hz. You can also use 432 Hz if you believe in crystal healing and reptilian world leaders.

‘Reference MIDI Note#’ is the MIDI note to be tuned to the reference frequency (above). This could be MIDI note 69 if you want to tune to middle A, or MIDI note 60 if you want to tune to middle C.

For starters, try 5 for the EDO value, 440 Hz for the reference frequency and 69 for the reference MIDI note number. Have a play on the keyboard. It’s a cool sounding pentatonic scale, right?

Why this works

If you played with my example patch and got it working, then you don’t need to read this section. Just start using it in your projects and have fun exploring equal temperaments.

But if you absolutely must know how this magic is done, then keep reading! (Warning: I will assume that you already understand how to make expressions with the expr object).

Let’s look back at the original mtof expression, try to understand it, and then try to generalise it.

Output frequency = 8.175797 * pow(1.0594633,$f1)

Note that pow(a,b) is just the expr object’s way of saying a^b.

8.175797 is the frequency (in Hz) for MIDI note 0.
$f1 is the MIDI note number being played.
1.0594633 is the size of the smallest step size in 12-EDO. It is the value of a semitone.

Therefore an mtof object has this general structure:

Output frequency = Frequency of MIDI note 0 * pow(step size,MIDI note number)

Let’s start by swapping the step size of 1.0594633 with the step size from any n-EDO we want. But how do we calculate the step size? For n-EDO, it’s calculated like this:

step size of n-EDO = pow(2,1.0/n)

So let’s bring that into our in-progress generalised mtof:

Output frequency = Frequency of MIDI note 0 * pow( pow(2,1.0/n),MIDI note number )

That’s great, but unless you want MIDI note 0 to always be equal to 8.175797 Hz, how will we go about tuning our scale up to some standard pitch? Well first we need to know what our standard pitch is (aka reference frequency) and we also need to know what MIDI note number to assign that reference frequency to. Once we know these, we work backwards to find the frequency at MIDI note 0.

If our reference MIDI note number is higher than 0, then the frequency at MIDI note 0 will always be lower than the frequency at the reference MIDI note number. In fact:

Frequency at MIDI note 0 = reference frequency / pow(step size,reference MIDI note number)

We can re-use the step size calculation from before and insert it into the above calculation for MIDI note 0 frequency:

Frequency at MIDI note 0 = reference frequency / pow( pow(2,1.0/n),reference MIDI note number )

Above, we’ve just found a way to calculate the frequency at MIDI note 0 for any reference frequency assigned to any MIDI note number for any EDO of size n. That’s the entire left side of the mtof-killer worked out. So let’s bring alllll of this together:

Output frequency = Frequency of MIDI note 0 * pow(step size,MIDI note number)
                 = (reference frequency / pow( pow(2,1.0/n),reference MIDI note number )) * pow( pow(2,1.0/n),MIDI note number )

And finally we replace these English-language variables with integers and floats in expr format, such that:

$i1 = MIDI note number from the keyboard
$f2 = n-EDO
$f3 = reference frequency
$f4 = reference MIDI number

($f3 / pow ( pow (2,1.0/$f2),$i4)) * pow ( pow (2,1.0/$f2),$i1)

Well done if you kept up! I hope that explains how this expression alone can allow you to play microtonal equal tempered tunings in your Max/MSP projects.

UPDATE: Homebrewed methods like my one above are often inefficient. A commenter Toby noted:

This does the same thing in a simpler way:

expr $f3 * pow(2,($f1-$f4)/$f2)

If you need more power than this, for example you wish to create scales with arbitrary and variable step sizes, or you wish to play just intonation scales, then you should read How to play microtonal scales on a Max/MSP synth.

Sevish - Rhythm and Xen (Front cover)My recent album Rhythm and Xen uses many microtonal tunings. Give it a spin and see how all of this theory can be used to make accessible music with new moods.

Thanks for listening.

Instruments and FX used in Rhythm and Xen

It goes without saying (actually maybe it doesn’t) that if you want to make microtonal music, you need to have the right tools. For my album Rhythm and Xen I found the perfect set of tools that worked for me to get the sound that I wanted. And all while bending notes like a madman.

Stream and download Rhythm and Xen

First the machine: I produced half the tracks on a home-built desktop computer running Windows 7. The other half were produced on an Acer laptop running Windows 8. That should tell you there’s no need to get fancy and expensive, just grab a computer made within the last 5 years and start writing.

My DAW of choice is Ableton Live 9. I used to be an FL Studio user – a really common phrase for my generation – but when I picked up Ableton Live I preferred the workflow and the base functionality. There was no looking back.

As for the default synths that come with Live, throw ‘em out. They can’t be microtuned, so they’re only good for making music that everybody else makes.

For me, the key to making microtonal music in a DAW is to find some microtunable VSTs that you like the sound of. So here are the 5 VSTs I used in Rhythm and Xen:

U-He ACE

I love the sound design potential of this synth, and the VA waveforms sound nice for a digital synth.

Xen-Arts FMTS 2

FM synthesis built from the ground up to get spectrally microtuned sideband partials… what’s not to like? And if you have no idea what I’m talking about, it’s just a good FM synth. :)

Xen-Arts IVOR

Virtual analog with some weird characteristics, quirky yet bold.

Xen-Arts XenFont

It’s a SoundFont player. When you’re craving some 12-bit sounds.

Garritan Personal Orchestra 4

An affordable orchestral sound bank, nuff said. Sadly, the more I work with GPO4, the more I can recognise it from a mile off. So now that Rhythm and Xen is complete I’m gonna retire this one.

As far as VST instruments go, these 5 were all I needed. Although, I did create a couple of my own sound generators in Max/MSP to fulfil other needs. But if you’ve seen my downloadable music resources then you already know what those are.

FX and others

FX wise, I just love the collection from Variety of Sound. NastyDLA is all over this record, and I used some of their bus compressors in mastering. These plugins are amazing and free!

Oli Larkin’s Endless Series v3 is a really unique effect which can generate Shepard tones, endlessly rising tones. But the killer bit is, it can do endlessly rising or descending phaser and flanger effects too. You can create a sense of urgency doing this (great risers), or else just come up with some cool sound designs.

Sevish - Rhythm and Xen (Front cover)In the liner notes for Rhythm and Xen there a track-by-track breakdown of what instruments and compositional techniques were used. Some geeks just gotta know.

Download the album: https://sevish.bandcamp.com/album/rhythm-and-xen

How to play microtonal scales on a Max/MSP synth

Those of you who have built synths in Max/MSP or Max 4 Live will have used the mtof (MIDI-to-frequency) object. This clever little object waits for you to send it a MIDI note number (0-127), then it spits out a frequency (Hz). Perfect if you’re working within the confines of 12-tone equal temperament—or rather limiting if you wish to use all kinds of expressive intonation systems outside of the Western common practice.

A simple sine wave generator using mtof: MIDI to frequency

There is a very simple way to get microtonal scales out of your Max/MSP synths. We simply replace the mtof object with coll.

The coll object

 

What is the coll object, anyway?

Coll can be used to store and edit collections of data. The data is stored in a text file. Each item of data contains an index followed by some content. For example, we could use coll to remember the release years for various killer synths.

Example of coll's use

Above, the coll object is waiting to receive an index (either YamahaDX7 or Theremin) before it spits out the data we want. I just clicked the “YamahaDX7” button, so “1983” was sent via the first outlet of coll.

To see and edit all the data inside the coll, just double-click on the coll object. It will bring up the data entry window. Here’s what’s inside the above coll object:

OndesMartenot, 1928;
RolandTB-303, 1982;
Theremin, 1920;
YamahaDX7, 1983;

Neat trick. Mind you it’s not very useful for our goal of exploring crazy scales.

Here’s how we can use coll as a replacement for mtof. First we need to understand our data structure. We send a MIDI note number (0-127) to the coll object. We want coll to spit out a frequency in Hz. So we double click coll, and we start inputting data for what frequency corresponds to what MIDI note number.

# Lines that start with a # symbol are comments.
# This is a simple scale which starts at 100 Hz on MIDI note 0.
0, 100.0;
1, 200.0;
2, 300.0;
3, 400.0;
4, 500.0;
5, 600.0;
6, 700.0;

...

127, 12800.0;

(Interesting note: This scale is a harmonic series with a fundamental of 100Hz. Kinda trippy if you’ve never heard this kind of scale before, so try it out).

To test this out, let’s send the number 0 to the coll. This is the lowest possible MIDI note number, and according to our data we should receive the float value 100.0 from coll’s first outlet.

Testing the coll object

A success! It’s pretty simple to get it to work, but the only problem is that the tuning data took us a looooong time to type… 128 lines in total! Luckily coll can read .txt files, and there is a much better way to generate tuning data in this format. For this tutorial, we’ll be using Scala tuning software to create .txt files that coll can read.

 

First create or load some tuning data into Scala. (For now we’ll just load a file from Scala’s huge database)

Loading a scala file from the huge Scala database

Then type the following command into Scala:

set synth 135

Scala will say “Synthesizer 135: Max/MSP coll data, via text file”. You’re doing just great.

Now click File → Export synth tuning as shown below.

How to export a .tun file from Scala

This will bring up a familiar save file dialog, and you can save your .txt file anywhere. Once your .txt file is saved somewhere convenient, your can load it into your coll object.

Create a message button which contains the word “read”. Connect this up to the coll object (as shown below). You can click the “read” button to bring up an open file dialog. Use this to load the file you just exported from Scala.

Load .txt file into coll but using a message box titled "read"

Once you’ve loaded the .txt file into coll, you can check that the data went in correctly by double-clicking the coll object.

# Tuning file for Max/MSP coll objects created by Scala
#
# Sean "Sevish" Archibald's "Trapped in a Cycle" JI scale
0, 8.1757989;
1, 8.4312926;
2, 9.1977738;
3, 9.5384321;
4, 10.2197486;
5, 10.7307361;
6, 11.2417235;
7, 12.2636984;

...

Congrats, you’ve just replaced the mtof object with your very own, microtunable coll! Enjoy playing microtonal scales in Max/MSP.

Big up to Manuel Op de Coul, the creator of Scala, who added support for Max/MSP coll files on my request. Much appreciation that his project is still being maintained.

 

Exercises

  1. Recreate my sine tone generator above, using coll.
  2. Download and install Scala, then get to grips with creating your own scales.
  3. Max 4 Live users—download my device Boom. Look at the source and see how I used coll to load tuning data.
  4. Make your own simple synth and have a jam in 5-EDO.
  5. The mtof object will accept float values in its input. Find a way to abuse this feature to microtune Max/MSP without using coll at all.

Synth plugins for playing and composing microtonal music

This article has been updated in 2023 to tell you more ways to make microtonal music with software synthesisers.

Many software plugins (VST, AU, RTAS etc.) allow you flexible control over intonation, which can be used to create music with any tuning system you like. There is no one single method, so depending on your synth, you’ll be able to get at those microtones with one or more of the following:

  • Synth that supports reading in a ‘tuning file’ from the hard disk. (Usually a .tun or .scl file).
  • Synth that supports MTS-ESP. (To be used with an MTS-ESP master plugin, more on that later).
  • Synth that supports MPE (MIDI Polyphonic Expression), which means each note can have pitch bend applied independently of other playing notes.
  • Synth that understands received MTS (MIDI Tuning Standard) data as MIDI SysEx messages.
  • Synth that allows direct data input into the synth interface.

Plugins that don’t support any of the above may still be tuned by systematically using the pitch bend, however this only works for monophonic parts (unless you use multiple instances of the same plugin).

To find out how your synth can be microtuned, look it up in this table of microtunable software plugins. From there you’ll also find a few free VST downloads to experiment with.

Using tuning files: .tun .scl and others

If your softsynth loads .tun files (AnaMark, Linplug instruments, Omnisphere, etc.) then check out my tutorial on how to create a .tun file using Scala.

If you’re using something like Surge XT, PianoTeq, ZynAddSubFX, Plogue chipsounds or Garritan Personal Orchestra 4 (amongst others), these synths can load .scl files. It’s simple to find this kind of file for download on the internet, and they are easily created using Scale Workshop.

Using MTS-ESP

Synths that support MTS-ESP will need an MTS-ESP master plugin to control the tuning. Some examples of MTS-ESP master plugins:

  • MTS-ESP Suite
  • Entonal Studio
  • Infinitone DMT
  • There are various others

Using MIDI Tuning Standard (MTS)

The MTS never really took off in the same way that MTS-ESP and MPE is taking off in recent years. In my experience, a lot of the MTS-capable synths are hardware and not software.

Synths such as Xen-Arts’ instruments can be tuned by using MIDI tuning messages. Such data can be generated by software like Scala, alt-tuner, CSE or LMSO. Then, the data is either sent to the synth in real-time or dumped into a file to be read later.

One approach is to include the MIDI tuning messages in a MIDI track within your DAW. The MIDI track should output to all tracks which contain an instance of the synth. This approach works well in a DAW like Reaper, which has powerful routing. Unfortunately this approach won’t work in Ableton Live or FL Studio, because these DAWs filter out all SysEX data, thereby stopping your synth from receiving the MIDI tuning messages.

How to import MIDI tuning data into Xen-Arts' IVORAnother approach is to create a MIDI tuning dump. This is a .mid file containing only MIDI tuning messages. Some synths, such as XenFont, IVOR, and Xen-FMTS 2, conveniently import this kind of file. The tuning dump can also be created using Scala.

[Note: Xen-Arts synths are no longer available]

Synths that support direct note input

Direct note input is not a common feature of synths, but there are a few:

  • Surge XT
  • Pianoteq
  • ZynAddSubFX

TLDR: just tell me the best free microtonal synth I should use

Surge XT

Further reading

How to create a .tun file in Scala

Just a quick microtuning tutorial. Are you using a synthesizer instrument which loads the TUN (.tun) tuning file format? Let’s learn how to create one of these .tun files using Scala.

Before you start, make sure you’re using a synthesiser that supports .tun files.

 

Step One – Create new scale, or load existing scale into Scala.

You could load a file from Scala’s huge scale database, or you could generate new pitches by typing a command into the command bar (at the bottom of the window). For example let’s create a 13 note equal scale (13-EDO):

equal 13

Tip: Type “show” to display your the tuning in the main window.

show

 

Step Two – Tell Scala what type of file to export.

Type the following into the command bar:

set synth 112

Scala will output “Synthesizer 112: TUN standard .tun format for many softsynths, via text file”. You’re doing OK.

 

Step Three – Export

Go to File > Export synth tuning. Or press Shift+Ctrl+T instead. Choose a new location to save the file. All done!

How to export a .tun file from Scala

This is very similar to the process of making a MIDI Tuning Standard (MTS) tuning dump. To make an MTS .mid file, use “set synth 107” instead.

Jam away!