Got some test break beat loops from my drummer today. I still need to practice using this script to properly hit 1 ever time. Mapping the arc is super easy and the filter sounds great.

2 Likes

WOW! This script is amazing. Really digging the results, and have a few thoughts I’d thought I share for workflow-y things.

Would be sweet to be able to get clock divs between the two grid instances, so that we could have a more steady (but still sorta crazy) pattern on the right, and then have the left side at x4 clock speed doing some wild gabber percs / polyrhythmic madness. I’m noticing the row the shift key is on doesn’t really have many uses, and that could be a good place to seat a quick-access clock div row. I suppose this is related with the above suggestion for independent clock / pitch shifting, but that’s pretty easily doable by just repitching a sample beforehand if you know where you’re tryna take it,

It may also be interesting to have independent probability control per track within a folder, so that if we’re playing sample a from folder y, it is more likely to reverse/skip/stutter/swap tracks than sample b from the same folder – this could open up really cool random fill opportunities (say, with all the parameters at 80 percent for just one loop, so that when that loop is switched to we get a moment of aphex and then it snaps back to shadow).

As is, these results are achievable at the ‘arrangement’ stage of production, but the notion of creating multiple layers from a single input file, pitched to feel like totally different files, is very tempting.

Minor functional thing: it seems like grid rows 2, 4, 10, and 12 are set to be a touch dimmer than rows 1, 3, 5, 9, 11, and 13. I see this as a legibility concern (more easily visually distinguishing between the rows), but the variations in brightness are so slight that it actually is just kinda tripping my eyes out and making it hard to look at the grid for very long. This could just be me, or there may be a setting I can adjust on my end to fix it.

Thanks again for this awesome script!

edit with a lil bug report: if I set pattern length to not include the first step, it seems to play the first step whenever I change erm… loops is maybe the right term. So if only the far top right three buttons are lit, whenever I change to a new loop (or at the conclusion of a loop for if auto-rotate is on), I hear the kick from the first slice in the loop.

Thanks! Glad you’re having fun with it. It’s always a pleasure to have my code out in the world and making music.

Great ideas there. I love the idea of the clock divider per instance, I’ll put that on top of my todo list. I’ll have a think about independent probability controls; I tried to make it so that switching between samples doesn’t change the state of the grid controls so that it all feels deterministic and under your control. I should be able to change the brightness striping of the grid with a param, I’ll put that on the todo list as well. And thanks for the bug report about the step logic, that sounds like something I’ve seen it do.

4 Likes

I’m really enjoying this. Thank you.

1 Like

@mattbiddulph - Dude, killer app! Just started digging into this one today. Looking forward to exploring more.

Seems like there’s a little lag time when controlling these parameters with arc:

  • beat start/end
  • filter reso - arc sensitivity issue
  • loop index

One feature request! Would it be possible to provide on option to reset the progress back to the first beat when seeing midi clock in? Would be really nice to be able to have that function when working in conjunction with a DAW and playing/stopping.

2 Likes

Hey there! Glad you’re enjoying exploring the app.

My guess is that the latency is coming from the fact that parameters are read and all outputs updated on the clock beat. This is intentional, to ensure that all changes are quantized. Does that sound plausible from what you’re hearing?

Resetting the beat when MIDI clock begins is a great idea. In my own music I only use Ableton Link and Crow clocks, so I’m less familiar with how MIDI manifests in the Norns clock. I’ll see what I can do.

In theory you should reset on Start msg. Not reset on Continue msg.

Midi clock is all the time regardless of transport control.

2 Likes

There is some fog for me on Norns and start stop functionality on certain apps. this is interesting. following now. also dig the app @mattbiddulph !!

2 Likes

@mattbiddulph

Took a look back at how these parameters were lagging and I don’t think it reflects what you’re saying about the parameter updating every clock beat. Def lags much longer than every beat when using arc. It may be a sensitivity issue as well? Seems to be all or nothing for parameters like beat start/end. Hard to tell if its sensitivity due to the lag time when turning the knob. It may just be catching up with itself.

Let me know if I can provide any further troubleshooting. Happy to help!

  • beat start/end
  • filter reso - arc sensitivity issue?
  • loop index

i’m not super familiar with midi mapping norns. would it be possible to use two launchpads to control the two voices like it was a grid?

I believe so, yes. Each parameter of each voice is broken out into its own Norns param, so you should be able to map each one separately to a CC on one of the launchpads. It was certainly working well with a single Launchpad before I added Grid support, as you can see from the very first video in this topic.

2 Likes

awesome, thanks! will keep an eye out for a cheap launchpad so i can use both voices.

On my Launchpad (a Mini Mk3) it’s possible to define multiple pages of grids that send different MIDI CCs, and switch between them using buttons at the top right of the grid. This might give you some of what you’re looking for.

3 Likes

Multiple pages, like you’re describing, would be a neat feature for monome 64 users in future versions :wink:

2 Likes

@mattbiddulph i absolutely love this script. i love what it does to drums and i have been experimenting with other loops as well.

i have a question about creating loops - how do i add my own bpm?

i can see in some of the demos you provided there are bpms:

but when i add my own .wav files in a folder it doesn’t add the bpm. does it sync to the current global clock in the case its not provided?

Beets always assumes that every audio file in a folder is one bar long when it loads it. Even if you have a number of audio files with different original BPMs, they’ll be sped up or slowed down to match the global BPM on the Norns clock.

That BPM setting you found in the JSON file is just a pre-calculated reference for the softcut engine so that it knows the original BPM of the audio file (and can therefore speed or slow it to match the required BPM at runtime) without having to recalculate it every time it loads.

1 Like

Edit at line 163:

params:add({ type = “number”, id = “the_bpm”, name = “THE BPM”, min = 0, max = 300, default = 120})
params:set_action(“the_bpm”, function(x) params:set(“clock_tempo”, x) end)
arcify:register(“the_bpm”, .1)

Throwing this code in lets us map tempo with arcify by making bpm a param which is really cool and satisfying. However, whenever I land on my new destination tempo the loop will jump back to 1, making the smooth tempo change not so smooth. This happens when adjusting the tempo with the norns encoder as well. Its like it is finding the 1 now that its in the new tempo instead of just letting the loop play.

Finally tried this and it’s pretty amazing :slight_smile: been using a Korg Nanokontrol for midi and still need to figure out the best way to assign stuff, but threw in some old folders of breakboeats and got instant breakcore so seems promising :slight_smile:

edit: also I’d second the comments above that timestretching (akai style and/or modern) would be incredible. As would jungle-style pitch shifting stuff

4 Likes

this script is awesome. Reverb released a huge zip of drum machine samples earlier this year and this script just eats them up.

4 Likes

Thank you! This is the perfect mission statement for Beets, exactly what I was trying to build:

3 Likes