[Stk] Hello, and a bug?

Andreas Sumerauer ansum@online.de
Sat, 24 Jan 2004 08:20:03 +0100


Hello Richard,

> I am currently one of a number of co-authors contributing to a book on 
> C and C++ programming for musicians, under the editorship of Richard 
> Boulanger. 

I have just read of your book project in the STK mailing list. Can you 
please let me know when it will be available? I am very interested.

thanks

Andreas Sumerauer

--
www.soundbytes.de



Richard Dobson wrote:

> Hello,
>
> I have just joined the list. By way of introduction, I am a core 
> developer for the UK-based Composers Desktop Project (CDP). I have 
> been enjoying the STK remotely, so to speak, via it's derivations in 
> Csound, with which I have been involved for many years.
>
> I am currently one of a number of co-authors contributing to a book on 
> C and C++ programming for musicians, under the editorship of Richard 
> Boulanger.  We have some advanced chapters (by Michael Gogins) which 
> feature the use of the STK in the context of creating VST plugins, and 
> in so doing seem to have identified a bug in WaveLoop. The presenting 
> issue is that this was being used (loading a sine wave) to provide 
> modulation of a simple interpolating variable delay line, and we were 
> getting a lot of distortion. This proved to be because the guard point 
> at the end of the sine table (to use the Csound terminology) was not 
> being set appropriately, it duplicated the final table point (in 
> WvIn), whereas for an oscillator we need it to be copy of the first 
> point. My current solution is to add some code to the WaveLoop 
> constructor, copied from ReadData():
>
> WaveLoop :: WaveLoop( const char *fileName, bool raw )
>   : WvIn( fileName, raw ), phaseOffset(0.0)
> {   
>   // If at end of file, copy first sample frame for interpolation.
>   if (chunkPointer+bufferSize == fileSize ) {
>     for (unsigned int j=0; j<channels; j++)
>       data[bufferSize*channels+j] = data[j];           
>   }
> }
>
> With this change we get lovely clean modulation. I assume that for 
> audio-rate oscillators, the error is unnoticeable. Would this change 
> be likely to break anything else? Other possibly better solutions are 
> clearly possible.
>
> (I note that for very short tables such as this, chunking is 0, so 
> readData never gets called inside tickFrame().)
>
> Regards to all,
>
> Richard Dobson
>
>
>
>
>
>
>
> _______________________________________________
> Stk mailing list
> Stk@ccrma.stanford.edu
> http://ccrma-mail.stanford.edu/mailman/listinfo/stk
>