Oops - if you grabbed my midi-demos above, please re-download that again.

I just fixed a big bug (I should probably have tested that before linking - doh! :stuck_out_tongue_winking_eye: )

Thanks for the tips. That was very easy!

Just to double-check, I tried it on a different computer and was still getting around 50-60 Kb/s.

Yeah it’s also super slow for me.

aha thank you for the report. pretty sure I know the cause and will fix tomorrow morning

1 Like

engines are in norns/sc/engines

they can also be located anywhere in /dust/

3 Likes

no code changes are required for SC engines. (unless they happen to use the old SoftCut ugens/abstractions)

2 Likes

quick question (necessitated by having to serial in vs using maiden due to wifi issues) - if I were using /home/we/dust/audio/tape to grab a random recording from tape in a script before, what would that path be now?

I am very excited about this thanks for the update.

1 Like

tape folder is the same under 2.0, but if you ran the update your old dust folder is now called dust-old

1 Like

haven’t been following the development super closely but really interested in what went into this - been keen on digging into the lower levels of sampling myself

is there a new defacto practice for importing samples, by any chance?

so much thanks to all involved—everything is proving beautiful thus far!

edit: and looking back, it says sftp front and center—nevermind!

1 Like

not trying to be flippant, but here is the code:

the crone program can be used effectively on non-norns systems. (including macOS, if you don’t mind installing JACK.) it is a Jack and OSC client. i’ll leave MSP/PD/SC ports to others.

we could have a longer discussion about this, but in a nutshell the biggest issue (IMHO) with such a system is correctly resampling when writing to the buffer. (resampling while reading is more straightforward.) this is the same problem faced by @Rodrigo, @RABID/@CrackaAttacka/@rajatheresidentalien, and pierre tremblay (dunno if he’s on lll) in the karma~ external (and by a younger, stupider version of myself in the poki~ external.)

finally in the incredible year of 2018 i’ve boiled down my own boneheaded solution to a simple c++ class: https://github.com/monome/norns/blob/dev/crone/src/softcut/Resampler.h

of course many other programs face the same issue of realtime resampling. (e.g., w/ and any number of fancy digital FX units.)


anyways, beyond that rather arbitrary (though central) technical detail, the softcut module also has these properties (good and bad):

  • each voice reads all its parameters once per audio block. this means (among other things) that position cuts have jitter on the order of ~4ms. [*] also, voices can only synchronize position once per block. we could synchronize every sample for a significant performance hit. maybe this will be a norns option in future.

  • filters input using a state variable filter. in the default configuration, this is modulated by the phasor rate, and the lowpassed output is written to the buffer. this helps typical applications where phasor rate is modulated to <1.0, and especially when phasor modulation is “through-zero” (- consider that setting rate = 0 while writing is also effectively reducing samplerate to zero and aliasing every frequency.) i used a full SVF because it’s hardly any extra computation (compared to an LPF that can be efficiently modulated at audio rate) and because it gives you the option to, like, deliberately emphasize some tuned sample-rate reduction (in the form of reducing phasor rate.) (like, this seems like a popular um “effect” these days for "edgy’’ soundtrack work. i digress of course)

  • applies some fairly transparent softclipping before buffer write. i think this is important when, as here, there are basically arbitrary signals being mixed to each voice input, possibly in a feedback configuration. (softclip algorithm is a simple quadratic with a linear breakpoint. there are more musical clipping options but will consider these later.)

also considering other options for per-voice processing (playback filter, bitcrush), but as it is i think the functionality needs to be put through its paces before we add stuff.


([*] BTW: asking someone to care about 4ms jitter is approximately like asking a drummer to play 16th notes at 3750 BPM. </controversial_opinion>)

16 Likes

Do you mean getting samples on or off of the device?

SFTP is probably the answer for both.

2 Likes

So using the example from dust-2.0 wiki, I can just add the lib/thing.sc file into my project, right?

dust/scripts/thing
  thing.lua
  lib/special.lua
  lib/thing.sc           <-- SuperCollider engine
  audio/noise.aiff
  data/thing.pset
  data/thing-01.pset

If that’s the case I will update the wiki page to add some documentation to that effect.

2 Likes

FWIW - I tested this just a bit ago with an “engines” folder inside my project folder and it worked OK :+1:

1 Like

Installed from scratch with a new CM3+ and it worked first time! Yay!

6 Likes

Is there any step by step instructions how to change the CM3?
I was wondering how hard it is, mainly interested because I use Norns mainly with Glut…

1 Like

It’s easy, you have to remove the screws from the bottom with a Phillips screwdriver, remove the encoder caps and the encoder nuts that are recessed beneath them (you will need some long pliers or something like that) and then the screws on the pcb. Then you slide carefully the pcb out and you will see that the CM3 is attached in the same way computer RAM is. You replace it and screw everything together (except the bottom, you’ll need it open to put Norns in disk mode and then back in Run mode after you flashed it) and it’s done.

4 Likes

For those that want to try on a CM3+: I don’t think the image currently expands to the full disk-size/space available on the CM3+.

2 Likes

ah, ok, then I will wait, although the description by @AlessandroBonino sounds easy enough to do…