LINUX AUDIO STUDIO PROJECTS

written in C by oc2k1, support: webmaster@djreason.de

 Using the jack midi drum

The mididrum executable is a command line tool to feed your WAVETABLE! You can assign sounds to your keyboard/e-drum keys/pads.
It was written without that "klickibunti" all around, at the moment the GUI is not ready to release:

it does what it is supposed! Give it a try:



it's nearly 12 years ago when we developed the jack midi drum
Targets of the docs:

Building

A precompiled executable is in our download. But it's recommended that you compile it on your system!
Go to the src directory a type:
 gcc mididrum.c -o mididrum
 #make install
 

http://qjackctl.sourceforge.net/
You need to setup your midi ports! First start the jack server (you can execute jackd.sh which is in our source ...)
jackd -R -d alsa -d hw:1 -p 512 -r 48000 -z s
there should be an output like this:
jackd 0.121.3
Copyright 2001-2009 Paul Davis, Stephane Letz, Jack O'Quinn, Torben Hohn and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details

JACK compiled with System V SHM support.
loading driver ..
apparent rate = 48000
creating alsa driver ... hw:1|hw:1|512|2|48000|0|0|nomon|swmeter|-|32bit
control device hw:1
configuring for 48000Hz, period = 512 frames (10.7 ms), buffer = 2 periods
ALSA: final selected sample format for capture: 16bit little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 16bit little-endian
ALSA: use 2 periods for playback
Noise-shaped dithering at 16 bits
& make sure that you're in the audio group
You can qjackqtl configure to start jack @ startup -> Misc Section...

>Use qjackctl to patch your midi resources. Don't forget to push the activate button! Or you can use aconnect from command line ...

.. is very simple to handle sound bank files/ wave tables (not sf2, but we could make it compatible with that). You can call it Wave Table Connection Plug Tool. It has been written to control studio equiptment.

Compatibility

At last You must have a soundcard with wavetable to load and hold samples to your RAM. Even SB (with OPL-3, this is 20 voices) will be supported, but not this AC emulation onBoard stuff without Wavetable support (this stuff only emulates a synth). Remember there are soundcards on market that really have just PCM output. We were happy with SBLIVE! Secondary You must have a joystick port to control extern midi devices like E-drums and Keyboard etc. So, if you have a CREATIVE with GM support soundcard in your PCI(x) slot you'll never have any trouble with MIDIDRUM. I guess we don't like programms that have been written in "all in one" style like steinberg and reason do. We start this Projekt to grab your Soundcards I/O and control it with midi events. Mididrum uses the 48000Khz 32-bit float Wave format wich give you high audio quality like DAT tapes, better than CD!.
Mididrum is using the Jack Deamon Interface to create a midi device on your system so that You can talk to mididrum with your GM/2 compatible programs.

IMAGINE that JACK doesn't work with Microsoft Windows OS, perhaps in future...

Command: Load Sound Banks

The commandline based C Program must be gived an argument in this case it's the path of the soundfont You want to load. You can load sound banks with the following command.
 executable [argument:path] 
./mididrum /kitfonts/slingerland_drumkit.mdk
Basicly the samples are stored in the mididrum_kits folder sorted in different subfolders. Once it was started you may see with
aconnect -o
the Jack Drum client.
It should be possible to connect to midi output "Jack Drum" (write).

Create your own Drumkit / WAVE TABLE

You can load all 128 midiports with waves. Think about the concept of your sound banks: Percussions will be handled different to Melodic sound banks. When You have beat instrument you can't play other notes but in brassections this option is really important.

Create a text file then (Example Sound Bank File (../kitfonts/slingerland_drumkit.mdk)) You must write gm2 compatible bank file then you can't loose the overview in your sequencer! Remember to use 48000Khz 32-bit float Wave format.
 midichannel volume [argument:path] 
36 1.5 /home/shorty/Desktop/midi/mididrum_kits/slingerland_1/slinger_kick_hard.wav

Known Issues

Any programs that are compatible to ALSA with JACKD support will work correctly with Mididrum. Some has been tested positiv with Rosegarden Sequencer, Hydrogen, fluidsynth.

The latecy of the MIDIDRUMS is about 0.49 ms. At last your system leads idle ...
mididrum is written in C, it is about 1.1 MB without samples. The program (and its dependend programs) was tested in gentoo with kernel 2.6 - 1,5 GB RAM and SBLIVE5.1 (emu10k1).
If you get an error like this:
cannot lock down memory for RT thread (Cannot allocate memory) 
or
JACK: unable to mlock() port buffers: Cannot allocate memory
you have to edit /etc/security/limits.conf with:
@audio          -       rtprio          99
@audio          -       nice            -19
@audio          -       memlock         unlimited
 
The rights aren't available until you restart your system!

if you have an error like this
cannot connect output ports

Requirements

Well, alsa + jack, I really don't know ... but it works on almost every linux, it's not large but remember to allocate ram, 256 MB should be enough ...
sfxload is part of the awesfx package.
useful links
http://users.suse.com/~mana/alsa090_howto.html