I'd suggest looking at using the free Aria Player (the same one used by the Garritan Libraries) as the sampler. The Aria Player uses a fairly simple file format called .sfz, which is plain text. That means you'd use a "plain text" editor like Notepad or Notepad++ to create and edit the file.

You can build a .sfz file that describes how you want your samples to be mapped, and then load the Aria Player into BiaB, and import your custom .sfz instrument.

Google is your friend, but here's a link to an example kit. Here's an explanation of a group from the file:

<group> loop_mode=one_shot lokey=41 hikey=41 pitch_keycenter=41 group=1 off_by=1
<region> lovel=000 hivel=030 sample=samples\hihat - closed side - 1.wav
<region> lovel=031 hivel=060 sample=samples\hihat - closed side - 2.wav
<region> lovel=061 hivel=090 sample=samples\hihat - closed side - 3.wav
<region> lovel=091 hivel=110 sample=samples\hihat - closed side - 4.wav
<region> lovel=111 hivel=127 sample=samples\hihat - closed side - 5.wav


The <group> indicates that all the <region> tags that follow belong to it. A quick explanation of the opcodes associated with the group:

  • loop_mode indicates if the sample should loop or not. one_shot means it triggers once and stops, so there's no looping.
  • lokey indicates the lowest MIDI key that will trigger the group.
  • hikey indicates the highest MIDI key that will trigger the group.
  • pitch_keycenter tells how to transpose the sample. In this case, the trigger MIDI key is the same as the key center, so that sample will not be transposed.
  • group is the group number associated with the samples.
  • off_by indicates that if the indicated group number is triggered, if a sample is currently played, it will be turned off.

In short - the samples in the <region> are triggered by MIDI notes from the low note 41 to the high note 41. That means... note 41. smile Since note 41 is the "note center" of the sample, the sample sample will not be transposed.

Re-triggering the group will turn off any sample being played by the group.

The opcodes associated with the <region> are:

  • lowvel indicates the lowest MIDI velocity (0..127) that will trigger the sample.
  • hivel indicates the highest MIDI velocity (0..127) that will trigger the sample.
  • sample indicates the path relative to the .sfz file where the sample is.

Basically, there are 5 different samples associated with the region, each triggered by a different velocity.

The example file I pointed to does some other fancy stuff, such as:

<group> loop_mode=one_shot lokey=11 hikey=11 pitch_keycenter=11
<region> lovel=000 hivel=040 seq_position=1 seq_length=2 sample=samples\kick - snares off - 1.wav
<region> lovel=000 hivel=040 seq_position=2 seq_length=2 sample=samples\kick - snares off - 2.wav
<region> lovel=041 hivel=080 seq_position=1 seq_length=2 sample=samples\kick - snares off - 2.wav
<region> lovel=041 hivel=080 seq_position=2 seq_length=2 sample=samples\kick - snares off - 1.wav
<region> lovel=081 hivel=100 seq_position=1 seq_length=2 sample=samples\kick - snares off - 3.wav
<region> lovel=081 hivel=100 seq_position=2 seq_length=2 sample=samples\kick - snares off - 5.wav
<region> lovel=101 hivel=115 seq_position=1 seq_length=2 sample=samples\kick - snares off - 4.wav
<region> lovel=101 hivel=115 seq_position=2 seq_length=2 sample=samples\kick - snares off - 3.wav
<region> lovel=116 hivel=127 seq_position=1 seq_length=2 sample=samples\kick - snares off - 5.wav
<region> lovel=116 hivel=127 seq_position=2 seq_length=2 sample=samples\kick - snares off - 4.wav


This is like the prior example, but it introduces the seq_position, which allows triggering samples in a particular order, instead of the same sample again and again.

But... that's probably much more than you currently want or need. wink

If you only had a single sample per key, and didn't care about re-triggering, you would only need one <group> per MIDI key, and one <region> per <group>, like so:

<group> loop_mode=one_shot lokey=41 hikey=41 pitch_keycenter=41
<region> sample=samples\hihat - closed side - 1.wav


I generally place all my files in a folder located in the same directory as the .sfz file, with the same name as the .sfz file, like so:

<group> loop_mode=one_shot lokey=41 hikey=41 pitch_keycenter=41
<region> sample=my_cool_instrument\sample_1.wav


Just cut and past this portion for each sample (replacing the MIDI note number and sample file name), and you're done. Save the file with each change, and you can test it out on the fly with the Aria Player. The player automatically notices the file has been updated, so you don't have to re-load it as you edit it, just save the file.

To use it in BiaB, load the Aria Player in the Realtime VSTI Plugin Settings, and import your .sfz file into the Aria Player.

The end file might look something like this (yes, you can use note names instead of MIDI numbers):

<group> loop_mode=one_shot lokey=g#4 hikey=g#4 pitch_keycenter=g#4
<region> sample=samples\toe_stand.wav

<group> loop_mode=one_shot lokey=g4 hikey=g4 pitch_keycenter=g#
<region> sample=samples\touch.wav

<group> loop_mode=one_shot lokey=f#4 hikey=f#4 pitch_keycenter=f#4
<region> sample=samples\slam.wav

<group> loop_mode=one_shot lokey=f4 hikey=f4 pitch_keycenter=f4
<region> sample=samples\step.wav

<group> loop_mode=one_shot lokey=e4 hikey=e4 pitch_keycenter=e4
<region> sample=samples\brush.wav

<group> loop_mode=one_shot lokey=d#4 hikey=d#4 pitch_keycenter=d#4
<region> sample=samples\pullback.wav

<group> loop_mode=one_shot lokey=d4 hikey=d4 pitch_keycenter=d4
<region> sample=samples\spank.wav

<group> loop_mode=one_shot lokey=c#4 hikey=c#4 pitch_keycenter=c#4
<region> sample=samples\toe_click.wav

<group> loop_mode=one_shot lokey=c4 hikey=c4 pitch_keycenter=c4
<region> sample=samples\toe_tip.wav

<group> loop_mode=one_shot lokey=b3 hikey=b3 pitch_keycenter=b3
<region> sample=samples\toe.wav

<group> loop_mode=one_shot lokey=a#3 hikey=a#3 pitch_keycenter=a#3
<region> sample=samples\jump.wav

<group> loop_mode=one_shot lokey=a3 hikey=a3 pitch_keycenter=a3
<region> sample=samples\hop_leap.wavv

<group> loop_mode=one_shot lokey=g#3 hikey=g#3 pitch_keycenter=g#3
<region> sample=samples\heel_stand.wav

<group> loop_mode=one_shot lokey=g3 hikey=g3 pitch_keycenter=g3
<region> sample=samples\dig.wav

<group> loop_mode=one_shot lokey=f#3 hikey=f#3 pitch_keycenter=f#3
<region> sample=samples\heel_click.wav

<group> loop_mode=one_shot lokey=f3 hikey=f3 pitch_keycenter=f3
<region> sample=samples\heel.wav

<group> loop_mode=one_shot lokey=e3 hikey=e3 pitch_keycenter=e3
<region> sample=samples\heel_touch.wav

<group> loop_mode=one_shot lokey=d#3 hikey=d#3 pitch_keycenter=d#3
<region> sample=samples\chug.wav

<group> loop_mode=one_shot lokey=d3 hikey=d3 pitch_keycenter=d3
<region> sample=samples\scuff.wav

<group> loop_mode=one_shot lokey=c#3 hikey=c#3 pitch_keycenter=c#3
<region> sample=samples\clunk_outside.wav

<group> loop_mode=one_shot lokey=c3 hikey=c3 pitch_keycenter=c3
<region> sample=samples\clunk_inside.wav

Last edited by dcuny; 09/13/16 08:09 AM. Reason: Fixed formatting tags

-- David Cuny

My virtual singer development blog
Vocal control, you say. Never heard of it. Is that some kind of ProTools thing?

BiaB 2025 | Windows 11 | Reaper | Way too many VSTis.