On Wed, Aug 21, 2002 at 10:31:20AM -0700, Paul Winkler wrote:

> > In any case, here's my question: I have an effects instrument that
> > implements delay, but there is no way to change the delay time from
> > the control layer, since the delay instrument is only instantiated
> > once and the delay time parameter is an ivar.
> 
> There's the problem - you really want the delay time to be changing
> while the instrument runs, so use a k or a variable.  

right, but the "delay" opcode uses an ivar for the delay time.  Is
there any sensible way to have the delay time specified as a kvar?  It
seems that if the delay buffer size could change every kpass, that
could be a huge performance lose.

> What's your control driver, and how does it feed values to sfront?

I read the section of the sfront manual on writing control drivers.
It is remarkably easy for the coolness factor.

Here's my basic architecture (criticism welcome):

   GUI generates SASL note and control events for every beat (in
   real-time) and sends them over a named pipe.

   In the sfront-generated code, csys_newdata() polls on the pipe and
   reconstitutes SASL events to be instantiated by csys_saslevents().

Obviously, this has the potential for inconsistent latencies due to
scheduling and I/O delays, but IIRC named pipes are pretty cheap (<
30us for a 1-byte message, and scaling well from there).  I guess
another approach would be to move the timing logic to csys_newdata and
have the GUI offload pattern data and control events (i.e. pattern
change, etc).

> >  (More problematic is
> > that the delay time is set before the "0 tempo 120" command in the
> > SASL file, but that's another story.)  How can I get around this?  It
> > seems that I need to release the instrument so that it will get
> > re-instantiated -- but will that mess with my routing?
> 
> Probably. It would be like turning the delay off and turning
> it back on; there would be an audible interruption in the
> stream of echoes.

Right, I guess my question is, if I have an effects instrument "dly"
that is in route and send statements, will I lose that routing if I
release and then re-instantiate it, or is there a way to ensure that a
new "dly" takes the place of the old one on the bus?  I thought that
the only way to instantiate effects instruments was in send statements.




wb

-- 
Will Benton      | "Die richtige Methode der Philosophie w�re eigentlich 
[EMAIL PROTECTED]    |  die: Nichts zu sagen, als was sich sagen l��t...."

Reply via email to