SuperCollider drumsample generator

Nikolaus Gradwohl2018-02-10T10:08:46+00:00

I noticed that my Volca Sample in my homestudio din't quite get the attantion and love it deserved so I desided to create a new sample pack for it. I wanted some fresh electronic samples so I wrote some SuperCollider scripts to create random drum Samples. I created a script for bassdrum, snare, hihats, clap, crash, tom and a metallic 'ding' sound - which I named 'Ding' because I could not come up with a more clever name. Each of the script generates 64 samples. I then chose 100 and organized them into sound banks and uploaded them to my Volca Sample.

Samples 00 to 19 are bass drums, 20 to 29 are clap samples, 30 to 39 is a crash, 40 to 49 is 'ding', 50 to 69 is closed and open hihats, 70 to 89 are snares and 90 to 99 are my tom samples. I'm not 100% satisfied by the ordering yet maybe I move the snare samples after the bassdrums and the hihats to the end of the list - the current ordering is created mainly for alphabetical reasons :-) but I really like the organisation in banks of 10.

To simplify things further I also created 10 empty patterns - the first one places bd-00 on slot 1, bd-10 on slot 2, sn-70 on slot 3, sn-80 on slot 4, ...

the second pattern places bd-01 on slot 1, bd-11 on slot 2, sn-71 on slot 3, sn-81 on slot 4, ... and so on. This way I can switch between the drumkits pretty fast. Since I mainly use my volca sample as a midi device, I usually don't need the patterns for anything else.

click here to listen to a track I made using this samples

If you want to create your own set of samples here are the supercollider scripts I used with a short description. If you create something nice with them please share a link in the comments.

Bassdrum

For the Bassdrum I combined a short noise burst with a bandpass filter sweep and a Sinewave with a linear pitch envelope.

SynthDef.new("bd", {
    arg  n=0.8, nl = 0.02, start=110, end=1, l1=0.1, l2=0.3, exp=1.7;
    var boom;
    e = pow(Line.ar(0.9,0,l2),exp);

    boom = BBandPass.ar(WhiteNoise.ar(),freq:Line.ar(100,10,nl))*Line.ar(1,0,nl)*n+
    SinOsc.ar(Line.ar(start, end, l1))*e;
    Out.ar(0,[boom,boom])

}).add;

{
    64.do{
        Synth.new("bd", ["n":rrand(0.8,0),"nl",rrand(0.03,0), "start",rrand(100.0,50.0),"end",rrand(100,10), "l1", rrand(0.1,0), "l2", rrand(0.8,0.1),"exp", rrand(1,4)]);
        1.6.wait;
    }
}.fork()
read more ...

SFZ to Multisample converter

Nikolaus Gradwohl2014-11-06T06:11:40+00:00

I have a lot of sfz samples on my harddisk but unfortunately the only sample format the internal sampler from bitwig studio can use is the built in multisample format. I played a bit with the fileformat and found that it´s a zip-container with all the wav-files and a xml file that describes how to map the samples to keyboard regions. Thats very similar to the structure of a sfz sample so I wrote a simple converter script in java that can be used to convert sfz to multisamples.

The program is far from perfect and I consider it more as a prototype than a final program - so be warned. I also haven´t implemented more advanced features like velocity zones or groups yet.

You can download the sourcecode from my github repository at

https://github.com/ngradwohl/bitwig_scripts/tree/master/sfz2multisample

or a compiled version here: Sfz2Multisample-1.0-SNAPSHOT.jar

to use it open a terminal and start the program with the filename of the sfz file as a parameter

java -jar Sfz2Multisample-1.0-SNAPSHOT.jar sfzfilename.sfz

the program then creates a multisample with the same name.

sfz 2 multisample

UPDATE:

I made a new version of the sfz2multisample tool! see the new SFZ2Multisample Project Page for more info