I’m having an issue passing the audioIn() function from my ofApp class to a custom ‘myOwnClass’.
When I run my code I get ‘com.apple.audio.IOThread.client(11):EXEC_BAD_ACCESS(code=1,address=0x0)’ on my line mono[i]=input[i*2]*0.5; because input is NULL
If I check the see if input is NULL before I run this code before that line, the line still goes through and gives me the same error.
Note: I create an ofSoundStream mySoundStream in my ofApp.h and set it up in my ofApp.cpp setup().
void ofApp::audioIn(float * input, int bufferSize, int nChannels){
myOwnClassObject.audioIn(input, bufferSize, nChannels);
}
void myOwnClass::audioIn(float * input, int bufferSize, int nChannels){
for (int i = 0; i < bufferSize; i++){
mono[i] = input[i*2]*0.5; //Get audio stream coming in Channel 1
}
}
Because in the the MyOwnClass your input parameters need a float * (pointer) and from the main app if seems like you’re trying to send input (float) and not *input (pointer)? Not too sure though. But definitely a pointer issue.
Beware of audio, I’ve had issues trying to dereference pointers to manipulate when working with audio as most times it’s a pointer to an array so to dereference it you’ll need to go through a for loop and do *input + i to find the actual array of floats to read the buffers. Not too elegant, imo.
I’ve never tried it before, but I’d think that adding a listener inside the class should work better?
Thank you for the help @ayruos I realized what I was doing wrong from your code! You first setup you ‘myAudioClassObject’ and then ‘ofSoundStreamSetup’ I was doing the opposite so the audioIn function on ‘myAudioClassObject’ would start running and crash my app because the vector mono I have in there was empty!