[Stk] Realtime Effect Processing Using Callback
Stephen Sinclair
sinclair at music.mcgill.ca
Mon Jan 5 08:52:41 PST 2009
If the debugger finds that it is crashing when delay->tick() is
called, there may be a problem with your "delay" pointer I would
guess, but if it manages to step into the Delay::tick() function, and
then crashes inside it, let us know what line it is crashing on.
Steve
On Mon, Jan 5, 2009 at 11:18 AM, BEN SHEPHERD <benshep at roadrunner.com> wrote:
> Thanks for the quick response. I have tried and am able to run the duplex
> and sine programs. I don't believe either of them call the tick method
> though. I have used the debugger to show that the tick call (tested on both
> chorus and delay) is where the program generates the error. I don't
> currently have access to my code, but I'll send more later.
>
> -Ben
>
> On Jan 5, 2009, at 10:13 AM, "Stephen Sinclair" <sinclair at music.mcgill.ca>
> wrote:
>
>> Hi,
>>
>> 2009/1/5 BEN SHEPHERD <benshep at roadrunner.com>:
>>>
>>> I'm attempting to read from an input, process with a delay, and output in
>>> realtime and my program stops when delay->tick is called with an "access
>>> segmentation" or memory error. I'm on Windows XP, using ASIO only. I
>>> have
>>> been able to successfully use the Duplex program which uses memcpy to
>>> copy
>>> the inputBuffer to outputBuffer. I've tried different classes including
>>> Chorus but with the same result. I apologize in advance if I'm missing
>>> something simple, but I've poured through all the documentation and
>>> examples
>>> I could find.
>>
>> "memory error" sounds like something not initialized or out of bounds.
>> I would try stepping through it with a debugger to see if anything is
>> strange. Your callback looks okay to me but I can't tell more without
>> seeing the whole program.
>>
>> You say you're able to run the examples without problems?
>>
>> Steve
>>
>>
>>> int tick( void *outputBuffer, void *inputBuffer, unsigned int
>>> nBufferFrames,
>>> double streamTime, RtAudioStreamStatus status, void *dataPointer )
>>> {
>>> Delay *delay = (Delay *) dataPointer;
>>> StkFloat *oSamples = (StkFloat *) outputBuffer;
>>> StkFloat *iSamples = (StkFloat *) inputBuffer;
>>>
>>> for ( int i=0; i<nBufferFrames; i++ )
>>> *oSamples++ = delay->tick(*iSamples++);
>>>
>>> return 0;
>>> }
>>>
>
>
>
>
More information about the Stk
mailing list