*/
// Platform-dependent sleep routines.
-#if defined( __WINDOWS_ASIO__ ) || defined( __WINDOWS_DS__ )
+#if defined( __WINDOWS_ASIO__ ) || defined( __WINDOWS_DS__ ) || defined( __WINDOWS_WASAPI__ )
#include <windows.h>
#define SLEEP( milliseconds ) Sleep( (DWORD) milliseconds )
#else // Unix variants
exit( 0 );
}
+void errorCallback( RtAudioError::Type type, const std::string &errorText )
+{
+ // This example error handling function does exactly the same thing
+ // as the embedded RtAudio::error() function.
+ std::cout << "in errorCallback" << std::endl;
+ if ( type == RtAudioError::WARNING )
+ std::cerr << '\n' << errorText << "\n\n";
+ else if ( type != RtAudioError::WARNING )
+ throw( RtAudioError( errorText, type ) );
+}
+
unsigned int channels;
RtAudio::StreamOptions options;
unsigned int frameCounter = 0;
#else // Use non-interleaved buffers
-int saw( void *outputBuffer, void *inputBuffer, unsigned int nBufferFrames,
- double streamTime, RtAudioStreamStatus status, void *data )
+int saw( void *outputBuffer, void * /*inputBuffer*/, unsigned int nBufferFrames,
+ double /*streamTime*/, RtAudioStreamStatus status, void *data )
{
unsigned int i, j;
extern unsigned int channels;
oParams.nChannels = channels;
oParams.firstChannel = offset;
+ if ( device == 0 )
+ oParams.deviceId = dac.getDefaultOutputDevice();
+
options.flags = RTAUDIO_HOG_DEVICE;
options.flags |= RTAUDIO_SCHEDULE_REALTIME;
#if !defined( USE_INTERLEAVED )
options.flags |= RTAUDIO_NONINTERLEAVED;
#endif
try {
- dac.openStream( &oParams, NULL, FORMAT, fs, &bufferFrames, &saw, (void *)data, &options );
+ dac.openStream( &oParams, NULL, FORMAT, fs, &bufferFrames, &saw, (void *)data, &options, &errorCallback );
dac.startStream();
}
- catch ( RtError& e ) {
+ catch ( RtAudioError& e ) {
e.printMessage();
goto cleanup;
}
// Stop the stream
dac.stopStream();
}
- catch ( RtError& e ) {
+ catch ( RtAudioError& e ) {
e.printMessage();
}
}