261 mTickOnWrite =
false;
270 mRtAudioBufferSize =
Latency();
272 #ifdef __WINDOWS_DS__
273 if (mRtAudioBufferSize<4096)
275 mRtAudioBufferSize = 4096;
279 #ifdef FACTOR2SRC_KLUDGE
280 mDoFactor2SRC =
false;
283 mDoFactor2SRC =
true;
298 mRtAudioBufferSize *= 2;
303 #ifdef MACOSX_WORKAROUND
304 mInternalRtAudioBufferSize = mRtAudioBufferSize;
305 if (mInternalRtAudioBufferSize>2048)
307 mInternalRtAudioBufferSize = 2048;
312 mRtAudio =
new RtAudio(&mRtAudioStream,
316 #ifdef MACOSX_WORKAROUND
317 &mInternalRtAudioBufferSize,
327 #ifdef MACOSX_WORKAROUND
328 mRtAudioBufferSize = mInternalRtAudioBufferSize*((mRtAudioBufferSize+mInternalRtAudioBufferSize-1)/mInternalRtAudioBufferSize);
332 #ifdef FACTOR2SRC_KLUDGE
336 mRtAudioBufferSize /= 2;
337 #ifdef MACOSX_WORKAROUND
338 mInternalRtAudioBufferSize /= 2;
347 mWriteBuffer.Alloc(
mOutputs.size(),mRtAudioBufferSize*2);
348 mReadBuffer.Alloc(
mInputs.size(),mRtAudioBufferSize*2);
386 int k = mRtAudioBufferSize/a.
GetSize();
387 if (a.
GetSize()*k==mRtAudioBufferSize)
389 mWriteBuffer.mWriteIndex = mRtAudioBufferSize;
393 if (mTickOnRead && mReadBuffer.Filled()<a.
GetSize())
398 mReadBuffer.ChannelCopyTo(a.GetBuffer().GetPtr(),a.
GetSize(),channelID);
410 mWriteBuffer.ChannelCopyFrom(a.GetBuffer().GetPtr(),a.
GetSize(),channelID);
412 if (mTickOnWrite && mWriteBuffer.Filled()>=mRtAudioBufferSize)
420 #ifdef MACOSX_WORKAROUND
421 int i = mRtAudioBufferSize/mInternalRtAudioBufferSize;
423 #ifdef FACTOR2SRC_KLUDGE
428 mWriteBuffer.CopyToFactor2SRC(mRtAudioBuffer,mInternalRtAudioBufferSize);
430 mReadBuffer.CopyFromDoFactor2SRC(mRtAudioBuffer,mInternalRtAudioBufferSize);
437 mWriteBuffer.CopyTo(mRtAudioBuffer,mInternalRtAudioBufferSize);
439 mReadBuffer.CopyFrom(mRtAudioBuffer,mInternalRtAudioBufferSize);
443 #ifdef FACTOR2SRC_KLUDGE
446 mWriteBuffer.CopyToFactor2SRC(mRtAudioBuffer,mRtAudioBufferSize);
448 mReadBuffer.CopyFromDoFactor2SRC(mRtAudioBuffer,mRtAudioBufferSize);
453 mWriteBuffer.CopyTo(mRtAudioBuffer,mRtAudioBufferSize);
455 mReadBuffer.CopyFrom(mRtAudioBuffer,mRtAudioBufferSize);
491 RtAAudioDeviceList::RtAAudioDeviceList()
495 EnumerateAvailableDevices();
521 mDevIDs.push_back( 0 );
523 for ( k = 1; k <= numDevs; k++ )
527 mDevIDs.push_back( k );
533 Err new_err(
"RtAAudioDeviceList::EnumerateAvailableDevices failed");
552 sprintf(tmp,
"%d",mDevIDs[i]);