Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8888815
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 14, 20262026-06-14T22:06:56+00:00 2026-06-14T22:06:56+00:00

This one keeps me awake: I have an OS X audio application which has

  • 0

This one keeps me awake:
I have an OS X audio application which has to react if the user changes the current sample rate of the device.
To do this I register a callback for both in- and output devices on ‘kAudioDevicePropertyNominalSampleRate’.
So if one of the devices sample rates get changed I get the callback and set the new sample rate on the devices with ‘AudioObjectSetPropertyData’ and ‘kAudioDevicePropertyNominalSampleRate’ as the selector.
The next steps were mentioned on the apple mailing list and i followed them:

  • stop the input AudioUnit and the AUGraph which consists of a mixer and the output AudioUnit
  • uninitalize them both.
  • check for the node count, step over them and use AUGraphDisconnectNodeInput to disconnect the mixer from the output
  • now set the new sample rate on the output scope of the input unit
  • and on the in- and output scope on the mixer unit
  • reconnect the mixer node to the output unit
  • update the graph
  • init input and graph
  • start input and graph

Render and Output callbacks start again but now the audio is distorted. I believe it’s the input render callback which is responsible for the signal but I’m not sure.
What did I forget?
The sample rate doesn’t affect the buffer size as far as i know.
If I start my application with the other sample rate everything is OK, it’s the change that leads to the distorted signal.
I look at the stream format (kAudioUnitProperty_StreamFormat) before and after. Everything stays the same except the sample rate which of course changes to the new value.

As I said I think it’s the input render callback which needs to be changed. Do I have to notify the callback that more samples are needed? I checked the callbacks and buffer sizes with 44k and 48k and nothing was different.

I wrote a small test application so if you want me to provide code, I can show you.

Edit: I recorded the distorted audio(a sine) and looked at it in Audacity.
What I found was that after every 495 samples the audio drops for another 17 samples.
I think you see where this is going: 495 samples + 17 samples = 512 samples. Which is the buffer size of my devices.
But I still don’t know what I can do with this finding.
I checked my Input and Output render procs and their access of the RingBuffer(I’m using the fixed Version of CARingBuffer)
Both store and fetch 512 frames so nothing is missing here…

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-14T22:06:57+00:00Added an answer on June 14, 2026 at 10:06 pm

    Got it!
    After disconnecting the Graph it seems to be necessary to tell both devices the new sample rate.
    I already did this before the callback but it seems this has to be done at a later time.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

hopefully there's an easy solution to this one. I have my MVC2 project which
I have been playing with this one for a few days now, and keep
This one's got me stumped and it's driving me nuts. I have a SiteFinity
This one has me pretty rattled so I thank you in advance for your
This one is a little tricky. Say I have this XmlDocument <Object> <Property1>1</Property1> <Property2>2</Property2>
This one has been stumping me for a while. But I'm no expert. This
OK, so I have a couple of modules in my application. One is called
One of our developers used this call: TzSpecificLocalTimeToSystemTime() but unfortunately we cannot keep it
This one's a head scratcher. I've created a commented jsFiddle to demonstrate the phenomenon
This one is a little confusing to me. I'm running a LAMP server with

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.