Skip to content

Instantly share code, notes, and snippets.

@lvm
Last active February 23, 2016 05:35
Show Gist options
  • Save lvm/ea1cb3cd71b0912417d8 to your computer and use it in GitHub Desktop.
Save lvm/ea1cb3cd71b0912417d8 to your computer and use it in GitHub Desktop.
tidal meets fluidsynth
note: this is a draft. there are a couple of screenshot missing.

After seeing that in OS X it's possible to use SimpleSynth, I got curious and wanted to know if the same was possibly in GNU/Linux, turns up: Yes, it's very possible; no more LMMS to play melodies (great piece of software but beats the purpose of coding music).
In a Debian based distro, the packages needed are:

  • qjackctl or patchage or aconnect (qjackctl and patchage are graphical tools but the three of them are good for the job)
  • vmpk
  • qsynth
  • fluidsynth
  • fluid-soundfont-gm

First things first: vmpk is a "Virtual MIDI Piano Keyboard" which we will use to play hooked to qsynth which is a graphical interface for fluidsynth which allows us to play instruments using SoundFonts (we'll use fluid-soundfont-gm for that) by sending MIDI notes. Now, to set up Tidal to work with these applications.
The changes needed for tidal.el are pretty similar as if we're using any other synthesizer. In this config, I'm going to set up three instruments, one on each channel:

  (tidal-send-string "import Sound.Tidal.MIDI.Output")
  (tidal-send-string "import Sound.Tidal.MIDI.Control")
  (tidal-send-string "import Sound.Tidal.SimpleSynth")
  (tidal-send-string "[m1,m2,m3] <- (midiproxy 1 \"Midi Through Port-0\" [(keys, 1), (keys, 2), (keys, 3)] >>= sequence)")

Once we have this in our tidal.el file, we should set up the rest of the applications.
First, on qsynth we should config the the audio backend and soundfont to use. In this particular case I'm using pulseaudio because I didn't wanted to use jackd, although if you want to do some real work jackd is the best option.

Notice that in "MIDI Client ID Name" the correct value (again, for pulseaudio) is the engine's name.

Audio driver is pulseaudio. If your computer is oldie, try lowering the value in "Polyphony", 64 or 48 should be more than enough.

Then select the SF2 to use; in this case Fluid_R3.

Then on vmpk we select the MIDI channel (in this screenshot I'm using channel 4 because of my configs, but you should get the idea).

Well, now to connect all:
I prefer qjackctl but again, it's possible to use patchage or even aconnect.

Since we configured tidal-midi to go through Midi Through Port-0 we must connect VMPK Input and FLUID Synth (Qsynth1) to the readeable Midi Through and VMPK Output to the writeable Midi Through. Just like in the screenshot.

That's it. We're ready to play!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment