32 voices OSC Sampler for ORCA
removes wip printf from sampler code
add _ms to some parameters names
tweaks operator again


browse  log 



You can also use your local clone with git send-email.


folderkit is an OSC-controlled sampler i use together with Orca. The current version still needs some optimization and cleaning, but it's pretty usable. I still have to write a proper documentation, sorry.


At the moment i'm working on debian, but you should be able to build it on any *nix that have the required libraries (jack, liblo and a single precision fftw3).

sudo apt-get install liblo-dev libjack-dev libfftw3-dev libfftw3-single3 
git clone https://git.sr.ht/~npisanti/folderkit/
cd folderkit 

the folderkit executable will be created in the folderkit/bin folder

Basic Usage

folderkit [port] [folder]

folderkit will receive OSC messages form orca at the given [port].

folderkit will search for wavs in the given [folder], that should be grouped into "folders" and "subfolders" using the orca letters ( lowercase ) for example:

├── a
│   └── 0
│       ├── -12.dB
│       ├── hit_a_01.wav
│       ├── hit_a_02.wav
│       ├── hit_a_03.wav
│       └── hit_a_04.wav
├── b
│   ├── x
│   │   └── frog_guiro_B_01.wav
│   ├── y
│   │   └── frog_hit_A_01.wav
│   └── z
│       └── hi_01.wav
└── ir
    ├── -36.dB
    ├── kingtubby-fl1a.wav
    └── kingtubby-fl1b.wav

sending an OSC message from orca will trigger one of the 32 folderkit voices, the first two arguments will be "folder" and "subfolder" so in orca


will trigger the sample frog_guiro_B_01.wav.

If no subfolder is given, folder 0 is searched, and if there are more .wav samples a random sample is choosen (repetition of the same sample is avoided) so


will trigger one of the samples in the ./a/0 folder.

Putting a .dB file into a folder will the parse the filename value and use it to scale the gain of the folder's samples (the .dB file can be empty). In our example, the gain of all the files in the ./a/0 would be lowered by 12 dB.

Only the OSC address from /0 to /v are valid folderkit voices, and the /x, /y and /z address are used for tuning (see later). Each voice can have just one sample active at time, the old sample tail will be choked when a voice is retriggered.

Playback of samples with names starting with the letters loop or LOOP, for example loop_choir.wav, will be looped. To stop the playback you will need to choke the voice with another sample or with a non existing folder of subfolder letter.

More arguments

The first five arguments are:

- folder
- subfolder
- start position (in 32th of the sample length)
- transpose 
- pan (1-9, 5 or 0 is center)

IR folder

The file in the /ir folder are loaded as impulse responses of the master IR reverb. You can scale the reverb send with a .dB file.

Even more arguments:

This is still to document, the full list of arguments is

- folder
- subfolder
- start position (in 32th of the sample length)
- transpose 
- pan 
- amp env attack (1-g) or  hold (h-x)
- amp env release 
- fx select
- fx param 1
- fx param 2 
- fx param 3
- fx param 4
- mod env attack (1-g) or  hold (h-x)
- mod env release 


Documentation still TODO.


The x y and z osc addresses are used for microtonal tuning, documentation is still TODO.

Thanks to

  • Hundred Rabbits and cancel for making the ORCA c version.
  • Andre Weissflog for sokol time header lib
  • David Reid for dr_wav
  • Mattias Gustavsson for rnd.h
  • Randy Gaul for cute_files


Nicola Pisanti, MIT License 2020