Tricking BFD2 into using multi-mic samples - Tutorial
by, 07-26-2011 at 09:25 PM (2348 Views)
As most of you who use BFD2 know, this otherwise great piece of software is only able to use mono or stereo user samples, thus negating us the possibility of doing a direct/overhead/room/ambience/bleed (11 or 12 channels!) custom sample. There's no official way around it. When LSUTigh started this forum thread I knew I wanted to be able to use the samples we're sharing inside BFD2 without losing functionality. So I dug a bit and developed a method that works.
A few things I noticed:
So, a tipical (a tom, for instance) sample would have the following channels:
- The samples were divided into folders, one for each articulation, and were called master01.wav, master02.wav and so on, on increasing velocity order. Some kit pieces and articulations have quite a bit of velocity layers, and some have less. It doesn't seem to matter what numbers get used on the wav files, just the order.
- The kit piece is described by a XML file called Info.xml, which is a text file with special formatting that describes the kit piece and tells BFD2 how to use those samples.
- All samples are in an 11 or 12-channel wav file format (not standard).After digging this up, I realized that this is one of the key reasons BFD2 sounds so much like a real unprocessed kit. It IS pretty much a real unprocessed kit. OK, we don't have channels for tom mic bleed, hihat mic bleed and so on, but those get gated more often than not anyways. The beauty of the thing is that you can dial in the amount of bleed you want from the kit pieces into the snare and kick mics, and that gives you a flexibility that would involve side chaining compressors and gates and a lot of hand editing otherwise.
Channel 1: Overhead L
Channel 2: Overhead R
Channel 3: Room L (or Mid)
Channel 4: Room R (or Side)
Channel 5: Ambience L
Channel 6: Ambience R
Channel 7: Snare Top mic (used for bleed if not a snare)
Channel 8: Snare Top 2 (sometimes not present, used for bleed if not a snare)
Channel 9 (or 8): Snare Bottom (used for bleed if not a snare)
Channel 10 (or 9): Kick In (used for bleed if not a kick)
Channel 11 (or 10): Kick Out (used for bleed if not a kick)
Channel 12 (or 11): Direct (used for direct mic if not a snare or kick)
The order of these inside the wav file doesn't really matter since the "mics" are assigned inside the XML file.
Ok, so with this information in hand, all I needed was a way to join the wav files into one multi-channel file. Nuendo can have buses with as many channels as you want, but I don't have Nuendo, and loading all those files into the DAW just to render them to a wav file seems like a lot of work anyways. So I found a piece of software called interlx from this website that just does that (join wav files into a multi-channel wav file). To join all wav files from a given velocity layer I'd use something like this command line (this is for a Tom sample by the way):
interlx master11.wav ".\OH\Velocity 1\1.wav" ".\OH\Velocity 1\1.wav" ".\Room\Velocity 1\1.wav" 0 0 0 0 0 0 0 ".\Direct\Velocity 1\1.wav"
Translating, this means "create a file called master11.wav where the first channel is the audio from the ".\OH\Velocity 1\1.wav" file, the second is from the same file, the third is from the ".\Room\Velocity1\1.wav" file, channels 4 to 10 are empty and channel 11 is from the ".\Direct\Velocity 1\1.wav" file.
The "0"s are empty channels I needed to add to make this work. When I tried using only the channels that actually have information BFD didn't load my kit piece. In this case, I only had mono overhead and room mics, so I doubled the overhead files and later described the room setup as mid/side in the XML file. Since the "side" information is empy on the room mic and the overhead sides are the same, BFD won't output overheads and room as stereo, so widening the mics inside the software has no effect. With stereo recordings, just replace the "0"s with the corresponding file name and it works as it should.
I worked out an Excel sheet to build the command line parameters I needed for each articulation in bulk, so I'd only have to run a batch file for each articulation. LSUTigh's samples were divided into mic and velocity folders, and I used this to my advantage when building the wav files, so that velocity 1 sample 1 would come out as master11.wav, velocity 4 sample 7 would come out as master47.wav and so on. BFD2 then maps these to its velocity map and it works well enough.
Now we organize the samples into folders. BFD2 needs to see an "Audio" folder into which every kit piece resides, so I went ahead and created a folder called "BFD Samples" and an "Audio" folder to store these custom pieces. It works fine if you just create them inside the original BFD2 "Audio" folder, but I keep my custom samples separated so I can move them between computers. Inside this "Audio" folder, I then created a folder for each sample "set" LSUTigh provided us. I like to keep each sample set in its own folder like BFD2 does. Now, inside each set folder, we proceed to create folders for each kit piece (kick, snare, tom 1, tom 2, etc). This is where the XML and thumbnail files will reside. Finally, for each articulation (hit, rimshot, side stick, etc) we create another folder into which we load the corresponding "masterXX.wav" files.
The next step is creating the Info.xml file to describe the kit pieces. To do this, I copied one from an existing kit piece and edited it in notepad so that it looked like this:
This is fairly easy to understand. An important part is the VString name="kpi_class" string, as this will tell BFD what kind of kit piece this is, and another one is the VObjectArray name="articulation" part, which tells BFD how many and what are the available articulations and the name of the folder into which the samples for this articulation are. Note that every kit piece from BFD has a thumbnail named photo.tga, so that's what I used as well. Change the kpi_name, kpi_manufacturer and kpi_model strings to whatever you want to identify the kit pieces.Code:<root> <BFD2KitPieceInfo name="BFD2KitPieceInfo" info_path="E:\RR Drums\BFD\Audio\LSU Pushing Pandas Set\Pushing Pandas Tom 1" info_library="BFD1" info_photo="photo.tga" info_rating="3" kpi_is_metronome="false" kpi_snare_index_ok="true" kpi_text="Drum Type: High Tom" kpi_name="LSU Pushing Pandas Tom (high)"kpi_manufacturer="LSU" kpi_model="Pushing Pandas Tom (high)" kpi_room_midSideEnabled="true"> <VObjectArray name="audioChanInfo" count="11"> <BFD2AudioChanInfo chanName="OH Left" chanType="ambient" encoding="stereoLeft" micIndex="0" chanIndex="0" /> <BFD2AudioChanInfo chanName="OH Right" chanType="ambient" encoding="stereoRight" micIndex="1" chanIndex="1" /> <BFD2AudioChanInfo chanName="Room Mid" chanType="ambient" encoding="stereoMid" micIndex="0" chanIndex="2" /> <BFD2AudioChanInfo chanName="Room Side" chanType="ambient" encoding="stereoSide" micIndex="1" chanIndex="3" /> <BFD2AudioChanInfo chanName="Ambient Left" chanType="ambient" encoding="stereoLeft" micIndex="0" chanIndex="4" /> <BFD2AudioChanInfo chanName="Ambient Right" chanType="ambient" encoding="stereoRight" micIndex="1" chanIndex="5" /> <BFD2AudioChanInfo chanName="Snare Top 1" chanType="dirSnare" encoding="mono" micIndex="1" chanIndex="6" /> <BFD2AudioChanInfo chanName="Snare Bottom" chanType="dirSnare" encoding="mono" micIndex="0" chanIndex="7" /> <BFD2AudioChanInfo chanName="Kick In" chanType="dirKick" encoding="mono" micIndex="0" chanIndex="8" /> <BFD2AudioChanInfo chanName="Kick Out" chanType="dirKick" encoding="mono" micIndex="1" chanIndex="9" /> <BFD2AudioChanInfo chanName="Direct" chanType="dirOther" encoding="mono" micIndex="0" chanIndex="10" /> </VObjectArray> <VString name="kpi_class" string="Tom" /> <VObjectArray name="articulation" count="1"> <VString string="Hit"/> </VObjectArray> </BFD2KitPieceInfo> </root>
Now, we have to point BFD2 to the folder we saved our samples into if we haven't used the default one, then scan the folders for new files. This is accomplished by going into BFD2's Preferences page, selecting the"Data" tab, adding our custom folder (the one above "Audio") into the "Data Paths" list if necessary, and clicking "Scan data paths for new files". Now the kit pieces should be selectable and assignable. If you've changed the Info.xml file you'll need to "Trash and rebuild database" for it to be reloaded. I've had trouble with the "Search" field from the piece selection window, so if your kit piece doesn't show up where it's supposed to just clear this field and it should appear. I'm still working this out.
If everything worked, you can now use your custom samples mixed and matched with BFD2's as you would with regular mono/stereo samples, but now you can take advantage of its multitrack capabilities to sculpt your sound more easily. If this is too much work for you, you can always upload your samples to LSU's thread in the forum and I'll do it for you.
Edit: Apparently the overheads and ambience channels can't be mid/side, just L/R. Or I haven't found a way to make them work in mid/side. I'll keep updating this article with any new information I manage to gather.