开发者

Iphone SDK: sound problems

i've created a drum app. As of now, the app's kinda satisfying but not great.

The problem is a strange delay or "lag" that sometimes happens when i press my sound buttons. When i spam a button it begins to freeze, when unfreezed again, it plays the same sound stacked on itself about 4 times :(

What am i doing wrong?

Are my samples bad?

Should i use an imageView and touchesBegan to simulate the buttons?

This is the code that i use to play a sound when a button is pushed:

- (IBAction) HHC {

    NSString *path = [[NSBundle mainBundle] pathForResource:@"HHClosed"ofType:@"wav"];

    SystemSoundID soundID;

    AudioServ开发者_开发问答icesCreateSystemSoundID((CFURLRef) [NSURL fileURLWithPath:path], &soundID);

    AudioServicesPlaySystemSound (soundID);

}

Please give me some good advice :)

Thanks in advance

-DD


Try doing this and see if it makes your performance better.

In your .h file declare this:

SystemSoundID soundID;

In your .m file in the -viewDidLoad method add this code:

  -(void) viewDidLoad {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"HHClosed"ofType:@"wav"];
    AudioServicesCreateSystemSoundID((CFURLRef) [NSURL fileURLWithPath:path], &soundID);
}

And in the method you showed just keep this one line of code:

- (IBAction) HHC {
    AudioServicesPlaySystemSound (soundID);
}

Let me know if that makes the freezing going away. If it doesn't try Core Audio


Every time you hit the button you are loading the sound file from the filesystem, bringing it into memory, and then playing it.

This is very inefficient. Your audio samples should already be loaded in memory at launch, so they don't need to be read in from the filesystem. Also, AudioServicesPlaySystemSound isn't really designed for this kind of usage - its main purpose is playing back short alert sounds (ie, a system alert). If you need low-latency audio playback you should be looking at the Core Audio framework instead.


For low latency sound appropriate for a drum app, you will want to use the RemoteIO Audio Unit API, which is not simple. You will need to know how to handle, buffer and mix PCM sound samples. Start by reading a book on digital audio technology.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜