This script will slice any sample into 128 slices and loop all activated slices sequentially. A way of freeing yourself and your samples from typical sequencer timing.
Requirements
norns
grid (optional)
Documentation
Loading Samples:
Load your sample from the params menu. Make sure that your sample is long enough. The engine won’t play if your sample is too short because a short sample / 128 slices can potentially cause performance issues.
Navigating and Activating Slices:
Use E3 to select a slice.
Press K3 to activate the selected slice.
Playback Control:
Press K2 to start or stop playback.
Adjusting Slice Values:
Use E1 to navigate to the second page.
Use E2 to select a value and E3 to adjust it for the selected slice.
Pressing K3 resets all values for the current slice to their defaults.
Global Offset Value:
Navigate to the third page using E1.
Set a global offset value for all slices.
The value ranges from -100 to 100, with 0 indicating no offset.
Pressing K3 resets all offset values to 0.
Rotating Slice Values:
On the first page, use E2 to rotate all slice values to the neighbouring slice in the encoder’s direction.
Auto-Rotation:
Hold K1 and press K2 on the first page to initiate auto-rotation.
Auto-rotation speed is controlled by the CLOCK.
Pattern Change:
Hold K1 and turn E3 on the first page to adjust the pattern.
Values
atk: Attack phase len: Length lvl: Level rate: Playback rate in octaves rFreq: Speed of random panning rStart: Amount of random start position rEnd: Sets if rStart also should set a random end position (true = always, false = never, numbers = probability to be true) rPan: Amount of random panning rel: Release phase loop: Preserve slice length when rate changes (true = always, false = never, numbers = probability)
Is there a specific sample duration that is “too short” for this script?
Also: how difficult would it be to implement the support for zero / 256?
Seems perfect for this fresh crop of grids (even if the whole thing does not fit on the screen display.)
thank you for making this super lovely script @ljudvagg. i am having lots of fun exploring it and am so so grateful to you for coming to our little workshop in Stockholm.
Thanks you for all the kind words! This was supposed to be my super small one trick pony script to keep me busy in the beginning of the summer while I was job searching. Took me all summer
Too short would be less than a few milliseconds. It will post to crone if the sample is too short.
Engine is designed for any size and there’s a variable in the beginning of the script that will set the max number of slices which will create the number of params. You could try and change that to 256. I actually had it set to 256 but changed it just before release because 1. loading time 2. i don’t have the 256 for testing 3. felt weird with the screen being 128.
What would be the right approach here? Should the screen be changed to adjust to 64/128/256, and what would that look like? My guess is that it’s best to stay inside those sizes but during the development in supercollider I’ve changed to other sizes with interesting results. Activating some slices, changing values and then change the number of slices for a new set of start positions…
Another approach would be to have two sample players running together and have 2 screen pages for control. But I’m not sure on how much time it would take to get that to work. But multiple sample players is something I wanted to try…
I would also love to do some cleanup in the code. The project grew from a one week “is this idea any good lets write it fast” to something else.
My wish is for a habitus for every script I release. And don’t forget that you can’t have pizza salad without the pizza, that would be crazy
this is a lovely script @ljudvagg
it was just what I was looking for before diving into this. I wanted something to create a sort of randomness within the samples…almost made blueprint to code mine, but this suffices well enough. Thank you again for sharing.
It’s possible but I’m currently on a break from this script. But if I get back to it - would midi start/stop start/stop playback? Or also the auto-rotation? Or we can select what should be started/stopped in the params menu.
Thank you for creating this and sharing your process