Tunings

October 29, 2015 — November 18, 2019

algebra
machine learning
machine listening
making things
music

See also dissonance theory etc.

1 Microtunings in practice

Various mainstream apps support microtuning. Notably, Warren Burt demonstrates Microtuning in Kontakt. Bitwig is trialling microtuning support.

2 Scala

Scala (No, not the JVM language, the Ada-based musical tuning software) is a strange creature, written by another strange creature, Manuel op de Coul. He also maintains a comprehensive tuning bibliography.

A crazy-weird wonderful, painful ghetto of theoretical tuning. The author is as brilliant as he is troublesome, and you must pay for the delicious tuning knowledge in this software by navigating the labyrinth he built around it.

The software has many brilliant but abstruse features, few of which repay the time investment, because you have no time left after the lengthy battle with the installation process. However, the database of scales and the easy conversion between different tuning formats is awesome, and pretty simple once you have got the damn thing running.

2.1 Scala Installation

tl;dr The Scala software is a horrible mess, and maintained by one lone crazy guy with firmly idiosyncratic opinions about software. Unless your needs are particular, I’d recommend downloading the library of tunings only and using music21 or supercollider to play those tunings without wasting time on installing this peculiar and fragile setup.

Otherwise…

Recommended: install on a Linux VM.

Everything else requires too much dicking around with the author’s brazenly inconvenient, outdated and opinionated installation system, which requires you to install things in places you’d rather not, using versions you’d rather not.

The damn thing is written in Ada, which is famously used by the International Space Station and the Paris metro, but those folks are too busy to offer you any tech support. Suck it up, find a way of minimising the nonsense.

On a gtk-friendly Ubuntu, for example:

sudo apt install dkms # Virtual machine helpers
sudo apt install aconnectgui gnuplot libgnat-4.9 playmidi timidity \
    timidity-interfaces-extras
wget http://www.huygens-fokker.org/software/scala-22-pc64-linux.tar.bz2 \
    http://www.huygens-fokker.org/docs/scales.zip

That didn’t quite work for me; I had to install ALL of GNU Ada:

sudo apt install gnat

…which is 200MB of wasted disk space. There’s probably a smaller subset that is necessary, but, seriously now, snore.

MIDI might be tricky, but is desirable.

2.1.1 short version that might not work

short story:

sudo apt install timidity timidity-interfaces-extra
(printf '[Desktop Entry]\nEncoding=UTF-8\nName=Timidity MIDI Player\nComment=Play MIDI audio files\nExec=timidity -ig\nTerminal=false\nType=Application\nStartupNotif y=false\nMimeType=audio/midi;\nCategories=Application;AudioVideo;\n#Icon=? ??\n#NoDisplay=true\n') | sudo tee /usr/share/applications/timidity.desktop
sudo cp /usr/share/applications/defaults.list /usr/share/applications/defaults.list.backup.midi
if ! cat /usr/share/applications/defaults.list | grep “audio/midi”; then (printf 'audio/midi=timidity.desktop\n') | sudo tee -a /usr/share/applications/defaults.list; else sudo sed -i -e’s@audio/midi.*$@audio/midi=timidity.desktop@g' /usr/share/applications/defaults.list; fi;
wget -c -O /tmp/timidity-patches-eaw http://www.fbriere.net/debian/dists/…iere.1_all.deb
sudo dpkg -i /tmp/timidity-patches-eaw.deb
sudo sed -i.backup -e’s@source /etc/timidity/freepats.cfg@source /usr/share/doc/timidity-patches-eaw/examples/timidity.cfg@g' /etc/timidity/timidity.cfg
sudo modprobe snd-seq-device
sudo modprobe snd-seq-midi
sudo modprobe snd-seq-oss
sudo modprobe snd-seq-midi-event
sudo modprobe snd-seq
timidity -iA -B2,8 -Os1l -s 44100
(printf 'snd-seq-device\nsnd-seq-midi\nsnd-seq-oss\nsnd-seq-midi-event\nsnd-seq\n') | sudo tee -a /etc/modules
sudo sed -i -e’s@#TIM_ALSASEQ=true@TIM_ALSASEQ=true@g' /etc/default/timidity

2.1.2 Long story that also might not work

long story, or How to get sound out of scala in Ubuntu:

Are you using a recent version of Ubuntu (or some other Linux distribution, but for those the instructions might need to be tweaked)? Are you using Scala but the Chromatic Clavier doesn’t work? Here’s what you need to do:

  • Open up a terminal and run sudo modprobe snd-virmidi. To make this happen automatically when you boot up, add snd-virmidi as a new line to the file /etc/modules (otherwise you’ll need to run modprobe snd-virmidi every time).

  • In Scala, go to Chromatic Clavier and then go to Sound Settings. Because of the first step, there should now be some choices available for MIDI Output Device. Pick the one with a 0 in the name (something like /dev/snd/midiC1D0).

  • In your favourite MIDI connection manager (I use aconnectgui), the MIDI output from Scala will now be available as Virtual Raw MIDI 1-0 or VirMIDI 1-0. You can now connect that to a softsynth or hardware MIDI device of your choice. Have fun with the Chromatic Clavier!

The reason this is necessary, I think, is that Scala uses a legacy “raw” MIDI interface from the days when everyone had MIDI synthesisers (with crappy-sounding soundfonts) on their soundcards, and programs used to access those directly. The snd-virmidi kernel module creates a “virtual” MIDI-enabled soundcard that’s really just a way to get Scala’s MIDI output to appear as a normal MIDI output port.

Actually, even after doing all that I couldn’t make MIDI output work. I don’t care any more. Download the data sets and use them how you want but don’t depend upon this.

2.2 Does it work? now do stuff

Quickstart.