madfuload (m-audio transit), fedora 20 and ubuntu 13

I’m stuck. Madfuload used to put my M-Audio Transit card to work under linux but not on the new Ubuntu versions or Fedora (I recently changed to Fedora 20). It doesn’t work anymore. Something has changed.

It’s not in the repository (of Fedora) so I downloaded the sources (madfu loader). The configure scripts have to be adjusted slightly to get the sources compiled. The Transit still doesn’t work, neither does the Midiman Oxygen according to a post from Oliver Sampson on the madfu user mailing list, where the necessary changes in the configure scripts can be found, too.

So, any help is really appreciated. What’s wrong? I tried to use the dfu-programmer, so far with no success either. Is there more people with this problem? With common efforts it should be possible to solve (“Like” this to solve the problem)!


update on composite sampler

Looking at its web site, it seems that composite sampler (see post) is not actively developed anymore. The last news are from July 2011. What a pity.

hydrogen drumkits for composite sampler

Composite is will be a software application/system for real-time, in-performance sequencing, sampling, and looping. …” [Composite web site]. It comes with a LV2 plugin (called composite sampler) that allows to use its drumkits in zynjacku (“zynjacku is a nunchaku weapon for JACK audio synthesis. …” [zynjacku web site]), which means that you can use the sounds alone without running the whole sequencer. The drumkits are compatible to the ones used by hydrogen (“Hydrogen is an advanced drum machine for GNU/Linux. …” [hydrogen web site]).

The composite sampler documentation says that one needs to put the drumkits (or symlinks) into the according path and adjust the default.xml file in the composite presets (see manual). Then it is possible to change through the drumkits with MIDI program change messages. I thought an automated way of preparing this setup would be useful, so I wrote the following python script. Feel free to use/alter it, no guarantee is given for anything. Comments are welcome.

Generates symlinks in the composite drumkit path that point 
to the hydrogen drumkits. Creates an according xml-file with 
all drumkits with GMkit as the first entry.
__author__ = ""

from glob import glob
from os import system, path

xmlstart = "<?xml version=\"1.0\"?>\n\
<T:tritium xmlns:T=\"\">\n\
\t<T:presets>\n\\t\t<T:bank coarse=\"0\" fine=\"0\">"
xmlend = "\t\t</T:bank>\n\\t</T:presets>\n\</T:tritium>"

hydrogenDrumkitPath = "/usr/share/hydrogen/data/drumkits/"
compositeDrumkitPath = path.expanduser("~/.composite/data/drumkits/")
newDefaultFilename = "newDefault.xml"

def makeDrumkitSymlinks(hydrogenPath, compositePath):
    """Puts symlinks for all entries in hydrogenPath into compositePath"""
    print "Creating symlinks..."
    names = glob(hydrogenPath+"*")
    for n in names:
        system("ln -s '"+n+"' '"+compositePath+n.split("/")[-1]+"'")

def drumKitField(name, MIDIdevice):
    """Returns the complete xml-entry for one drumkit"""
    drumKitString = "\t\t\t<T:program>\n"
    drumKitString += "\t\t\t\t<T:midi_number>" 
    drumKitString += str(MIDIdevice) 
    drumKitString += "</T:midi_number>\n"
    drumKitString += "\t\t\t\t<T:resource>tritium:drumkits/"
    drumKitString += name
    drumKitString += "</T:resource>\n\t\t\t</T:program>"
    return drumKitString

if __name__ == '__main__':
    if path.exists(newDefaultFilename):
        print "The file '",newDefaultFilename,"' already exists."
        print "Not deleting anything."
        print "Aborting!"
        #uncomment the following to create the symlinks
        #makeDrumkitSymlinks(hydrogenDrumkitPath, compositeDrumkitPath)
        print "Creating new default file."
        drumkitnames = glob(compositeDrumkitPath+"*")
        f = open(newDefaultFilename,'w')
        f.write(drumKitField("GMkit",0)) #the default entry
        counter = 1
        for kit in drumkitnames:
            name = kit.split("/")[-1]
            if name!="GMkit": #default entry is already the first
                f.write(drumKitField(name, counter))
        print "Done. Now copy",newDefaultFilename,
        print "to your .composite/data/presets/default.xml"

off topic: Can’t ssh into a Ubuntu 12.04 box

After a fresh install of Ubuntu 12.04 followed by an install of the ssh-meta package (which includes the ssh server and client) as well as firestarter (to allow ssh access through the firewall) I wasn’t able to login from a remote machine. Worse: firestarter didn’t show a denied ssh-access, which I expected after a fresh install. Fooling around with /etc/sshd_config didn’t change a thing. Until I stumbled about a piece of information on the internet, that open my eyes.
Starting up firestarter it displayed a message saying “Failed to open the system log. No event information will be available” and “Error reading system log (null), file does not exist.”. At first I ignored them and thought, oh well, I don’t care. But I do, ’cause that is the reason for not displaying the deny-message which I needed to allow access. Another search revealed the solution:

From Ubuntu 11.04 on rsylogd is installed rather than syslogd which firestarter was expecting. I edited /etc/rsyslog.d/50-default.conf by changing the lines commented out that create the relevant logfile

    # auth,authpriv.none;\
    # cron,daemon.none;\
    # mail,news.none -/var/log/messages


    mail,news.none -/var/log/messages

Then restarting rsyslog with sudo service rsyslog restart and restarting firestarter the problem disappears.

(the last bit I found on askubuntu)

m-audio transit on Ubuntu 12.04

I freshly installed Ubuntu 12.04 and the ubuntustudio meta package. To get the m-audio transit card working I followed my older post (m-audio transit and ubuntu linux), i.e. installing madfuload which comes in the repository and adjust the udev-rules. They do not work the way they come installed.

So I used the content from corrected-madfu-rules and saved it as /etc/udev/rules.d/41-madfuload.rules. The according file in /lib/udev/rules.d I left untouched. The “41” instead of “42” is there because it reads “…Pick a number higher than the rules you want to override, and yours will be used. …” in /etc/udev/rules.d/README.

Something hang on my machine when trying the outcome so I rebooted the machine, although this might not be necessary for everybody. After that the sound card works as it used to.


Just stumbled upon another database of audio files under Creative Common Licenses: ccMixter. Amazing! It collects finished remixes on one hand and material to remix on the other. Instrumental tracks, drum loops, voices and the like. They can be searched by tags or filtered by BPM. A “How I did it” tab in the extras section some artists describe what tools, processes and/or samples they used.

Happy mixing! Just make sure to follow the licenses attached to the works.

Arduino 1

How I got my Arduino

A week ago I had the chance to participate in a wonderful workshop on sound design given by David Strang.  First, he gave the lecture “Surface Sounds” about his works. Then, in his workshop, he showed how to solder a contact microphone and how to make hydrophones (for underwater recording) and we went out to get some grips on the devices. Lecture, workshop and exhibition came to an invitation by Petra Klusmeyer.  It really was  good fun, and apart from that his inspiration made me to get an Arduino after all.

First grips

I got an Arduino Uno (R2) in a kit with some LEDs and other stuff so that I could immediately start with examples from the internet. A flashing LED, a dimming LED and the like. I got it fed electricity via USB but it takes away a lot of physical freedom. So I decided to practice my DIY abilities and soldering skills. I spent 2€ on a switch and a battery adapter and did some happy soldering. Notice on the picture (below, right) that one could have gotten away with less soldering, a recall to don’t drink and solder.

From cheap parts (left) to something handy (right)

Physical action

The kit had an LED with RGB connections. That is what most intrigued me from the start. After I understood well how to connect the wires I put the LED on a cable to attach it on my finger. With a very simple digital photo camera that has a longest exposure time of 2 seconds I wanted to take stills of the moving light with changing colours. I programmed the Arduino to flash a sequence that repeats every 2 seconds. The code is not beautiful nor flexible yet but it does the job (I might actually put the code as a comment to the post).

Pressing the camera button at the right moment I got a few nice pictures taken.

The Ring of Fire

a friend

A friend

a smoke

A Smoke