Hi Christian, Thanks for the reply. Yes, I had found the functions
AUBase::CallHostMusicalTimeLocation AUBase::CallHostBeatAndTempo AUBase::CallHostTransportState What I meant in my question however - is there a way to get callbacks/notifications invoked in my Audio Unit every time when beat/bar changes, or when the host playback starts/stops (for instance, when the user clicks the Play button in MainStage). Or do I have to implement tracking of these events manually in my render function by checking if and how the beat value changed? Manual tracking sounds like a tedious work though. For instance, I would like to have a function called every time a metronome ticks (i.e., a beat changes). CallHostBeatAndTempo returns fractional value, so what I can do - is in the AU's Render() function trunc the Float64 beat value and compare it with a trunced previous value, if it changed, then beat happened and I ought to invoke my Beat() function. However host's (int)beat value can change not only when the metronome ticks, but when the user presses the play button (it was 0 before Play was pressed, then it jumps to 21.768750 (why?), then jumps again to 0 and starts increasing normally every metronome tick by 1). So when the user presses play, the Beat() function is invoked twice, even though the metronome ticked only once. Weird. 2015-01-15 19:44 GMT+02:00 Christian Rober <[email protected]>: > On OS X, your host may set a property on your Audio Unit enumerated as > kAudioUnitProperty_HostCallbacks. The payload of the property is the > struct HostCallbackInfo, which in turn has a set of C function > callbacks. If that property is set by the host, you can extrapolate > the playback state and current beat position by calling those > functions. AUBase has a handy wrapper around all of this, of course. > > Note: it is not guaranteed that a host who provides the struct will > return all the information from the output parameters to the > functions. > > I have been able to call this at the beginning of each render cycle on > most hosts, and I believe this to be the standard way it is > implemented. So you should only really need to call it before you > render/process the samples per cycle. > > For the record, this struct also exists on iOS, but via the Inter-App > Audio layer of the Audio Unit API. > > Hope that helps. > > --Christian > > On Thu, Jan 15, 2015 at 12:11 PM, Nick <[email protected]> wrote: > > Hi > > Is there a way to get a notification in audio unit that a host started > > playback, and get a function called every metronome beat/or bar change? > > Thank you > > > > _______________________________________________ > > Do not post admin requests to the list. They will be ignored. > > Coreaudio-api mailing list ([email protected]) > > Help/Unsubscribe/Update your Subscription: > > > https://lists.apple.com/mailman/options/coreaudio-api/recapitch%40gmail.com > > > > This email sent to [email protected] >
_______________________________________________ Do not post admin requests to the list. They will be ignored. Coreaudio-api mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/coreaudio-api/archive%40mail-archive.com This email sent to [email protected]
