private:
// get the compiler to tell us when we do a bad thing!!!
AUState () {}
- AUState (const AUState&) {}
+ AUState (const AUState& other) : CAReferenceCounted (other) {}
AUState& operator= (const AUState&) { return *this; }
};
// is expected to deal with same channel valance in and out
if (result)
{
- if (Comp().Desc().IsEffect() && (inChannelsIn == inChannelsOut)
- || Comp().Desc().IsOffline() && (inChannelsIn == inChannelsOut))
+ if ((Comp().Desc().IsEffect() && (inChannelsIn == inChannelsOut))
+ || (Comp().Desc().IsOffline() && (inChannelsIn == inChannelsOut)))
{
return true;
}
{
return 1;
}
+ else if (Comp().Desc().IsGenerator() || Comp().Desc().IsMusicDevice()) {
+ // directly query Bus Formats
+ // Note that that these may refer to different subBusses
+ // (eg. Kick, Snare,.. on a Drummachine)
+ // eventually the Bus-Name for each configuration should be exposed
+ // for the User to select..
+
+ UInt32 elCountIn, elCountOut;
+
+ if (GetElementCount (kAudioUnitScope_Input, elCountIn)) return -1;
+ if (GetElementCount (kAudioUnitScope_Output, elCountOut)) return -1;
+
+ cnt = std::max(elCountIn, elCountOut);
+
+ *chaninfo = (AUChannelInfo*) malloc (sizeof (AUChannelInfo) * cnt);
+
+ for (unsigned int i = 0; i < elCountIn; ++i) {
+ UInt32 numChans;
+ if (NumberChannels (kAudioUnitScope_Input, i, numChans)) return -1;
+ (*chaninfo)[i].inChannels = numChans;
+ }
+ for (unsigned int i = elCountIn; i < cnt; ++i) {
+ (*chaninfo)[i].inChannels = 0;
+ }
+
+ for (unsigned int i = 0; i < elCountOut; ++i) {
+ UInt32 numChans;
+ if (NumberChannels (kAudioUnitScope_Output, i, numChans)) return -1;
+ (*chaninfo)[i].outChannels = numChans;
+ }
+ for (unsigned int i = elCountOut; i < cnt; ++i) {
+ (*chaninfo)[i].outChannels = 0;
+ }
+ return 0;
+ }
else
{
// the au should either really tell us about this
OSStatus CAAudioUnit::GetParameter(AudioUnitParameterID inID, AudioUnitScope scope, AudioUnitElement element,
Float32 &outValue) const
{
- return mDataPtr ? mDataPtr->GetParameter (inID, scope, element, outValue) : paramErr;
+ return mDataPtr ? (OSStatus) mDataPtr->GetParameter (inID, scope, element, outValue) : paramErr;
}
OSStatus CAAudioUnit::SetParameter(AudioUnitParameterID inID, AudioUnitScope scope, AudioUnitElement element,
Float32 value, UInt32 bufferOffsetFrames)
{
- return mDataPtr ? mDataPtr->SetParameter (inID, scope, element, value, bufferOffsetFrames) : paramErr;
+ return mDataPtr ? (OSStatus) mDataPtr->SetParameter (inID, scope, element, value, bufferOffsetFrames) : paramErr;
}
OSStatus CAAudioUnit::MIDIEvent (UInt32 inStatus,
UInt32 inData2,
UInt32 inOffsetSampleFrame)
{
- return mDataPtr ? mDataPtr->MIDIEvent (inStatus, inData1, inData2, inOffsetSampleFrame) : paramErr;
+ return mDataPtr ? (OSStatus) mDataPtr->MIDIEvent (inStatus, inData1, inData2, inOffsetSampleFrame) : paramErr;
}
OSStatus CAAudioUnit::StartNote (MusicDeviceInstrumentID inInstrument,
UInt32 inOffsetSampleFrame,
const MusicDeviceNoteParams * inParams)
{
- return mDataPtr ? mDataPtr->StartNote (inInstrument, inGroupID, outNoteInstanceID, inOffsetSampleFrame, inParams)
- : paramErr;
+ return mDataPtr ? (OSStatus) mDataPtr->StartNote (inInstrument, inGroupID, outNoteInstanceID, inOffsetSampleFrame, inParams)
+ : paramErr;
}
OSStatus CAAudioUnit::StopNote (MusicDeviceGroupID inGroupID,
NoteInstanceID inNoteInstanceID,
UInt32 inOffsetSampleFrame)
{
- return mDataPtr ? mDataPtr->StopNote (inGroupID, inNoteInstanceID, inOffsetSampleFrame) : paramErr;
+ return mDataPtr ? (OSStatus) mDataPtr->StopNote (inGroupID, inNoteInstanceID, inOffsetSampleFrame) : paramErr;
}
#pragma mark __Render
UInt32 inNumberFrames,
AudioBufferList * ioData)
{
- return mDataPtr ? mDataPtr->Render (ioActionFlags, inTimeStamp, inOutputBusNumber, inNumberFrames, ioData) : paramErr;
+ return mDataPtr ? (OSStatus) mDataPtr->Render (ioActionFlags, inTimeStamp, inOutputBusNumber, inNumberFrames, ioData) : paramErr;
}
static AURenderCallbackStruct sRenderCallback;