| As you were: contrary evidence: it doesn't work for fof, and may well
not work for other ugs too. The reason is that some initialization
~does~ need to be done, even for tied notes. In the case of fof, linked
lists need to be reset.
I have tried a minimalist change to fof which ~seems~ to work:
the iphs flag is currently confined to the range 0 to 1 , so is a
convenient one to appropriate for a skip-init copmmand.
Inside the fof() function itself, it looks as if all that needs to be
done is wrap the alloc inside the skip test, thus:
if(*p->iphs >= 0){
auxalloc((long)olaps * sizeof(OVRLAP), &p->auxch);
}
there may be other things that need to be wrapped thusly too, but it is
clear that the init cannot be skipped completely. I still suspect that
it may not be easy to run a tie across the middle of a fof grain - some
sort of wraparound might be needed. In the worst case, considerable
redesign might have to be done to support legato. Maybe the newer
fof/fog opcodes are more suitable for this?
Richard Dobson
>
> Yes, indeed you can (subject to any evidence to the contrary), and it's
> also a good way of identifying those opcodes that need the init flag.
[etc]
>
> Peter Neubacker wrote:
> >
> > Richard Dobson wrote:
> >
> > > So I have this ongoing request to all developers of opcodes - if there
> > > is internal state (i.e phase, table lookup, filter state, etc), ~please~
> > > add a switch to skip initialization, otherwise the opcode will most
> > > likely not work for legato performance.
> >
> > I think you can bypass initilisation of
> > any opcode by this construction:
> >
> > instr 1
> >
> > tigoto skipinit
> > asig oscil p4,p5,1
> > out asig
> > skipinit:
> >
> > endin
--
Test your DAW with my Soundcard Attrition Page!
http://wkweb5.cableinet.co.uk/rwd (LU: 6th July 1999) |