[Stk] Segfault in SineWave.h
Tristan Matthews
le.businessman at gmail.com
Sun Jan 9 16:15:46 PST 2011
2011/1/7 Janosch.rux <janosch.rux at web.de>
> I tried to extract the relevant parts. The whole code is a hand tracking
> example for the kinect device. In my opinion this is really messy but
> actually I don't know how I could solve this in a more elegant way.
>
> Thanks for your reply
>
> Janosch Rux
>
> See also: http://pastebin.com/7smzrQ02
>
> ###### Definition of args_struct
>
> struct args_struct {
> stk::SineWave *sine;
> XnVPointDrawer *point;
> };
>
>
> #######Call in main.cpp:
>
> args_stk.point = g_pDrawer;
>
> //sound init get pointer to drawer
> status = pthread_create(&sig, NULL, audio, (void *)&args_stk);
> if(status != 0) {
> printf("Can't create thread\n");
> exit(EXIT_FAILURE);
> }
>
> pthread_detach(sig);
>
Could you show the rest of main.cpp? It's possible that args_stk is going
out of scope.
-t
>
> ######## the thread function to init the stk
>
> void *audio(void *arg) {
>
> RtAudio dac;
> struct args_struct *fuckit = (args_struct *) arg;
> fuckit->sine = new SineWave;
>
> // Figure out how many bytes in an StkFloat and setup the RtAudio stream.
> RtAudio::StreamParameters parameters;
> parameters.deviceId = dac.getDefaultOutputDevice();
> parameters.nChannels = 1;
> RtAudioFormat format = ( sizeof(StkFloat) == 8 ) ? RTAUDIO_FLOAT64 :
> RTAUDIO_FLOAT32;
> unsigned int bufferFrames = RT_BUFFER_SIZE;
>
>
> try {
> dac.openStream( ¶meters, NULL, format, (unsigned
> int)Stk::sampleRate(), &bufferFrames, &tick, (void *)fuckit);
> }
> catch ( RtError &error ) {
> error.printMessage();
> exit(EXIT_FAILURE);
> }
>
> fuckit->sine->setFrequency(440.0);
>
> try {
> dac.startStream();
> }
> catch ( RtError &error ) {
> error.printMessage();
> exit(EXIT_FAILURE);
> }
>
> while(1) {}
>
> return 0;
> }
>
> ###### the tick() function
>
> int tick( void *outputBuffer, void *inputBuffer, unsigned int
> nBufferFrames,
> double streamTime, RtAudioStreamStatus status, void *dataPointer )
> {
>
> struct args_struct *fuckit = (args_struct *)dataPointer;
> register StkFloat *samples = (StkFloat *) outputBuffer;
> fuckit->sine->setFrequency(fuckit->point->get_stk_freq());
>
> //printf("Freq: %i\n", fuckit->point->get_stk_freq());
>
> for ( unsigned int i=0; i<nBufferFrames; i++ ) {
> *samples++ = fuckit->sine->tick();
> }
>
> return 0;
>
> }
>
>
> On 07.01.2011 20:47, Tristan Matthews wrote:
>
> 2011/1/7 Janosch.rux <janosch.rux at web.de>
>
>> Hi,
>>
>> I use stk with callbacks to enhance another piece of software. Stk is
>> encapsulated in its own thread. If the tick function calls the sine->tick()
>> as in the example (https://ccrma.stanford.edu/software/stk/crealtime.html)
>> on the web page I get a segfault on line 116 in SineWave.h.
>>
>> Im not quite sure whether this is a bug or mistake on my side.
>>
>
> Could you provide your code (or at least the relevant part)? Without seeing
> it, we can only hazard a guess as to what is going wrong.
>
> -t
>
>
>>
>> Thanks for any suggestions.
>>
>> Regards
>>
>> Janosch Rux
>>
>> _______________________________________________
>> Stk mailing list
>> Stk at ccrma.stanford.edu
>> http://ccrma-mail.stanford.edu/mailman/listinfo/stk
>>
>>
>
>
> --
> Tristan Matthews
> email: tristan at sat.qc.ca
> web: http://tristanswork.blogspot.com
>
>
>
> _______________________________________________
> Stk mailing list
> Stk at ccrma.stanford.edu
> http://ccrma-mail.stanford.edu/mailman/listinfo/stk
>
>
--
Tristan Matthews
email: tristan at sat.qc.ca
web: http://tristanswork.blogspot.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://ccrma-mail.stanford.edu/pipermail/stk/attachments/20110109/8ebdbc5e/attachment.html
More information about the Stk
mailing list