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.
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 !!
@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!
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.
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.
Multiple pages, like you’re describing, would be a neat feature for monome 64 users in future versions
@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?
.wav
bpm
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.
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 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
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
this script is awesome. Reverb released a huge zip of drum machine samples earlier this year and this script just eats them up.
Thank you! This is the perfect mission statement for Beets, exactly what I was trying to build:
Is there a specific limit to the number of wavs you can have in a folder? While looking for loops to put on there I remembered I was on this “digital locked grooves” compilation so I converted all 237 tracks to wavs and threw them on there but it only seems to want to play the first 50 - after that it displays the number up to 237 but they are silent
adding another voice to the recent chorus singing praises of beets. super fun and immediate.
When Beets loads a folder, it loads each wav file into a single long Softcut “tape” buffer at regular intervals (a couple of seconds apart). This is so that it can jump around the tape instantly when playing. The Softcut buffer is a fixed length, so eventually Beets just runs out of tape.
Ah interesting! Thanks for the info. That many loops was more than the resolution of the midi controller to even select properly anyway
Beets on the Radel.