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.

importHydrogenDrumkitsToComposite.py

"""
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__ = "http://linuxaudiolive.wordpress.com"

from glob import glob
from os import system, path

xmlstart = "<?xml version=\"1.0\"?>\n\
<T:tritium xmlns:T=\"http://gabe.is-a-geek.org/tritium/xml/1/\">\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!"
    else:
        #uncomment the following to create the symlinks
        #makeDrumkitSymlinks(hydrogenDrumkitPath, compositeDrumkitPath)
        print "Creating new default file."
        drumkitnames = glob(compositeDrumkitPath+"*")
        drumkitnames.sort()
        f = open(newDefaultFilename,'w')
        f.write(xmlstart)
        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))
                counter+=1
        f.write(xmlend)
        f.close()
        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

#*.=info;*.=notice;*.=warn;\
    # auth,authpriv.none;\
    # cron,daemon.none;\
    # mail,news.none -/var/log/messages

to

*.=info;*.=notice;*.=warn;\
    auth,authpriv.none;\
    cron,daemon.none;\
    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.

ccMixter

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

Music Theory

As a mostly autodidactic musician the concepts off scales, intervals, chords or rhythms can be quite mixed up, so when you work together with others it can get a bit complicated sometimes. Reading one’s way through encyclopaedias is lengthy, so I find it nice to find a book about all that, where knowledgeable people explain the whole picture. One place for such is certainly wikibooks. Users are working on a book on Music Theory since something like 2004 and it has gained quite a size. I was happy to see chapters on

Some other chapters are still quite short and need our efforts to be as good as the two mentioned ones.

Happy reading and extending!

Manuals

Sometimes it’s really hard to find just that piece of information one needs to get done with the work. Searching a program’s homepage, looking around in the uncountable forums or playing with the settings can be very time consuming. On one of that journeys I passed by a site which I have seen before but did not remember: http://en.flossmanuals.net/“Free manuals for free software”. Concerning music making I was happy to see the new Ardour manual and an Audacity manual.

There are many more documents about streaming, video editing and graphic design software, general Linux commands and other. The site is nicely made, very appealing to the eye and comes as well in other languages than English, however not all of the manuals are translated. Maybe YOU want to supply one?

FLOSS manuals screenshot

A screenshot from the FLOSS manuals main page.



Follow

Get every new post delivered to your Inbox.