Creating a Drumgizmo kit from existing samples

This post is about the Drumgizmo plugin I use often under Linux as a drum plugin. It has some free drumkits on the homepage to download, but I also wanted to create a drumkit out of samples I already had. I bought a commercial multi-velocity sampled drum library from drumdrops (the Mapex Heavy Rock Kit to be precise), which I really like, and created a drumgizmo patch for it. You can hear drumgizmo with this kit in action e.g. here: https://soundcloud.com/michael-oswald-5/eli-rises-send-you-away-mixing-exercise

But of course, this all can be applied to any sample collection you have. Best is to have the same drum sampled in multiple velocities, because this lets drumgizmo shine.

A drumgizmo patch is just a batch of XML files which work together, so with a basic text editor you should be fine. Of course it is easier with an XML editor (I used XML Copy Editor since it was pre-installed).

Preconditions

You should have the samples in WAV format available. Drumgizmo normally uses multi-channel WAV files (e.g. a normal stereo file has 2 channels). Each channel is a microphone. So if a real drumkit was recorded with 16 microphones (e.g. like the DRS Kit or the Muldjord Kit), the samples are 16 channel WAV files, one for each microphone.

If you don’t have this luxury and have only mono or stereo samples (which was the case for the Drumdrops Mapex Kit), it’s also fine. Drumgizmo is quite flexible with this.

If you don’t have WAV samples, but something like SF2 format, there are converters which can extract the samples out of it.

Folder Structure

I would recommend to create a single folder with the drumkit name, then inside a folder for the samples and a folder for the instrument XML files. Otherwise it gets really quirky by the sheer amount of XML files.

Instrument Files

The instrument files specify the interpretation of the sample WAV files. You can (and should) have sometimes more instruments but on the same channels. So e.g. on the hihat you could have a instrument for closed hihat, one for open and one for pedal, but all are mapped to the same channel for output.

Here is an example of the Mapex Heavy Rock kit patch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version='1.0' encoding='UTF-8'?>
<instrument version="2.0" name="Kick">
 <samples>
  <sample name="Kick-1" power="8.0">
   <audiofile channel="KickEQ2L" file="../../SAMPLES/Kick Drum/EQ2 Head/MPEX_KICK_EQFL_HT_005_V1.wav" filechannel="1"/>
   <audiofile channel="KickEQ2R" file="../../SAMPLES/Kick Drum/EQ2 Head/MPEX_KICK_EQFL_HT_005_V1.wav" filechannel="2"/>
  </sample>
  <sample name="Kick-2" power="16.0">
   <audiofile channel="KickEQ2L" file="../../SAMPLES/Kick Drum/EQ2 Head/MPEX_KICK_EQFL_HT_005_V2.wav" filechannel="1"/>
   <audiofile channel="KickEQ2R" file="../../SAMPLES/Kick Drum/EQ2 Head/MPEX_KICK_EQFL_HT_005_V2.wav" filechannel="2"/>
  </sample>
 
   ...
 
 </samples>
</instrument>

The instrument assigns the samples with their path to a channel and a hit power (which will then be used for the velocity groups). As shown above, Drumdrops provides the samples in ascending velocity (the _V1 until _V16 suffixes for the filenames). Since all samples are in stereo (2 channels), the filechannel 1 (left of stereo) is mapped to KickEQ2L channel and the filechannel 2 of the same file (right of stereo) is mapped to the KickEQ2R channel. This is packed together into a drumgizmo “sample” with the specified name and the hit power.

As for the hit power, drumgizmo seems to be quite flexible here, you can specify any values, they just have to relate to each other. I chose, because the MIDI velocity is from 0 to 127, that the _V16 sample (with the greatest velocity) is put to 128 and since the samples are delivered with 16 velocity layers I divided by 128/16 = 8, so first sample gets hit power 8, second gets 16, third gets 24 and so on.

If you have done this for every sample available for this instrument (all velocity layers), assign a final name for the instrument in the instrument tag (“Kick” in this example, could be “HiHatClosed”, “HiHatOpen” etc). This name is referenced later.

Save this XML file into the Instrument folder created before.

Repeat this for all instruments.

Drumkit File

The drumkit file then puts all instruments together into a single drumkit. First, it is wise to think about the channel layout. Drumgizmo has 16 output channels in the standard version, so the instruments should be mapped to output channels wisely. Since the Mapex Kit only contained stereo samples, I chose to assign the channels layout as shown below. So there is a stereo Kick, snare, HiHat, then the 3 Toms, the Ride and all other Cymbals are mapped to the Overheads. So all 16 ouput channels of Drumgizmo are covered. Let’s look at the example:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?xml version="1.0" encoding="UTF-8"?>
<drumkit name="MapexKit" description="A kit created by M.Oswald from Samples of the Mapex Heavy Rock Kit from DrumDrops">
  <channels>
   <channel name="01_KickL"/>
   <channel name="02_KickR"/>
   <channel name="03_SnareL"/>
   <channel name="04_SnareR"/>
   <channel name="05_HiHatL"/>
   <channel name="06_HiHatR"/>
   <channel name="07_FloorTomL"/>
   <channel name="08_FloorTomR"/>
   <channel name="09_LoRackTomL"/>
   <channel name="10_LoRackTomR"/>
   <channel name="11_HiRackTomL"/>
   <channel name="12_HiRackTomR"/>
   <channel name="13_RideL"/>
   <channel name="14_RideR"/>
   <channel name="15_OVL"/>
   <channel name="16_OVR"/>
  </channels>
  <instruments>
    <instrument name="Kick" file="Instruments/Kick.xml">
	   <channelmap in="KickEQ2L" out="01_KickL"/>
	   <channelmap in="KickEQ2R" out="02_KickR"/>
    </instrument>
    <instrument name="Kick2" file="Instruments/Kick2.xml">
	   <channelmap in="KickEmadL" out="01_KickL"/>
	   <channelmap in="KickEmadR" out="02_KickR"/>
    </instrument>
    <instrument name="SnareCentre" file="Instruments/PantherSnareCentre.xml">
	   <channelmap in="SnareL" out="03_SnareL"/>
	   <channelmap in="SnareR" out="04_SnareR"/>
    </instrument>
    <instrument name="SnareEdge" file="Instruments/PantherSnareEdge.xml">
	   <channelmap in="SnareL" out="03_SnareL"/>
	   <channelmap in="SnareR" out="04_SnareR"/>
    </instrument>
    <instrument name="SnareRimshot" file="Instruments/PantherSnareRimshot.xml">
	   <channelmap in="SnareL" out="03_SnareL"/>
	   <channelmap in="SnareR" out="04_SnareR"/>
 
   ...
 
  </instruments>
</drumkit>

The instruments are assigned by name and the file. I put the instrument XML files into the folder “Instruments”, and the drumkit XML file is one level higher, so the path is e.g. “Instruments/Kick.xml” and the name of the instrument is taken from the name attribute of the instrument tag in the Kick.xml file. And then the channels from the Instrument file are mapped to the output channels of drumgizmo (the KickEQ2L and R are mapped to 01_KickL and 02_KickR. I named them that way, so the number 01 is the output channel number of Drumgizmo, then followed by the Instrument and if it is left or right (because of stereo samples). Note that there are 2 kick drums mapped to the same output channels. This should also be done for other instruments (e.g. Snare, SnareRimshot and Snare Roll are different instruments, but all mapped to the same output channel).

Repeat this for all instruments and save the drumkit XML file.

MIDI Map

As a last step, the instruments of the drumkit have to be mapped to MIDI notes, because of course drumgizmo gets MIDI notes from the sequencer or DAW and should play the samples. So in the same folder as the drumkit file, create a MIDI map file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<midimap>
	<map note="35" instr="Kick"/>
	<map note="36" instr="Kick2"/>
	<map note="38" instr="SnareCentre"/>
	<map note="82" instr="SnareEdge"/>
	<map note="83" instr="SnareRimshot"/>
	<map note="37" instr="SnareSidestick"/>
	<map note="28" instr="SnareFlam"/>
	<map note="42" instr="HiHatFullyClosed"/>
	<map note="68" instr="HiHatClosed"/>
	<map note="71" instr="HiHatOpenQuarter"/>
 
        ...
 
</midimap>

This is very simple, each instrument from the drumkit file should be in this file and assigned to a note. There are MIDI charts for drums available, just google for them (e.g. https://upload.wikimedia.org/wikipedia/commons/8/85/GMStandardDrumMap.gif). I recommend to use the GM (General MIDI) standard as far as possible, since then the created MIDI files are more likely to work with other drum plugins

That’s it!

Play!

Then try it out! Load the drumkit file and the MIDI map into drumgizmo. If you have made a mistake somewhere, they will pop up time after time. E.g. if a path to a sample is not correct or you forgot an instrument or the name/channel assignment is not right, you won’t hear that instrument. Also, if you give a note twice in the MIDI map, of course one instrument will disappear (happened to me). So it’s good to triple check everything.

Happy drumming with your new kit!

10 thoughts on “Creating a Drumgizmo kit from existing samples

  1. Daniel

    Hello, congratulations on the post. I use Drumgizmo with the “Basic Kit”, but when recording the audio tracks, the sound is replicated to another track, ie for example in the “Ride” track it is also recorded at low volume the “Snare” or Some other piece. Do you have any tips to give me ??

    Reply
    1. michaelo Post author

      Thanks!

      Yes, this is called bleed and is a result of recording real drums with real microphones, which basically pick up everything in the room on a single hit but in lower volume. So that’s actually a thing that is a bit annoying, but also make the drums sounding more “natural”. In mixing a track in certain genres, a fair amount of time is often spent on reducing bleed.

      With the basic kit I assume you mean the DRS kit. And yes, on it the bleed is insanely high which is probably because of the microphone placement used at recording the kit. Especially the snare is far too much on the kick channel. Which is why I don’t use the DRS kit, I tried several times to get a good mixed sound with bleed reduction, but never managed to.

      Another thing are the overhead- and room-microphone-tracks, which explicitly should record all other drums and are used to give more liveness, fullness and so on.

      Actually, you have a few options:
      – use another kit than the DRS kit. For standard drumgizmo, the Muldjord kit has a lot less bleed, but it is more a metal kit

      – use a kit of sample libraries. They have no bleed but often overheads and room microphone tracks. I don’t know if you have seen them, I did two open source ones for LMP: http://libremusicproduction.com/news/20161109-two-high-quality-drumkits-drumgizmo but you can also get commercial high quality ones from DrumDrops (currently only the Mapex heavy rock kit, the Vintage Folk kit and the Modern Folk Rock kit).

      – a bit more involved is to reduce the bleed in the DRS kit itself. I have not done it, but it is possible. The samples are all multi-channel wav files, so you can load them e.g. with Audacity and set the Audio in the according channel to silence. It is quite a bit of work, but doable.

      – There are tricks to reduce bleed in mixing, but they are often pro-level. You can find quite some videos on Youtube.

      Reply
  2. raffguitar++

    Hi Michael,
    Thank you for this tutorial (..and ALL of your tutorials, really)! I downloaded your whole series on using Ardour and MusE, excellent work. I’ve only just started dabbling w/DrumGizmo, but this seems to be an awesome plugin and it’s only going to get better over time. Going to work with it right now actually. Cheers!

    Reply
    1. michaelo Post author

      You’re welcome! Yes, drumgizmo is awesome, I use it quite a lot. There are a few nice features coming in the next releases, so let’s see!

      Reply
  3. Brian

    Hi, I’m in the process of doing this now with a sample library. Neither the midimap.xml or drumkit.xml will show in DrumGizmo’s browser, and I’m getting “no declaration found for element ‘drumkit” error in XML CE. Any ideas?

    Reply
    1. michaelo Post author

      Hi Brian,

      There can be quite some reasons for this. Can you provide more details?
      – In Drumgizom check that you are really in the right directory, it really should display all XML files. If not, find some other XML files and try to navigate there to see if they are displayed. If not, then you probably have a buggy drumgizmo version (though I have not seen this yet)
      – The missing declaration could be (just a guess, I have no idea what XML CE is), because there is no XML Schema available for the drumgizmo files, the files are “standalone” XMLs, so you cannot really validate them against a Schema
      – If all fails, contact me again. Which sample library do you want to bind? I have already done 2 open source kits (see here: LMP Drumgizmo Kits and 3 commercial ones. I have written a Software so that I can do this a bit more comfortable and without getting inconsistencies in the XML files.

      Reply
  4. Brian

    Hi Michaleo, I copied and pasted your code and edited it – but for some reason it would not work. I had to re-write the code manually in XML CE and it now works. Thanks for the spark!!

    Reply
  5. Brian

    Oh no, I wish I’d read your post more closely, I was doing the SM Kit. Glad I came back, you have saved me a ton of work!! Thanks a million.

    Reply
  6. Brian

    Hi again Michael. Sorry to bother you, but one small thing I noticed. The Snare L channel is about 4db quieter than the R channel. I had a look at the Files but can’t see anything wrong. Would you have a look when you get a chance?

    Reply
    1. michaelo Post author

      Hi Brian,

      The SM MegaReaper kit has no left snare channel, it has top and bottom, which means two microphones were used to track it, one at the top and one at the bottom. So both normally go into the middle and are mixed to taste. The Salamander Kit has a left and right snare channel and they are slightly uneven. But this is from the recording. Drumgizmo does no change in volume of the samples, it just mixes them (adds them together).

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *