ardour3

i wrote an ebuild for ardour 3 and added it to my overlay. it’s a live ebuild for the latest SVN, so there are a few warnings:

1. ardour3 is is still in alpha status. things may not work.

2. upstream hates the thought of distributors packaging ardour to begin with (even though gentoo ebuilds just fetch and compile the source), but they especially do not want to see the alphas and betas officially packaged. this is an unofficial ebuild, in an unofficial overlay. so please, don’t even think that this will make it into portage until ardour3 has had a stable release. i don’t maintain the official versions in portage, anyway.

3. upstream requests that you do not bug them about problems building ardour, running it, etc. do not hit their forums asking for help. instead, if you need to troubleshoot issues or offer patches and workarounds, visit #ardour on irc.freenode.net, or visit their mailing lists. this same warning is repeated in my ebuild, just to make sure you know that you’re agreeing to play by these rules while you try out ardour.

4. a much friendlier community of folks willing to help can be found at #opensourcemusicians on irc.freenode.net. many of ‘em have been using ardour3 for awhile, and are familiar with the latest code diffs and how things work compared to ardour2.

5. as with any ebuild in any overlay, if you have issues, first contact the maintainer of the overlay (me), rather than risk wasting anyone else’s time. that being said, i’ve been making music with ardour3 for almost a month now, and aside from UI quirks, find it pretty stable. support for linux VSTs is definitely a plus, as is the inclusion of basic MIDI sequencing.

if you want to try it out, you know where to find it.

nano basket

i added an ebuild for nano basket to my overlay.

nano basket lets you change the MIDI data sent by the korg nanokontrol. this makes it easy to create templates/presets that can be dumped to the nanokontrol. which, in turn, makes it easy to create a template for my microkorg XL, where the nanokontrol can be used to manipulate all the parameters normally hidden beneath several layers on menus on the MK XL. makes it much nicer for realtime changes, as well as exploring synthesis in a much more hands-on way than going through the software editor or using the three knobs on the keyboard itself. the nanokontrol presents 9 knobs, 9 faders, and 18 push-buttons on each “scene.” so with four scenes to switch between, that’s a lot of extra hands-on control of the keyboard.

as soon as i finish reading through the arcane MIDI channel info in the korg manual, i’ll put up a sample template for the nanokontrol+MK XL.

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.