Arpeggiation/tempo cap

Was 240BPM just picked as a convenient limit for the tempo, so that the knob would have a good range without skipping too many intermediary values? Or is there some technical limitation?

It’d be nice, if it’s possible to go faster, to at least access faster tempos through NRPN’s… I’d really love to use the arpeggiator at really fast rates to get some sid-style pseudo-polyphony! Step sequencer kinda works that way, but I’d like to be able to arpeggiate whatever chord I need at a given moment. I really like the way that this was implemented in the HardSID, if anyone’s familiar…

The main motivation was to keep the values accessible by the pot - a range of 0-1000 would have meant tempo increments of 8 as the pots readings are 7 bits.

Another way to implement this, and it’s indeed on my TODO list, is to add 2x / 4x / 8x modes. The only problem is: where to put it?

  1. As a bunch of 2x/4x/8x modifiers “hidden” after the maximum swing values, on the swing button ?
  2. As a handful of extra values above 240 (after 240, you see “270”, “300”, “360”, “480”, “720”, “960”) ?

Another thing I’m thinking of doing:

Implement a “seq” LFO waveform which just makes the LFO cycle through the step sequence. And then you could set this LFO to 16x to have the step sequence synced to the arpeggiator (as it works now), but also to 4x to have it cycle through the entire sequence every quarter note, or even 1x for super fast modulation and of course to self-clocked rates. You would have this “fractal” behaviour with the step sequence scanned through at sequencer rate and at 1 or even 2 different LFO rates.

Will it be something you would use?

a handful of extra values, I think, makes it the most intuitive… Obviously when you start to get up into the upper tempo ranges you don’t need too many values… The modifier next to the swing just seems awkward to me.

And yes, I’m definitely enthusiastic about being able to have the LFO determine the step sequence position – that sounds amazing! Hard to say how it would be useful but this is the sort of thing that makes these kind of projects fantastic: trying out new ideas that would never just appear in a commercial manufacturer’s synth designs…

and since I haven’t yet mentioned it: I’m already completely enamored with this synth… I think it’s fantastic. Keep up the good work!

Ah, crap ! 110 bytes too big to fit in firmware… will try to cut some cruft (if any)

74 bytes too big…

Disabled the easter egg, testing!

(temporarily retiring Blit and trying to generate it using another approach)

go, go, go :wink:


I actually killed blit, and resurrected it from a pair of sawtooth’ This eliminated 1.5k of wavetable - enough to put the stuff you wanted, and a surprise!


Yes, I love it! I imagine this would take more work, but I was hoping that we could get the coarse tempo controls for the pot, but still have the NRPN set a specific value for finer control, and to be able to sweep speed of the arpeggiation. Possible without major overhaul?

Can you point me to the relevant file where this stuff is handled? I wouldn’t mind taking a look at the source to see what’s going on…

Amazing update tho!~

Internally the tempo is stored on an uint8_t, so it can’t store a large range. The UI handler/editor do not handle any parameter with a range > 256. 8-bits to the core :smiley: I don’t know how the NRPN could make it work (besides writing to 2 addresses everytime the tempo has to be modified with a value above 256).

Git commit:

Sorry for autogenerated making it look like a lot of stuff was changed… I don’t think I tweaked more than 100 lines indeed.

Search for tempo, you’ll find the places I have modified… (this also included adding the actual “fast” values as an uint16 lookup table ; and as strings since it was smaller to print it this way than with Itoa!)

Did you ever get the 2x 4x 8x version working?

I would be very interested in faster/superfast arps that are synced to tempo

I decided to implement additional high values instead of the 2x/4x mode… However, here’s a simple trick to get 2x speed: set the step sequencer pattern length to 1 (with the 4th knob).

Another way to get fast arpeggio-like sounds synced to a slower tempo is by programming a sequence of pitches in the step sequencer, and using it as a LFO waveform, with the LFO speed set to x1 or x2