Iphone SDK: проблемы со звуком - PullRequest
0 голосов
/ 07 мая 2011

Я создал приложение для ударных.На данный момент приложение вроде удовлетворительное, но не очень хорошее.

Проблема в странной задержке или "задержке", которая иногда возникает, когда я нажимаю свои звуковые кнопки.Когда я спамлю кнопку, она начинает зависать, когда снова размораживается, она проигрывает тот же самый звук, сложенный на себе около 4 раз: (

Что я делаю не так?

Мои сэмплы плохие?

Должен ли я использовать imageView и трогать Began для имитации кнопок?

Это код, который я использую для воспроизведения звука при нажатии кнопки:

- (IBAction) HHC {

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

    SystemSoundID soundID;

    AudioServicesCreateSystemSoundID((CFURLRef) [NSURL fileURLWithPath:path], &soundID);

    AudioServicesPlaySystemSound (soundID);

}

Пожалуйста, дайте мне несколько полезных советов:)

Заранее спасибо

-DD

Ответы [ 3 ]

1 голос
/ 07 мая 2011

Попробуйте сделать это и посмотрите, улучшит ли это вашу производительность.

В вашем .h файле объявите это:

SystemSoundID soundID;

В вашем .m файле в методе -viewDidLoad добавьте этоcode:

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

И в методе, который вы показали, просто сохраните одну строчку кода:

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

Дайте мне знать, если это замерзнет.Если не попробовать Core Audio

1 голос
/ 07 мая 2011

Для звука с низкой задержкой, подходящего для приложения на ударных, вы захотите использовать API AudioIO Unit Remote, что не просто.Вам необходимо знать, как обрабатывать, буферизовать и микшировать звуковые образцы PCM.Начните с чтения книги по технологии цифрового аудио.

1 голос
/ 07 мая 2011

Каждый раз, когда вы нажимаете кнопку, вы загружаете звуковой файл из файловой системы, помещаете его в память и затем воспроизводите.

Это очень неэффективно.Ваши аудио образцы должны быть уже загружены в память при запуске, поэтому их не нужно считывать из файловой системы.Кроме того, AudioServicesPlaySystemSound на самом деле не предназначен для такого использования - его основное назначение - воспроизведение коротких звуковых сигналов (т. Е. Системного предупреждения).Если вам нужно воспроизведение аудио с низкой задержкой, вы должны вместо этого использовать Core Audio framework.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...