2012-11-04 25 views
0

我已经创建了一个iOS 5/iOS 6应用程序,其中的显示屏可响应用户执行的音调变化。它使用示例SpeakHere代码中的记录函数,但实际上并未保存文件,因为它旨在实时响应。audioQueue中的计时事件

我现在想扩展这个应用程序,以同时响应音高本身和持续相同音高的持续时间(例如,当相同音高稳定持续最短时间时改变颜色)。我一直在阅读NSTimer和NSDate函数,这些函数看起来很简单,还有AudioTimeStamp函数,这些函数显然是基于C语言的,我发现它很混乱。根据其他帖子,NSTimer和NSDate检查似乎可能导致显示器对实际音乐表现的实时响应滞后。如何派遣后?我可以期待该块在预定的时间执行吗?

我的问题是,什么方法最有可能产生期望的结果,让我测量AudioQueue中某个特定音高的持续时间并实时更新我的​​显示?我是否需要保存到文件才能使用?

我是自学成才的,只进行了几个月的编程,所以无论我需要做什么,我都需要学习很多APIs/C语言功能。我希望有人能够指出我富有成效的方向。谢谢!

回答

0

你肯定会在这里进入相当先进的东西。以下是一些想法:

  1. 您的音频处理似乎是最密集的操作。因为这个处理需要连续进行,所以你需要可能必须在另一个线程中完成这个处理。通过处理,我的意思是检查音频来确定音调。

  2. 一旦你确定了音高,你应该存储它开始的时间。

  3. 然后,在主线程中,设置一个连续重复的NSTimer,并且在NSTimer的fire方法中,从当前日期中减去音高的开始日期以获取流逝的时间,作为NSTimeInterval。

  4. 发送NSTimeInterval到您的显示逻辑,以便您可以更新屏幕上的颜色。

有些事情要检查:

Beginner's tutorial on multi-threading and Grand Central Dispatch on iOS 的NSTimer

Using NSTimers

希望帮助你!

+0

这看起来可能正是我需要的......非常感谢! – Jeanne