[Stk] Segfault in SineWave.h
Janosch.rux
janosch.rux at web.de
Fri Jan 7 12:12:25 PST 2011
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);
######## 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 <mailto: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 <mailto:Stk at ccrma.stanford.edu>
> http://ccrma-mail.stanford.edu/mailman/listinfo/stk
>
>
>
>
> --
> Tristan Matthews
> email: tristan at sat.qc.ca <mailto: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/20110107/40c7e9b3/attachment.html
More information about the Stk
mailing list