Amen

amen

sampler and mangler of loops.

image

for my latest album I made a lot of breakbeats and some of those breakbeats were informed by norns scripts (like abacus, clcks, glitchlets, and beets). this latest script is a different take on those previous iterations by utilizing supercollider for loop mangling and softcut for loop sampling in the same script. supercollider provides a mostly seamless loop slicing engine by allowing crossfades when jumping within loops (preventing pops/clicks) as well as easily allowing lots of effects.

another aim of this script is to make sure things are pretty much always “in sync” / “on beat”. the loops are synced up with the norns internal tempo every loop (unless using an effect) and all the effects are queued up to occur on subdivided beats. loops loaded from disk are automatically re-pitched into the current tempo as long as their name contains bpmX where X is the original bpm of the file.

a final aim is that this script can be easily merged with other scripts to serve as a drum backbone (e.g. plonky+amen is working well - but is not released yet).

the name comes from Gregory Coleman’s performance in “Amen, Brother”, now a legendary sample used in all sorts of music but especially breakbeat type genres.

demos

performance mode (thx @dan_derks for the vinyl vibe suggestion):

sampler mode + performance mode:

requirements

  • norns

documentation

there are two different modes - a “performance mode” for making loops and a “sampler mode” for playing loops back and punching-in effects. switch between the modes using k1. if you don’t want to sample a loop you can use the parameters menu to load a loop (just make sure the loop you load has bpmX somewhere in the title so that the bpm can be correctly attributed). amen loads in performance mode by default.

performance mode

performance mode is indicated by the “stop” and “start” buttons.

performance

you can enter performance mode either by pressing k1 while in sampler mode, or by loading a file via the parameters (AMEN > load file). make sure the file you load has bpmX in the name, where X is the bpm of the file so that the tempo is matched correctly.

performance mode controls:

  • k1 switches to sampler mode
  • k2 activates left effect
  • k3 activates right effect
  • e1 switches effects
  • e2/e3 changes effect probabilities
  • OR
  • e2 changes loop start (unquantized)
  • e3 changes loop end (quantized)
  • when stop/start is shown

in this mode you can playback the current loop with all sorts of punch-in effects (its pretty easy to add more effects but to keep cpu usage low, they need to be not super intensive). you can also set the probabilities of these effects to occur automatically. effects stack. current effects:

  • scratching
  • looping / retrigger
  • reverse
  • jumps
  • slow / tape stop
  • low-pass filter
  • high-pass filter
  • stutter
  • strobe / tremelo
  • bitcrush
  • vinyl / lofi
  • timestretching
  • ??? (your favorite effect?)

unquantized vs quantized loop lengths: when you see “stop” and “start” you can change the loop lengths manually with e2 and e3. e2 changes the start position and e3 changes the end position. however, its important to note that when you change e2 you are making fine adjustments without quantizing loop length. conversely, when you change e3 it will force the loop to now snap to the nearest beat. so if don’t want to snap to a beat, set e2 last, or conversely if you do want to snap to a beat, use e3 after adjusting e2. the beat sync will still be quantized in both cases, but it can be interesting to have (or not have) a quantized loop length.

startup: startup will automatically load the last loop you were working with, but not any saved parameters. save/load PSETs normally to save your state.

grid: divided into left and right sides corresponding to loops #1 and #2 respectively. the first six rows are mapped across the entire sample, with brightness showing transient heights. pressing a key in this area will jump to that position. pressing and holding two keys will resize the current loop. the bottom two rows map to all the parameters (pressing one will show it on the norns so you can see what they are).

sampler mode

sampler mode is indicated by the “rec” and “play” buttons.

performance

in this mode you can sample stereo audio to make new loops or edit the start/end points of a current loop from performance mode.

sampler mode controls:

  • k1 switches to performance mode
  • k2 starts/stops recording
  • k3 starts/stops playback of loop
  • e1 zooms into loop start
  • e2 jogs loop window
  • e3 changes loop length

sampling strategy: this sampler has plenty of memory (~minutes) so its best to record more than you need and then fit the sample window to what you need after recording is over. to get started, first turn e1 to expand the recording space to a little more than you might need and then press k2 to start/stop recording. when done recording use e2 and e3 to clip just the sample you want to use (e1 is handy again here to zoom in on the beginning to get the right transients).

download

;install https://github.com/schollz/amen

84 Likes

…looks sideways at pile of ancient demotape cassettes that she hasn’t quite finished plundering…

Excellent timing, Mr Digits! Thank you for what looks like it could be a handy-dandy script to add to the library! :sunglasses:

10 Likes

Yes! I’ve been wanting performable dj style effects for norns. UI looks very friendly and straight forward. Good work, very excited to try this out.

2 Likes

My god. More gold from @infinitedigits

11 Likes

I’m a simple man. I see new script from @infinitedigits I check it asap

15 Likes

This is exactly the type of script I bought a Norns Shield for :slight_smile:

3 Likes

That is some beautiful work. Nicely done!

3 Likes

wow thanks!! this looks super fun!
any plans for midi support? (addressing slice points, clock sync)
i could also see the grid working well for jumping around slices and punching in effects

some effects ideas:
half-time with gritty timestretch
high-pass filter
sp404 style beat repeat where knobs change repeat length (quantized) and pitch

6 Likes

he’s a freaking wizard man

5 Likes

My first thought for an additional effect was also timestretching. I would also love to interface with these effects using the grid in the future.

1 Like

Super happy for this script to be born!
+1 here for Grid support!
I hope to see this code growing and growing, let’s break some loops tomorrow morning!

4 Likes

Literally all I wanted and more. Thank you

3 Likes

the fx kinda remind me of koala
bravo!

1 Like

thanks for the kind words, all.

+1!

do you mean to like slow down a loop while keeping pitch the same (kinda like a granulator maybe?)

love these ideas. hpf coming. beat repeating is there (its called “loop”) and currently it does 2 beats but can add in a option for that. not super sure how timestretch works in practice, any examples would be welcomed :slight_smile:

thank you @mattbiddulph. your work is such an inspiration- I’ve been thinking about this kind of thing since beets first put me onto it.

never knew about koala - wow it is cool. love the idea of crossfading scenes! hmmmmm

6 Likes

ooh dang that grid teaser is exciting!

yes, and it’s sorta like a granulator.

ignore all the manual repitching they are doing with the knob (though that sounds so nice! i love aliased repitching) the time stretch bit you can hear around 0:35-0:45 when the drum hits get dragged out.
i was imagining that you could set the rate of the stretch to some division of the loop length? or maybe it’s just a percentage.

3 Likes

This is really excellent, very intuitive UI and controls.

It would be great to have access to some effect parameters in the menus, if you think that’s worth it (like the frequency for the strobe, bitcrush tate/bit depth and maybe blend, etc.).

Thanks for the great work.

1 Like

Oh are you thinking something like what the Akaizer VST does?

5 Likes

Yeah! When I refer to time stretching I’m thinking about that sound you can get in ableton when you place two warp markers on a waveform and pull them as far away from eachother as possible. Granulation accomplishes the same elongated note type effect, but I’m specifically thinking grains with very little spread (nice to have options tho). Pretty linear. Like in drum n bass music when you get that weird stretched out “yyaaaaa mmonnnn” vocal sample. Woo! Grid! 64 version? :thinking:

1 Like

They should implement the “20likes” button, here on Lines! Thanks @infinitedigits

2 Likes

thanks @lleicamun :slight_smile:

yeah @oscillateur I can definitely explode out controls in params menu.

@Clashley1, @shellfritsch I think I got something akin to “timestretching” with @CALC’s help and the ideas from those videos. here’s the sound (I start fiddling with the two parameters around 4 seconds in):

yes!

11 Likes