box down

my main gentoo workstation is down. no more documentation updates from me for awhile.

it seems the desktop computer’s video card has finally bitten the dust. the monitor comes up as “no input detected” despite repeated reboots. so now i’m faced with a decision: throw in a cheap, low-end GFX card as a stopgap measure, or wash my hands of 3 to 6 years of progressive hardware failure, and do a complete rebuild. last time i put anything new in the box was probably back in 2009…said (dead) GFX card, and a side/downgraded AMD CPU. might be worth building an entirely new machine from scratch at this point.

i haven’t bothered to pay attention to the AMD-vs-Intel race for the last few years, so i’m a bit at a loss. i’ll check TechReport, SPCR, NewEgg, and all those sites, but…not being at all caught up on the bang-for-buck parts…is a bit disconcerting. i used to follow the latest trends and reviews like a true technoweenie.

and now, of course, i’m thinking in terms of what hardware lends itself to music production — USB/Firewire ports, bus latency, linux driver status for crucial bits; things like that. all very challenging to juggle after being out of it for so long.

so, who’s built their own PC lately? what’d ya use?

los angeles monomeet: december 12

on monday, december 12, i’ll be performing at the downtown independent for a musical showcase of monome-wielding artists, along with hardware and software presentations. live visuals all night long by OICHO.

i’ll be doing just a short set (as ioflow); the rest of the lineup are the real heavyweights. the inventors of the monome will be there, along with a stellar group of super-talented world-touring artists. these folks rock. if there’s any chance you can make it, you should totally be there! come hear some tunes and learn about the open-source software and hardware we use. i’ll be running an all-linux software stack, powered by gentoo linux.

i guarantee there will be some seriously fun beats, so get your tickets!

HowTo: use FingerPlay MIDI with Renoise, on Linux

FingerPlay MIDI is a MIDI and OSC controller for Android. It presents a series of customizable virtual control surfaces, allowing you to map them to MIDI controls in your other music applications. This gets you off the mouse and computer screen, and closer to your instruments. It’s the same kind of app as TouchOSC, a way of performing that’s a bit more live and less laborious than touching single controls with just a mouse. You can configure buttons, sliders, and X-Y pads in FingerPlay, making possible fast and intuitive parameter and program changes.

Renoise is music production and performance software. It is highly configurable, and can be controlled by external MIDI and OSC devices. An add-on tool, Duplex is an add-on tool for Renoise that makes setting up and using external controllers very easily, through the use of open source languages such as Lua and XML, in the form of templates for devices and their functions. At the time of writing, there is no such template for FingerPlay, but it is possible to use it with Renoise directly, even without Duplex’s assistance.

Setup JACK

1. Launch QJackCtl and start JACK.
2. Start Renoise.
3. Load the virtual MIDI kernel module:

# modprobe snd-virmidi

4. In QJackCtl, open the “Connections” dialog. On the ALSA tab, connect a Virtual Raw MIDI port, on the left side, to Renoise, on the right side.

Setup FingerPlay MIDI

1. Download, unzip, and run the Java-based FingerPlay server on your computer.

$ java -jar FingerPlayServer.jar

2. Install the FingerPlay MIDI app on your Android phone. If you don’t have access to the Market, you can manually install the .apk.
3. Turn on your phone’s WiFi, then launch FingerPlay MIDI. Tap the “gear” icon on the top right; this is the configuration menu. Use the following settings:
Server Type: FingerServer
Server Address: (your computer’s IP address, such as 192.168.1.20)
4. Tap the Connect to Server button.
5. Once connected, tap MIDI Out Device, and select the Virtual Raw MIDI device that you connected to Renoise.

Setup Renoise

1. In Renoise, go to the “Track DSPs” tab. Add an *XY Pad device, found in the *Meta section on the leftmost panel.
2. Now add an effect, such as a filter. We’ll use Calf Filter DSSI for this example.
3. On the *XY Pad device, click the “X-Axis Setup” button. Set your destination with the little button on the left, marked CT (Current Track). Choose the track that this effect will apply to. Then in the first dropdown to its right, select Calf Filter DSSI as the device it will control. On the next dropdown to the right, choose the parameter you want to control with the X axis, such as Frequency.
4. Click the “Y-Axis Setup” button. As with the “X-Axis Setup” procedure, choose the destination track, the effect you want to control, and a parameter from the dropdown, such as Resonance.

Now it’s time to start mapping these controls!

MIDI mapping

1. Press Ctrl-M in Renoise. This brings up the “MIDI Mapping” dialog.
2. Check the button marked Allow mapping the same Note/CC more than once. This is important because we are going to be assigning the same axis in FingerPlay to two sliders in Renoise.
3. Click the “X-Axis Setup” button. Now click the Dest. Max slider. It should be highlighted in yellow and bracketed. Once it’s highlighted, you have to tell Renoise to listen for horizontal messages from FingerPlay. On your phone, tap “Configure MIDI Controllers” at the bottom of the options menu. Tap the button labeled Send Horizontal, and wait a moments. You should see a channel and CC number appear in Renoise, on the highlighted slider. In this case, Ch1|CC1. You might need to tap the button on your phone a few times before it sticks; there may be some lag.
4. Repeat this process for the Dest. Min slider. It is important that you have both sliders displaying Ch1|CC1! If only one of the sliders is mapped to an axis, Renoise won’t receive the full range of values from FingerPlay, and the slider will only move halfway, even when you’ve dragged to the extreme end of the X-Y pad in FingerPlay.

Make sure that Map Mode is set to Absolute 7 bit for both Dest. Min. and Dest. Max sliders in the MIDI Mapping dialog! If you see the sliders abruptly jump around, without smoothly changing between values, press Ctrl-M again, click a slider, and change Map Mode to Absolute 7 bit.

You’ve finished setting up the X axis sliders, so now it’s time to setup the Y axis.

5. In Renoise, click the “Y-Axis Setup” button. Now click the Dest. Max slider. You have to tell Renoise to listen for the vertical messages from FingerPlayMIDI. On your phone, tap the button labeled Send Vertical. You should see another channel and CC pair show up on the slider. In this case, Ch1|CC2. Repeat this process for the Dest. Min slider. It should also display Ch1|CC2 when you’re finished.

Again, make sure that Map Mode is set to Absolute 7 bit for both sliders in the MIDI Mapping dialog.

That’s it; you’re done! Close the dialog and play with the X-Y pad in FingerPlay. You should see the parameter sliders on your effects move in response to your finger position.

Known Issues

1. The dot on Renoise’s graphical *XY Pad will not move in response to the pad in FingerPlay. This is okay; FingerPlay still sends MIDI signals to alter parameters; there’s just no visual feedback in Renoise, aside from the sliders moving.
2. You can get most of the same parameter control by just mapping a FingerPlay MIDI axis
directly to one of the parameter sliders in your effect plugin, without having to create an *XY Pad meta-device. However, by using the *XY Pad, you can set Scaling response curves and Auto Reset. The latter option makes the *XY Pad behave like a joystick. Once you take your hand off the FingerPlay pad, the parameters snap back to their middle values.

HowTo: run Flickering Lights on Linux

For today’s creative thing, I figured out how to get Flickering Lights working with the MIDI ports on my Echo AudioFire2 sound card. Flickering Lights is a cross-platform Java-based monome application, inspired by Tonematrix and the Tenori-on.

As the app is not JACK-aware, it only sees ALSA-based MIDI devices. USB-MIDI devices and my PCI soundcard all show up on the ALSA tab of QJackCtl, since that’s the JACK driver they use. FireWire-based MIDI devices don’t show up on the ALSA tab, since they use ffado (which is available in my overlay). They appear on the middle MIDI tab. The problem, then, is this: how do you get Flickering Lights to connect to the right MIDI device? The answer: a2jmidid and the virtual MIDI kernel module.

First, load the virtual MIDI module:

# modprobe snd-virmidi

Now start qjackctl and JACK, then launch the daemon to bridge FireWire MIDI to ALSA MIDI:

$ a2jmidid --export-hw

On the MIDI tab of QJackCtl’s connection manager, connect one of the virtual MIDI device outputs (which will show up under a2j) to your FireWire device’s MIDI inputs. if you want to send MIDI control messages to Flickering Lights, then connect your FireWire card’s output to a virtual MIDI input.

virtual midi connections

Once you’ve downloaded and unzipped Flickering Lights, make sure to edit settings.xml before starting the app. You need to tell it the size of your monome.

Now start monomeserial and Flickering Lights:

$ monomeserial -s 8080 -a 8000 flicker
$ java -jar flickering.jar

Once the GUI loads, select the input and output devices that correspond to your setup in QJackCtl. In my case, virmidi hw:2,0,0.

Select your scale (you can even specify custom scales with a few simple bits of XML coding), and start pushing buttons on your monome!

HowTo: Microkorg XL Sound Editor on Linux

Despite Wine bug #17608, you really can use Korg’s editor to adjust the deepest levels of your Microkorg XL on-the-fly, with instant playback results! Seems I’m not the only one to do this, in fact.

I did run into one problem: the MIDI ports on my AudioFire2 don’t show up on the ALSA MIDI tab, so the editor can’t see them. Wine seems to rely on ALSA MIDI devices, which means we need to provide a bridge between the native FireWire MIDI interface, on the MIDI tab, and the ALSA MIDI tab.

The solution: a2jmidid. This is, of course, only necessary if you’re using physical MIDI cables; a USB-MIDI device should show up on the right part of the Connections manager in QJackCtl. You may even be able to avoid these steps entirely if you can get the plain ol’ USB port right on the MK XL working; I haven’t tried that yet. I wanted to try out the AudioFire2′s MIDI dongle, which meant experimenting with JACK and ALSA.

But first, let’s get the Korg Sound Editor installed.

1. Download the latest version of the editor from Korg.
2. Unzip it, and run the installer in Wine:

$ unzip MkXL_Editor_100E.zip
$ wine microKORG\ XL\ Sound\ Editor/Setup_E.exe

3. Start your JACK server using QJackCtl.
4. Install a2jmidid, then launch it:

$ a2jmidid --export-hw

5. Open the Connections manager in QJackCtl, then switch to the MIDI tab. Connect the Midi through (capture) virtual device on the left side to the firewire_pcm device on the right side. Now connect the left side’s firewire_pcm to the Midi through (playback) device on the right side. This will let the Sound Editor communicate with your MK XL via Wine’s MIDI transport layer.
6. Now you can launch the Korg Sound Editor from your Program Menu:
Wine -> Programs -> KORG -> microKORG XL -> microKORG XL Sound Editor
7. In Sound Editor’s main window, go to options -> Preferences. Change both of the MIDI_IN/OUT dropdown boxes to Midi through Port-0. You’ll get a few warnings and popup dialogs about missing (and unnecessary) Windows-only USB-MIDI drivers, but as long as you have your cables physically plugged in correctly, you should now have working two-way communication with your MK and your computer. make sure you have the Knob Function Select dial on “Full Edit” if you want to be able to reprogram your synth or save presets to it.
8. To test your connection, double-click one of the patches on the “Program” Sound Editor screen. Once its window loads, click “Edit Synth” on TIMBRE 1. In the new window, click “Randomize” on the top left. Play a few notes. Click “Randomize” again, wait for the settings to be transmitted, then play s’more. Yay for realtime parameter changes!

I still have to delve into my Microkorg XL. Don’t know how to use it or synthesize new and awesome sounds, but at least I’ve got it working with Linux.