我创建了一个iOS 5 / iOS 6应用程序,其显示屏响应用户执行的音高变化。它使用示例SpeakHere代码中的记录功能,但实际上并不保存文件,因为它旨在实时响应。
我现在想扩展这个应用程序以同时响应音高本身和持续相同音高的持续时间(例如,当相同音高稳定保持最小时间段时改变颜色)。我一直在阅读NSTimer和NSDate函数,这看起来很简单,以及AudioTimeStamp函数,它们显然是基于C的,我觉得很混乱。基于其他帖子,似乎NSTimer和NSDate检查可能会导致显示器对实际音乐表现的实时响应滞后。派遣后怎么样?我能指望该块在预定时间执行吗?
我的问题是,什么方法最有可能产生所需的结果,允许我测量AudioQueue中特定音高的持续时间并实时连续更新我的显示?我需要保存到文件才能使用吗?
我是自学成才,并且只编程了几个月,所以无论如何我都要学习很多新的API / C语言功能。我希望有人能指出我朝着富有成效的方向发展。谢谢!
答案 0 :(得分:0)
你肯定会进入非常高级的东西。以下是一些想法:
您的音频处理似乎是最密集的操作。因为这个处理需要是连续的,所以可能将不得不在另一个线程中进行此处理。通过处理,我的意思是检查音频以确定音高。
一旦确定了音高,就应该存储它的开始时间。
然后,在主线程中,设置一个连续重复的NSTimer,并在NSTimer的fire方法中,从当前日期中减去音高的开始日期以获得经过的时间,作为NSTimeInterval。
< / LI>将NSTimeInterval发送到您的显示逻辑,以便您可以更新屏幕上的颜色。
要检查的一些事项:
Beginner's tutorial on multi-threading and Grand Central Dispatch on iOS NSTimer
希望能帮到你!