I have been making a step sequencer with many of the features found on the Latron Notron.
Right now I am trying to implement a cumulative transpose:
If you set a cumulative transpose step to +3, then every bar the pitch transposition of the note at that step will increase by 3. e.g. +3 then +6 then +9 etc...keeps going up (or down with negative transposition)
In order for this to work you also need to set a note range limit with wraparound: (e.g. Upper note limit and lower note limit in octave multiples)
If a transposed note is above the upper note limit (e.g. it is 3 semitones above the max. octave) then it will be shifted down to 3 semitones above the lower note limit. (a shift of 1 or more octaves)
In this way, notes being transposed will continuously be rising upwards (with the exception of being dropped octave(s) when they reach their limit so they can keep going up or down).
I have been banging my head all weekend to make this work using max objects. The result has been spaghetti in order to get the message timing right but there are still bugs.
I am writing to see if anyone has any clever solutions for this?
The problem is that for each step, some sort of accumulator must keep track of the transposition state. (so that the original note pitch sequence is unchanged, you are just dynamically adding or subtracting numbers to it in order to transpose). There has to be logic in place to alter the accumulated transposition number so it acts as an octave shift up/down when the combined note and transposition value exceed the note range limits.
Can anyone think of an elegant solution for this?