*/
// Platform-dependent sleep routines.
-#if defined( __WINDOWS_ASIO__ ) || defined( __WINDOWS_DS__ )
+#if defined( WIN32 )
#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;
for ( i=0; i<nBufferFrames; i++ ) {
for ( j=0; j<channels; j++ ) {
- *buffer++ = (MY_TYPE) (lastValues[j] * SCALE);
+ *buffer++ = (MY_TYPE) (lastValues[j] * SCALE * 0.5);
lastValues[j] += BASE_RATE * (j+1+(j*0.1));
if ( lastValues[j] >= 1.0 ) lastValues[j] -= 2.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;
for ( j=0; j<channels; j++ ) {
increment = BASE_RATE * (j+1+(j*0.1));
for ( i=0; i<nBufferFrames; i++ ) {
- *buffer++ = (MY_TYPE) (lastValues[j] * SCALE);
+ *buffer++ = (MY_TYPE) (lastValues[j] * SCALE * 0.5);
lastValues[j] += increment;
if ( lastValues[j] >= 1.0 ) lastValues[j] -= 2.0;
}
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();
}
}