• 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
Re: AudioUnit - notify on hosts beat and bar changes
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AudioUnit - notify on hosts beat and bar changes


  • Subject: Re: AudioUnit - notify on hosts beat and bar changes
  • From: Nick <email@hidden>
  • Date: Thu, 15 Jan 2015 20:15:34 +0200

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@hidden>:
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@hidden> 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@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden

 _______________________________________________
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

  • Follow-Ups:
    • Re: AudioUnit - notify on hosts beat and bar changes
      • From: Christian Rober <email@hidden>
    • Re: AudioUnit - notify on hosts beat and bar changes
      • From: Paul Davis <email@hidden>
References: 
 >AudioUnit - notify on hosts beat and bar changes (From: Nick <email@hidden>)
 >Re: AudioUnit - notify on hosts beat and bar changes (From: Christian Rober <email@hidden>)

  • Prev by Date: Re: AudioUnit - notify on hosts beat and bar changes
  • Next by Date: AVAudioSessionSilenceSecondaryAudioHintNotification never called
  • Previous by thread: Re: AudioUnit - notify on hosts beat and bar changes
  • Next by thread: Re: AudioUnit - notify on hosts beat and bar changes
  • Index(es):
    • Date
    • Thread