samantha is a good listener.
lots of wonderful scripts require pre-recorded samples to function. samantha is a quantization-heavy sampler aimed to keep your entire workflow on norns by making it easier to create instantly-usable samples. it’s hacked together off of @Justmat’s sam (get it?); i started to add the features i wanted and then quickly realized i should probably just fork the whole darn thing. so here we are.
- optionally start recording your sample automatically when a set input amplitude is reached, a la the OP-1’s sampler.
- optionally automatically stop recording once a set length is reached.
- automatically or manually trim your sample in quantized amounts based on norns clock BPM.
- load and trim existing samples.
- end a sample name in “…-1” (or greater) to automatically increment the next suggested sample name ("…-2").
- clean up! it’s so dirty in here. but i figured i should share for input sooner rather than later. lots of refactoring to do, would love input on best practices.
- figure out why the softcut buffer is distorted and doesn’t match monitoring—would love some help with this.
- start recording sooner when input amplitude is reached—would appreciate input here too. maybe start recording as soon as you arm and then retroactively crop the sample to just before the input threshold was reached?
- buuuug fixes. stability. right now it seems like things can get weird if you try to interact with samantha too soon when she’s first getting started.
- UI polish.
this is my first proper attempt at scripting, so i would love feedback (or PRs if anyone is so inclined!). i hope someone finds this useful, especially once i get it into a very stable state.
norns & an audio source to sample!
K1 (Hold): alt
K2: record/stop recording
K3: pause/play loop (if material recorded)
alt + K2: arm for automatic recording when input threshold is met
alt + K3: save loop (if material recorded)
E1: quantization (off, 1, 1/2, 1/4, 1/8, 1/16, 1/32)
E2: shift loop start
E3: shift loop end
alt + E1: bpm
alt + E2: input threshold (amplitude), can be seen on left of screen
alt + E3: automatic length (off, 1/2 bar, 1, 2, 4, 6, 8), can be seen on right of screen
Brilliant, I can see it being so useful. Thanks for this
Nice! This is sorely needed imo. I build a similar script but didnt polish it to a releasable state. Plus I used sox which isnt very shareable :). If you want some input on a feature give me a shout. this was the code I had hacked together: capture/app.lua at master · dansimco/capture · GitHub
nice work! can’t wait to check it out
This looks so fabulous! I’ve not got Norns at the moment (waiting patiently for the next OG restock and my shield is loaned out) but this might fulfil my dream of doing everything within norns for music making while travelling.
Can tape be used as input? I can’t remember how the routing works with tape and softcut (and seem to remember this might have changed at some point). Ideally I’d like to be able to create material using something like Plonky then chop it using Samantha for later reworking in Cheat Codes. That kind of thing
EDIT: oh, and can it take a sample as input as opposed to just live audio? So, if another script produces a file, could Samantha then trim it?
Can tape be used as input?
just kidding! can’t do that.
oh, and can it take a sample as input as opposed to just live audio?
can do this though! loads files just like og sam.
@dansimco thank you! this could definitely be helpful, i’ll reach out if i have any specific questions.
likely incoming changes:
- enc1 = nudge both start & stop together in small unquantized increments (0.01s)
- alt + enc1 = adjust quantize division
- this means bpm no longer directly editable (can still change in params => clock). should be ok, don’t imagine it being changed too often during a sampling session for most purposes.
- fix whatever is up with softcut buffer distortion—any ideas here anyone?
- more fun playing animation
no, not directly. of course you can just load a tape file to the softcut buffer instead.
i haven’t tried yet, but i did notice that you are mixing both ADC channels at full volume to softcut’s voice 1 input. whereas the monitor path in “mono” mode applies attenuation of 0.5 to each channel before mixing. to avoid clipping.
ah, helpful! thank you. how would i pipe the monitor path into my buffer?
you wouldn’t. i mean try changing the amplitudes at which you’re summing the softcut’s input channels to the voice 1 input in your script, here:
samantha/samantha.lua at main · benzweig/samantha · GitHub
0.5, if you want it to match the monitor levels in mono mode.
also you have the engine->softcut level turned up, which i don’t think is doing anything but shouldn’t be necessary
other stuff like filter levels should be OK at reset defaults, but that’s something i’d double check
again these are just quick ideas, i haven’t sat down and tried the script sorry