0
0

Hi guys,

I’m using the DSP clock to time pretty much everything in my application. It’s the best way to synchronize visuals and sounds as well as stitching my sounds together.

However, the clock often gives me a hi and lo of zero (0), despite being in a new frame update. I’m calling system::update() every frame.

Can you explain to me what may trigger this behaviour? Or maybe the inner workings of the clock on iPhone?

Thanks,
Fred

  • You must to post comments
0
0

I don’t see how the DSP clock would give you zero’s unless something like memory was being overwritten. Would it be possible for you to send a test app that exhibits this problem to support@fmod.org? I have done some testing here with DSP clock in the example apps and it’s always steadily increasing, never 0, 0.

  • You must to post comments
0
0

Hey Mathew,

I’m very sorry, I made a mistake in my initial post. The problem I’m getting is actually that the hi and lo DELTA is 0 from one frame to another, meaning the hi and lo are the same in two calls to getDSPClock. My apologies.

In this light, do you see what the issue could be?

Thanks,
Fred

  • You must to post comments
0
0

Having a delta of 0 is expected. The DSP clock is updated in chunks (the chunks we submit to the sound hardware), each chunk is a certain number of samples which can be found from System::getDSPBufferSize(). On the iPhone the value will probably default to 1156 samples and at the default sample rate (24KHz) this is around 48ms. So the DSP clock will only update that often.

If you poll the value of the clock more frequently than this you will get a 0 delta.

  • You must to post comments
0
0

Awesome, makes a lot of sense.

In an effort to reduce latency for the sake of user synchronization with the beat, do you think lowering the DSP buffer size is the solution to investigate or would you aim at another part of the system?

  • You must to post comments
0
0

If you are using setDelay, you need not worry about the DSP block size with regards to latency. That method is sample accurate, i.e. you can have things start and stop on any sample, not just intervals of the block size. It is just the updating of the values returned from the DSP clock which are in blocks.

Also as a side note, you cannot change the DSP block size on the iPhone we mix on-demand for the hardware to achieve low latency.

  • You must to post comments
Showing 5 results
Your Answer

Please first to submit.