| The big ones for me that drove me into reinit land are the envelope
opcodes. Far as I can tell, none of them allow one to skip
reinitialization, and the open ended ones ( like linseg, expseg ) I
guess would need a different opcode entirely because of the way their
argument list works. My reinit stuff allows a legato note to work just
like a modular, where the pitch changes ( the osc unit ) but the
envelope does not get retriggered. By putting reinit stuff in I avoid
having envelopes passed as global variables and keep the globals to a
managable level, but at the expense of very long hard to read instrument
code. If I could get rid of the reinit and do it all with a -i to an
event call that would cut out a heck of a lot of code.
One of the opcode ideas I had was something like a triggered version of
the envelope opcodes. ( kinda like tlineto, a very handy opcode ). Say
something like
linsegt ktrig, kval1, ktime1, kval2, ktime1
Where the line gets reinitied on trig going positive, which also at the
same time freezes the current state of the kvals to be used for
enveloping arguments. Another option would be something similar with two
triggers, one to reinit, and one to freeze the values, or a perhaps a
mode arg in there to determine how kval1, etc are handled. Perhaps
something like
linsegt imode, ktrig, kval1, ktime1, kval2, ktime2, etc.
Where one option for the imode arg makes the lines just change their
direction as it progresses if kval/ktime is changed dynamically while
another works as I described above, with a value freeze.
I would also like to say that I think trigger opcodes should have the t
at the END of the opcode name, so that things like linseg and linsegt or
lineto and (t)lineto(t) would be beside each other in the manual!
Iain
jpff@codemist.co.uk wrote:
> I have added code to CS5 to vco, bqrez, planet, pareq, lorenz, and
> tbvc to allow skipping initialisation. Documented but not tested.
> ==John ffitch
>
> |