Sevish Music

You are browsing the synthesis tag

Microtonal chiptune music with One-SF2 VST

Sonic the HedgehogI grew up as a gamer. Luckily my aunt was into games too, so I got the chance to play oldschool systems from before my time such as the Atari 2600 and the NES. All of this cemented my interest in electronic music from a young age. (For what it’s worth, my ongoing fascination with drum & bass probably came by playing Rage Racer on the Sony Playstation).

Some years ago, fueled by the nostalgia of umpteen million nerds, the chiptune music genre took off and is still going strong today. For some, the only way to make this music happen is to record from the original hardware itself. For others, it’s good enough to cheat and use VSTs which recreate the sound. Today I want to share one method of writing microtonal chiptune music using a VST called One-SF2.

OneSF2 - SNES Secret of Mana gamelan tuned to slendroOne-SF2 is a free soundfont player VST for Windows, and it has microtuning features baked right into it. Actually, it supports the MIDI tuning standard, so it can load all of the crazy scales I’ve been collecting in my tuning packs.

  1. Download One-SF2 and extract it to your VST folder. It’s about 30MB because it comes with a bank of sounds.
  2. Download the top soundfont “Famicom” from this collection. The Famicom soundfont contains many sounds recorded from the NES. Save it to your One-SF2 folder.
  3. Load up One-SF2 in your DAW!
  4. Let’s get a nice NES synth sound first. Look for a button that says “SF2” and click it. Now you can load the Famicom soundfont downloaded earlier.
  5. This soundfont contains multiple instruments. Find “SF2 Patch Name” and click the left and right arrow icons to scroll through the available sounds. I quite like #2 “Square Wave 25%”
  6. Switch the synth to mono mode. Now when you play a melody, it will sound more like the actual hardware and less like a polysynth. To do this, find the menu labelled “Control Edit”. Select “MIDI” from the list. Now you will be able to find an option called “Mono Mode”, turn this on.
  7. Here’s the key step, let’s make it microtonal! Find the button that says “MTS”. Clicking this will let you load a scale file.
  8. Write some dope xenharmonic chiptunes.

Remember the NES only had 5 sound channels. 2 are pulse/square channels, 1 is triangle, 1 is noise, and the last was used for low-quality digital sampling. You could recreate this capability by using 4 instances of One-SF2 (each using the Famicom soundfont), plus one audio channel with a bitcrusher effect. Read the technical specifications of the Famicom/NES sound chip if you want to strive for the most realistic result.

Here’s some xen chiptune drum & bass I cooked up a few years ago, in a game boy style.

Now, if only someone would make a version of Clotho from Columns tuned to a beautiful meantone, I could die a happy man…


Where to find more video game soundfonts

Here’s a collection of soundfonts from various game systems.
And here’s a mother lode of soundfonts ripped from SNES games.


Alternative pathways to microtonal chiptune music

Plogue Chipsounds supports Scala tuning files, emulates several oldschool chips, and opens the door to microtonal chiptune on Mac OS X and Windows (32/64-bit). Costs about 95 USD (as of early 2017).

Plogue Sforzando is a free and simple soundfont player much like One-SF2, but it works with the SFZ file format instead.

Pick up a second-hand console system and do it the old fashioned way, with tracker software and a soldering iron. Some trackers support microtones natively!

One-SF2 has a big brother, XenFont. This free, 32-bit Win-only VST adds heaps of synthesis functions on top of the basic soundfont player. A plethora of options exist for creating deep sound designs, so my own work always features XenFont instead of One-SF2.

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.



  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.