• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
AUInstrumentBase and Ableton Live
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AUInstrumentBase and Ableton Live


  • Subject: AUInstrumentBase and Ableton Live
  • From: John Allsup <email@hidden>
  • Date: Thu, 27 Jul 2006 23:27:58 +0100

I sent a post to this list about this a few days ago. I'll answer my own post.

The situation is that a simple synth built with AUInstrumentBase and friends fails to work properly under Ableton Live. (For example, the SinSynth example that comes in the CoreAudio SDK doesn't work under Live.)

The reason why is this:

Live calls ValidFormat with scope 0 (global) and element 0.
Most probably it should call in output scope, but it does not do this.
The SupportedNumChannels(NULL) call returns 0 since this property is not
supported in SinSynth. MusicDeviceBase::ValidFormat says that the format is fine
and then we get to the following bit of code in AUInstrumentBase.


AUIOElement *el = GetIOElement (inScope, inElement);
return (el->GetStreamFormat().NumberChannels() == inNewFormat.NumberChannels());


This is where the problem happens. With scope 0 (global), GetIOElement(0,0)
throws an exception since the global scope isn't an AUIOElement. This exception is not caught by the audio unit and is (I presume) caught by Live, which promptly (and probably correctly) disables the audio unit.


This (calling ValidFormat with global scope) is probably a fault of Live, but I don't know where definitive information on such matters resides. In any case, I am unable to make changes to Live for obvious reasons. To make an AUInstrumentBase based instrument work in Live one needs to override the ValidFormat method so that if the scope is 0, the ValidFormat method of MusicDeviceBase is queried.

Thus, change (in ValidFormat)
	if (SupportedNumChannels (NULL))
		return MusicDeviceBase::ValidFormat(inScope, inElement, inNewFormat);
to
	if (SupportedNumChannels (NULL) || inScope == 0)
		return MusicDeviceBase::ValidFormat(inScope, inElement, inNewFormat);
and we have at least a quick hack to keep Live happy.

John

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Prev by Date: Re: GetParameterList in ableton Live problem
  • Next by Date: Re: GetParameterList in ableton Live problem
  • Previous by thread: Host Support for Musical Time Callback Methods
  • Next by thread: Questions about AUHAL device stream format
  • Index(es):
    • Date
    • Thread