QMidiRoute, and CPU Scaling In Ubuntu Studio

How many of you are aware of the program “QMidiRoute”? It lets you transform any kind of MIDI input into any other… it doesn’t have the power of something like Mididings, but it’s got a GUI and is very easy to use. What do I use it for?

On my live looping guitar setup, I wanted to be able to control three programs with one MIDI foot controller, an old ART X-15. The pedal isn’t programmable, so for me to split up messages, I use QMidiRoute. It goes something like this:

I’m using Rakarrak for guitar sounds (I also use Guitarix, which sounds better), and I’m pretty much using it in stompbox mode, i.e. just turning single effects on and off. The mapping uses a single CC# and different distinct values to turn individual fx on/off (which is dumb). I can put the pedal in CC mode, but I can’t make it do that… qmidiroute can do that for me. Also, any PC signals automatically change presets in Rakarrak, which I don’t want… so I have qmidiroute discard anything it doesn’t have a specific rule for.

For SooperLooper, I want to be able to use PC messages 1-10 to record, dub, change loops, and so on. It doesn’t need any translations, so I have my MIDI messages going straight to it. It only does what you map it to, so no other changes are needed for it.

For Hydrogen, I want to use my second bank of PC messages (11-20) to control it, but Hydrogen doesn’t recognize PC signals, only notes or CC values. Once again, qmidiroute to the rescue… I can make specific PC changes translate into an actual note, which I can then use to trigger controls or one-shots from Hydrogen.

You can also have multiple configurations, and make a shortcut that loads that particular file on startup, which makes it easy to use in a live performance setting! You just add it to your Jack patch panel, save it, and the next time you fire it up, it’s automatically configured and patched in.

Check it out! It can also route signals to two different output ports, which lets you split notes or note ranges (or PC and CC ranges) to two different outputs.

qmidiroute

This leads me to my next problem to tackle… I hadn’t been able to run guitar effects very well, due to random CPU spikes and latency issues. In my research to build my laptop into a live performance machine, I stumbled across some interesting information about CPU frequency scaling, and how in XFCE it is extremely wonky… I did some research, and discovered how to manually override the wonky settings with a program called “cpufreq-set” (in package “cpufrequtils”).

I also noticed how my laptop would go out of performance mode whenever I started Jack, which caused all kinds of problems with latency. So, I added a couple of scripts in the Jack configuration tab, which forces the CPUs into Performance Mode when Jack starts, and puts them back in economy mode when Jack stops. (I had to add superuser rights to the program cpufreq-set to do this).

Here’s the page with all the info on cpufrequtils, and a screenshot of my Jack startup/shutdown scripts.

http://www.pantz.org/software/cpufreq/usingcpufreqonlinux.html

Screenshot - 06222013PM

You can see the numbers, those are forcing the CPUs to run at a max of 2.2Ghz and a min of 800Mhz, respectively.