MultiSampleGenerator

MultiSampleGenerator is a cool tool available within MDrummer, which speeds up the conversion of acoustic drum/percussion sample recordings into the efficient multisample file format used within MDrummer.

You feed it a WAV track recorded from each microphone, it will cut it into separate samples, group those samples into velocity layers and compress them into our efficient multisample file format used within MDrummer.

The easiest way to start using it is to download our testing Ludwig Supraphonic snare tracks and use it via Menu / MultiSample generator in MDrummer.

Inside the ZIP archive you will find an entire folder structure with a definition.xml file and a folder of 6 tracks recorded from different mics. The definition.xml file applies to every folder of every level inside it and defines which tracks you have, what the default volume/panorama/parameter values are for each and the 4 mixes used by the XY (Multitrack Color) pad in MultiSampler.

You can have as many folders as you need if there are multiple articulations for example, or multiple drums with the same definition. In MultiSampleGenerator you simply locate the folder with the WAV recordings and follow the instructions.

The definition XML file

Let's consider the definition XML first:

<definition>
  <track name="Top 1" pan="0.0" volume="1.0" mono="1" />
  <track name="Top 2" pan="0.0" volume="1.0" mono="1" />
  <track name="Bottom" pan="0.0" volume="1.0" mono="1" />
  <track name="Overhead 1" pan="0.0" volume="1.0" type="1" />
  <track name="Overhead 2" pan="0.0" volume="1.0" type="1" />
  <track name="Room" pan="0.0" volume="1.0" type="2" />

  <mix00
  	name="Tight"
    volumeTop1="1.0" volumeTop2="0.0" volumeBottom="0.0"
    volumeOverhead1="0.0" volumeOverhead2="0.0" volumeRoom="0.0"
  />

  <mix01
  	name="Full"
    volumeTop1="0.0" volumeTop2="1.0" volumeBottom="1.0"
    volumeOverhead1="0.0" volumeOverhead2="0.0" volumeRoom="0.0"
  />

  <mix10
  	name="Overhead"
    volumeTop1="0.0" volumeTop2="0.0" volumeBottom="0.0"
    volumeOverhead1="1.0" volumeOverhead2="1.0" volumeRoom="0.0"
  />

  <mix11
  	name="Room"
    volumeTop1="0.0" volumeTop2="0.0" volumeBottom="0.0"
    volumeOverhead1="0.0" volumeOverhead2="0.0" volumeRoom="1.0"
  />
</definition>

As you can see it's just a simple text file. It says there are 3 mono tracks Top 1, Top 2 and Bottom, all panned to the centre with full volume. Then there are 2 stereo overheads and 1 stereo room mike. The type attribute equals 0 by default, 1 indicates overhead recordings, and 2 indicates room recordings.

The track definitions are followed by 4 mix definitions describing the behaviour of the XY (Multitrack Color) pad in MultiSampler. Each has a name and volume settings for each of the 6 tracks.

That's all!

How does it work?

Step 1 - Sample detection

First, navigate to the folder containing the recordings (…/MMultiSampleGenerator_test_data/14x5 Ludwig Supraphonic/Hit center in this example) and the generator loads all the WAV files (they need to fit into the memory available), loads the definition to understand the structure and step 1 begins. The available tracks are listed in the right-hand panel.

Step cuts the tracks into rough samples, based on the parameter values. All you need to do is to set the parameters properly and usually the defaults will do the trick. Then just click the Process button in the first panel and let the generator detect all the samples.

Step 2 - Minimization

The second step is a bit more involved. Here you can remove bad samples, group the samples into velocity layers (groups) and remove the beginning/ending of the samples, so that each starts instantly and isn't longer than needed.

At the top there's a grouping panel which you will probably use first and at the bottom there's a listbox showing all the samples with the same group-based color coding. Selecting a sample will show its waveform in the 2 sample viewers on the right.

Why are there 2 of them? Because you will probably leave one zoomed out to see the entire waveform, where you can check that it's long enough and there are no weird noises in it. And the second one can be used zoomed to the beginning, so that you can check the initial transient.

Grouping panel

So first the grouping panel. It neatly shows all samples as vertical lines grouped using colours to distinguish the groups. The horizontal axis indicates the samples’ RMS levels, the further to the right the louder the sample. Each group / color represents a single velocity layer.

On the left there are a few knobs, if you adjust them, the generator will automatically detect layers based on these settings. The basic idea is that samples in a group should be similar in loudness.

Unfortunately the chances that a drummer recording them will produce distinct consistent velocity layers are pretty slim, so you will probably need to edit the assignment of the individual samples to the groups manually as well.

Available Samples list

At the bottom there is an Available samples listbox, with a check-box next to each sample. The samples are coloured and sorted the same way as in the view in the grouping panel. If a sample has check-box enabled, it is considered "good" and will be used.

You can just use your keyboard arrows keys to browse through the list and use spacebar to toggle each check-box manually, but here's a handy automatic tool as well - there are again a few knobs which control "sample qualification".

The idea is that samples in each group should be pretty similar. Whenever you touch these knobs, they will change the check-boxes for all samples or samples in the selected group. The generator uses various clues from level envelope to spectrum to calculate the similarity of the samples.

Play and Group buttons

Which brings us to the buttons above the Available Samples panel- these allow you to play the selected sample, all samples in the selected group, create a new group from selection etc. All of these have handy keyboard shortcuts, check them out. It will speed up your workflow tremendously. The aim is that here you can actually listen to how the drum will sound in MDrummer.

Note that all tracks are mixed 1:1 (or you can audition just a single track). By listening to separate samples you can check they are "good", no weird noises, drummer coughing, etc. By listening to the entire group you can check that it contains only similar-sounding samples and that there are enough of them to mitigate any machine gun effect.

When you have completed this, you should have nicely selected groups (velocity layers) with only good samples.

You may want to check the parameters in this panel, in particular the minimization start/end volumes, which basically define when the sample should really start and end. There may be some bass pedal noises etc. at the beginning you don't want. And when it comes to the end of each sample, the longer it is, the more memory and CPU will be needed to play them, so the shorter the better, but not too short.

Also be careful that you can NOT access each individual sample in the MultiSampler, so the start needs to be similar in each sample, otherwise it will sound like you have a very bad drummer, who cannot even play 16th notes!

All done? Click the Process button in this panel.

Step 3 - Compilation

No worries, the hard part is over. Just select the output name and folder path and click Compile. The samples are stored as a .mdMultiSample file

What if you decide later that you want to change something?

Every time you click any of the Process/Compile buttons, the current state is saved. So, it's really simple, just point the generator to the same track path as before and it will load the original settings as well. If you haven’t deleted the intermediary samples, you won't even need to perform all steps. If you did all 3 steps before, then open the generator again and select the same track folder, you can just continue from step 2 for example.

There's a "Delete temporary files" button in the title bar. It lets you delete all intermediary samples and other resources that the generator produces, since these can require lots of disk space. But even then the entire settings including grouping etc. are stored in a file (state.state) in the recordings folder, so next time you open the generator, you can just select the same track path, do all steps one by one and after each you can continue where you left off last time.

All done!

After all this you will have a handful of multisample files, which you can easily use in MDrummer, create packs from them etc. Good luck creating your own acoustic drums and other percussive instruments!