DrumGizmo

From ZynthianWiki
Jump to navigation Jump to search

1 Description

DrumGizmo is an open source, multichannel, multilayered, cross-platform drum plugin and stand-alone application. It enables you to compose drums in midi and mix them with a multichannel approach. It is comparable to that of mixing a real drumkit that has been recorded with a multimic setup.

Features include:

  • Stand-alone, Lv2 and VSTi versions available
  • Open drumkit file format, allowing the community to create their own drumkits
  • Drum velocity, allowing for several different hit velocities for each drum
  • Multichannel output, making it possible to mix it just the way you would a real drumkit
  • Optional built-in humanizer, analyzing the midi notes, adjusting velocities on-the-fly
  • Stand-alone midi renderer, generating .wav files, 1 for each channel
  • Stand-alone midi input, making it possible to use DrumGizmo as a software sampler for an electronic drumkit

Source: http://git.drumgizmo.org/drumgizmo.git/

2 DrumKits

In the case of Zynthian, DrumGizmo comes a bit bare, with no drumkits that you have to install yourself. And then activate the LV2 presets.

The official kit source for DrumGizmo is at kits – DrumGizmo Wiki. Here I also drew a description of the individual kits:

2.1 CrocellKit

The CrocellKit is the kit used by Danish metal band Crocell. The kit consist of the following drums and cymbals:

  • 1 kickdrum (with double pedal)
  • 2 hanging toms
  • 2 floor toms
  • 1 snare
  • 1 hihat
  • 3 crash cymbals
  • 1 ride cymbals
  • 2 china cymbal
  • 2 splash cymbals

This should be considered a metal or rock kit.

2.2 DRSKit

DRSKit came to be as a collaboration between the DrumGizmo team and Jes Eiler of DRSDrums. Jes creates handcrafted drumkits under his own label with an attention to detail not often seen on the market.

We gave him a call and asked if he would supply a kit for us to record. And being the stand-up guy that he is, he offered to lend us an entire kit for free. The kit contains the following components (Left / right placements as seen by the drummer):

  • 1 kickdrum
  • 1 hanging tom
  • 2 floor toms
  • 1 snare
  • 1 hihat: Paiste Formula 602 Medium hi-hat
  • 2 crash cymbals
  • Left: Paiste Giant Beat
  • Right: Paiste Formula 602 (Lend to us by Erik)
  • 1 ride cymbal: Paiste Formula 602 thin crash

The kit should be usable for everything from jazz to rock.

2.3 MuldjordKit

“The MuldjordKit is a Tama Superstar drumkit with all the bells and whistles. The samples for this kit was actually recorded all the way back in 2010 when I was recording / playing drums for the Sepulchrum debut album. When recording drums I always sample the kit in case we need a cymbal or a single drum hit here and there to patch up the recordings. It turns out that I sampled it so well that it can be used with DrumGizmo.” - Lars Muldjord.

The kit consist of the following drums and cymbals:

  • 2 kickdrums
  • 3 hanging toms
  • 1 floor tom
  • 1 snare
  • 1 hihat
  • 2 crash cymbals
  • 2 ride cymbals
  • 1 china cymbal

This should be considered a metal or rock kit.

2.4 The Aasimonster

The Aasimonster is a large deathmetal drumkit used to track the “Rise of the Rotten” record by the Danish deathmetal band DIE http://www.executionroom.com. Converted to 2.0 format by user Chaot4.

It contains the following components:

  • 2 kickdrums
  • 3 hanging toms
  • 1 floor tom
  • 2 16“ crash cymbals
  • 1 18” china cymbal
  • 2 small china cymbals (Stagg 8“ and 10”)
  • 1 Zilbel
  • 1 Ride cymbal.

2.5 ShittyKit

Author is Sardonicus (sardonicus [at] free.fr) And its description of ShittyKit is as follows:

Hello world! This is an eight channel drumgizmo bank of a brand new 5th hand Stagg Gia serie drumkit (kick 18, Snare 14×5, Tom 12, Floor 14, along with pure finest cast-iron time tarnished genuine Pont-à-Mousson/saint-gobain cymbal kit. Captured throught a saffire pro 40 with Beta52a, I5, D2 x2, MK105 matched pair as overheads and M/S coupled EM800 with tweaked RB500 (with fethead triton) as room. No processing, just a time adjustment between close mikes and overhead. M/S room couple is unprocessed (though it may be clever to reverse the stereo or play it in mono. Dunno…) because that’s what they were made for: Distants… And witches are made of wood, duh?

2.6 Sommerhack 2016-Kit

This percussive kit was made in-situ at the Sommerhack 2016 hacker camp in Denmark.

Instruments:

  • Hand clap
  • Slapped chair
  • Large wooden log
  • Small glass hit with a spoon
  • Camera shutter
  • Metal coffee mug
  • Finger snap

The above kits can be downloaded from wiki of drumgizmo or directly from storage which paid off for me as some of the wiki links didn’t work.

2.7 SM MegaReaper Drumkit

Michael Osvald created these kit from free drum samples in wav format. He described the creation in a post on his blog. The correct download link is a little difficult to find in the subsequent discussion, so they will put it right here.

2.8 Salamander DrumKit

Michael Osvald created these kit from free drum samples in wav format. He described the creation in a post on his blog. The correct download link is a little difficult to find in the subsequent discussion, so they will put it right here.

The Salamander DrumKit and SM MegaReaper Drumkit have the same source.

2.9 JazzFunk DrumKit

This drumkit is orangetree samples conversion for drumgizmo. The xml files are in discussion. Audio samples are taken from orangetreesamples.com. Or use direct link.

This drumkit was the only one I couldn’t get working.

2.10 Tchackpoum DrumKit

James Peters make free acoustic drum bank for DrumGizmo, 1.7 GB, from sasmples on https://www.tchackpoum.fr/ You can read more details here Free acoustic drum bank for DrumGizmo, 1.7 GB, round robin - Cockos Incorporated Forums

James Peters describes this kit as:

I think it’s well suited to rock, blues, metal, and so on. It’s probably not the best for jazz due to the lack of jazz-type articulations (no brushes used instead of sticks, etc.) It’ll probably take some EQ and compression to sculpt it just right. This is about as raw sounding as it gets; it’s good sounding, but raw. It’s a very good starting point for using reasonable amounts of EQ/compression any mixing engineer would have to do on a good neutral recording of real acoustic drums.

Downloads are located here: thackpoum_drumgizmo thackpoum_documentation

3 Zynthian and presets of DrumKits

3.1 Data organization

It is a good idea to prepare a directory with individual drumkits on your PC. My favorite Drumkit is in zynthian-my-data-for-clear-installation/files/drumgizmo/CrocellKit. Each of the sounds has its own sub-array, so you can find a snare or a snare rim shot. In these subdirectories there are samples in the form of wav files and an xml file describing individual levels of the force of hitting a given drum.

Example for kick drum right to weakest hit strength:

 <sample name="KDrumR-1" power="0.00833794">
   <audiofile channel="AmbLeft" file="samples/1-KDrumR.wav" filechannel="1"/>
   <audiofile channel="AmbRight" file="samples/1-KDrumR.wav" filechannel="2"/>
   <audiofile channel="FTom1" file="samples/1-KDrumR.wav" filechannel="3"/>
   <audiofile channel="FTom2" file="samples/1-KDrumR.wav" filechannel="4"/>
   <audiofile channel="Hihat" file="samples/1-KDrumR.wav" filechannel="5"/>
   <audiofile channel="KDrumInside" file="samples/1-KDrumR.wav" filechannel="6"/>
   <audiofile channel="KDrumOutside" file="samples/1-KDrumR.wav" filechannel="7"/>
   <audiofile channel="OHCenter" file="samples/1-KDrumR.wav" filechannel="8"/>
   <audiofile channel="OHLeft" file="samples/1-KDrumR.wav" filechannel="9"/>
   <audiofile channel="OHRight" file="samples/1-KDrumR.wav" filechannel="10"/>
   <audiofile channel="Ride" file="samples/1-KDrumR.wav" filechannel="11"/>
   <audiofile channel="SnareBottom" file="samples/1-KDrumR.wav" filechannel="12"/>
   <audiofile channel="SnareTop" file="samples/1-KDrumR.wav" filechannel="13"/>
   <audiofile channel="Tom1" file="samples/1-KDrumR.wav" filechannel="14"/>
   <audiofile channel="Tom2" file="samples/1-KDrumR.wav" filechannel="15"/>
 </sample>


From this we read that there are 15 sound tracks corresponding to the positions of the microphones around the entire drum set.

To create a preset, we will always need a pair of files. One describing the set of drums, in the case of CrocellKit they are called e.g. CrocellKit_full.xml and similar. They define the instruments to be sampled. The number of instruments affects the time it takes to load samples into memory. the times are long and I list them below. The second type of xlm files are files describing mapping, i.e. assigning instruments to notes.

Example from Midimap_full.xlm

 <midimap>
   <map note="54" instr="ChinaL"/>
   <map note="52" instr="ChinaR"/>
   <map note="49" instr="CrashL"/>
   <map note="56" instr="CrashLStopped"/>
   <map note="57" instr="CrashR"/>
   <map note="75" instr="CrashRStopped"/>
   <map note="59" instr="CrashRXtra"/>
   <map note="42" instr="HihatClosed"/>
   <map note="80" instr="HihatSemiOpen"/>
   <map note="46" instr="HihatOpen"/>
   <map note="78" instr="HihatClosedNoPedal"/>
   <map note="44" instr="HihatPedal"/>
   <map note="73" instr="HihatPedalHit"/>
   <map note="35" instr="KDrumL"/>
   <map note="36" instr="KDrumR"/>
   <map note="55" instr="SplashL"/>
   <map note="58" instr="SplashR"/>
   <map note="51" instr="RideR"/>
   <map note="53" instr="RideRBell"/>
   <map note="38" instr="Snare"/>
   <map note="37" instr="SnareRim"/>
   <map note="40" instr="SnareRimShot"/>
   <map note="39" instr="SnareRest"/>
   <map note="48" instr="Tom1"/>
   <map note="47" instr="Tom2"/>
   <map note="43" instr="FTom1"/>
   <map note="41" instr="FTom2"/>
 </midimap>

Usually, in file names, the second word joins the correct pairs. For CrocellKit, the correct pair is CrocellKit_full.xml and Midimap_full.xlm. The creation of these files is described in detail in the DrumGizmo project wiki.

3.2 Transfer DrumKit files to Zynthian

For our example, the data from the directory zynthian-my-data-for-clear-installation/files/drumgizmo/CrocellKit needs to get into Zynthian. More precisely, to the directory /home/pi/zynthian-my-data/files/drumgizmo/CrocellKit. I used my favorite FileZilla. You can use other program allowing sftp transfer or ssh scp combination.

Transfer files to Zynthian

3.3 Creating a preset

  • Make sure you have the option to show DrumGizmo LV2 plugin Engine in webconf enabled. Go to the menu SOFTWARE / LV2-Plugins check and choose DrumGizmo. The selection must be confirmed by clicking the SAVE button at the bottom of the page.
  • Make sure you have VNC enabled on Zynthian. If not, then Turn on VNC connection in webconf - select Interface / User Interface / check Enable VNC server. Restart webconf (F5)
  • Create a channel with the DrumGizmo engine.
Fig-add-midi-synth.png
Fig-drumgizmo-ui-01.png
  • Choose the midi channel according to your need.

Since there are no presets, you get directly into the DrumGizma UI, which is not extensive, see images.

Fig-drumgizmo-settings-1.png
Fig-drumgizmo-settings-2.png

It is necessary to get into the GUI LV2 of the DrumGizmo plugin.

  • In webconf go to a menu Interface / VNC - Engines -> this open new window with connection to the Synth Engine Native GUIs. Clik on Connect and fill password raspberry and push enter key.
Fig-drumgizmo-GUI-01.png

To create presets, we will need the upper left part of the GUI. In detail in fig.

Fig-drumgizmo-GUI-Drumkit.png

First, you can use the Browse button to select the Drumkit File. In our case to the file /home/pi/zynthian-my-data/files/drumgizmo/CrocellKit/CrocellKit_full.xml. The window for selection is a bit specific, all movement is confirmed by clicking the Select button

Fig-drumgizmo-GUI-select-kit.png

Next we will make a choice for Midimap File. So we enter /home/pi/zynthian-my-data/files/drumgizmo/CrocellKit/Midimap_full.xlm.

Fig-drumgizmo-GUI-select-maps.png

Since it takes a long time to upload the samples, you will probably end up in the following state:

Fig-drumgizmo-kit-loading.png

If everything goes correctly, the final state is as follows:

Fig-drumgizmo-kit-loaded-OK.png

From now on, DrumGizmo will be drumming for you.

There is nothing left to do but save the preset. Selecting Preset from the DrumGizmo GUI window menu will do this for us. Store the presets in the directory /zynthian/zynthian-my-data/presets/lv2 , so it is ensured that Zynthian can find them.

Fig-drumgizmo-GUI-save-preset.png

It is good to prepare several presets like this, because the last step is the longest.

  • You have to within web browser, navigate to webconf SOFTWARE->LV2 Plugins. Click “Search for new Plugins & Presets” button. Wait, take a cafe, a few minutes and Zynthian must restart automatically.
Find-presets.png

After this you will have saved presets available in Zynthian UI.

Drum-gizmo-select-preset.png

4 Native GUI and User experience

If you decide to upload all DrumKits, prepare a 64GB SSD card.

As far as I understand, DrumGizmo was originally created to convert midi notes to a wav file from the command line. On the DrumGizmo wiki you will find a section dedicated to DrumGizmo-CLI that can do this. In the case of Zynthian, we go against this idea and make it a real-time midi signal processing. Because of this, the use of DrumGizmo has certain limitations.

Uploading created presets is very long. It takes a long time for all the samples to load, so don't send any midi notes to DrumGizm during that time. At best, you'll hear a horrible squeal, at worst, you'll block DrumGizmo.

I measured the loading of the preset, I measured it directly in the GUI, so the actual times when the budter uploads the preset in the standard UI of Zynthian will be longer. Here are my measurement results for full kits.

 Aasimonster2 - 1 min 04 s
 Crocell Kit - 1 min 02 s
 DRS Kit - 53 s
 Muldjord Kit3 - 1 min 01 s
 Salamander Kit - 12 s
 Shitty Kit - 25 s
 SM Mega Reaper Kit - 37 s
 Sommerhack Kit - 2 s
 Tchackpoum - 36 s

DrumGizmo is a sampler synth with very large files, this means that if you have a lot of punch, more precisely their high frequency, or different drum sounds at one time, I can jump xruns at a speed like the kicks of a speedmetalist. There are ways to customize DrumGizmo to track in real time.

Fig-drumgizmo-kit-resampling-off.png

If we look at this section of Drumgizma, we can influence Resampling. If you have the same samplerate sound card and drumkit samplerate, then turn off this section, as shown in the picture. If your sound card allows it, adapt its samplerate and you don't have to use resampling.

I found the most affecting option in the Voice limit section. By reducing the number of voice and also reducing the ramdown time, you can achieve the disappearance of possible XRUNs. You always work for the instrument. Voices playing e.g. snare are muted only by another snare, not e.g. kick drum.

By turning on Bleed Control, you can influence how the Master Bleed Volume will affect the resulting signal. Here I recommend everyone to try what suits them. I keep this option turned off for now.

Other choices concern the so-called Humanizer playing of Drums. Users using more complex hardware drivers that have some humanization of the midi signal could disable these options.

Fig-drumgizmo-humanize.png

The Velocity Humanizer section affects the power of the punch. pAttack defines how quickly the attack force is reduced when playing fast strikes on the same instrument. Lower values result in faster velocity reduction. pRelease defines how quickly the drummer regains the velocity when there are spaces between the notes. Lower values result in faster regain. pStDev determines the standard-deviation for sample selection. Higher value makes it more like that a sample further away from the input velocity will be played.

Better not turn on the Timing Humanizer section when playing in real-time. Turning it on delays the signal as the DrumGizmo moves the beat forward and backward relative to the exact position of the beat. The pTighness value determines the amount of displacement relative to the exact position of the note. The higher its donot, the smaller the drift. pTimingRegain determines how quickly the drummer will sync back to the perfect metronome. At higher values, this will happen faster. Depending on the value of pLaidback, a fixed delay in ms is added or subtracted to all notes. Positive values lead the beat.

The Sample section affects the selection of samples. How close the sample should be to the current midi value after humanization is indicated by the pClose values. Selection of samples that have not been played recently is determined by pDiversity. pRandom defines the amount of randomness.

Fig-drumgizmo-visualizer.png

The Visualizer shows the velocity and time shift towards the optimal position.

The last section defines the recalculation of the incoming velocity according to the user.