I’m a sampler / midihub newbie so any suggestion would be appreciated, but basically what I’m doing is on a bitbox, I have few channels of drum samples, they are recorded from vst, long sliced samples containing multiple drum parts, each with 11 diffrerent velocity hits. What I’m getting at is instead of multi-sample a vst (which does work, but to me not as easy to manage compare to sliced long samples, and realtime vs exporting vst can be offlined), trigger sliced samples by redistributing an input note over an octave (hence 11 velocity hits per part) per their velocity.
pipe I need for this is either scripted remap (which I believe would be tricky to implement) or, 2d matrix remapper where x axis is velocity, y axis is note number, and table outputs midi channel / velocity / note number.
I’ve been using diy built sequencer with modified output section to do this, this is the re-destribution code I’ve been using.
if (port == UART2
&& (package.type == NoteOn || package.type == NoteOff)) {
// for bitbox sliced drum sampler.
// each note above C2 (36) should occupy it’s own octave
// and remapped across per it’s velocity, also
// trigger as a fixed velocity note. for easy conversion,
// map using min vel 17, max vel 127 so we get an octave (11 notes).
if (package.note >= 36 && package.note <= 51) {
switch (package.note) {
case 36:
package.chn = 0;
break;
case 37:
case 38:
case 39:
package.chn = 1;
package.note -= 1;
break;
case 40:
case 41:
case 42:
case 43:
package.chn = 2;
package.note -= 4;
break;
case 44:
case 45:
package.chn = 4;
package.note -= 8;
break;
case 46:
case 47:
package.chn = 3;
package.note -= 10;
break;
case 50:
case 51:
package.chn = 3;
package.note -= 12;
break;
case 48:
case 49:
package.chn = 5;
package.note -= 12;
break;
break;
}
package.note =
(u8)((36 + 12 * (package.note - 36))
+ (package.velocity >= 17
? ((package.velocity - 17) * 0.1)
: 0));
if (package.note > 127) package.note = 127;
package.velocity = 100;
}
}
Cheers,
Arnold