SimpleAudioEngine всегда воспроизводит один и тот же эффект?

я записываю какой-то файл, а затем воспроизводю его с помощью:

NSArray *dirPaths;
    NSString *docsDir;
    dirPaths = NSSearchPathForDirectoriesInDomains(
                                                   NSDocumentDirectory, NSUserDomainMask, YES);
    docsDir = [dirPaths objectAtIndex:0];
    NSString *soundFilePath = [docsDir
                               stringByAppendingPathComponent:@"temp0.caf"];

 //play
[[SimpleAudioEngine sharedEngine] preloadEffect:soundFilePath];
    [[SimpleAudioEngine sharedEngine] playEffect:soundFilePath  pitch:1.5f pan:0.0f gain:0.3f];

это работает в первый раз, но во второй раз он снова воспроизводит тот же файл, даже если я уже записал какой-то другой файл.

любая помощь ?


person user1280535    schedule 20.05.2012    source источник
comment
Вы уверены, что новая запись также называется temp0.caf? Когда вы хотите воспроизвести файл, вы запускаете весь этот код? У меня не было опыта работы с этим движком, но, может быть, вам стоит выгрузить эффект перед повторной предварительной загрузкой?   -  person DanSkeel    schedule 20.05.2012
comment
Я не совсем понимаю, о чем вы пытаетесь спросить, вы говорите: даже то, что я уже записал какой-то другой файл. Ну, можно посмотреть этот код...   -  person MCKapur    schedule 20.05.2012
comment
Я записываю файл с помощью простого avaudioRecorder, там нечего особенного. и да, он записан в тот же путь к файлу. если я воспроизведу его с помощью CDSoundEngine, он изменит кодировку.   -  person user1280535    schedule 20.05.2012


Ответы (2)


Возможно, ваш звуковой движок предварительно загружает этот эффект и сохраняет эту предварительную загрузку, попробуйте:

[[SimpleAudioEngine sharedEngine] preloadEffect:nil];
[[SimpleAudioEngine sharedEngine] preloadEffect:soundFilePath];

    [[SimpleAudioEngine sharedEngine] playEffect:soundFilePath  pitch:1.5f pan:0.0f gain:0.3f];

Кроме того, когда и где вызывается этот код. Он называется в честь вашей пластинки, верно? Возможно, попробуйте:

NSArray *dirPaths = nil;
    NSString *docsDir = nil;

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

person MCKapur    schedule 20.05.2012
comment
пробовал спасибо. это не работает. даже без предварительной загрузки это не так. по-прежнему воспроизводить один и тот же звук снова и снова. если я воспроизведу звук с помощью CDSoundEngine, он отлично работает. - person user1280535; 20.05.2012
comment
понял: [[SimpleAudioEngine sharedEngine] unloadEffect:soundFilePath]; - person user1280535; 20.05.2012

Я думаю, что ваш аудиофайл отказывается перезаписываться новым. Возможно, вам следует попытаться изменить имя файла каждый раз, когда пользователь его записывает. Чтобы, когда он записывает, вы сохраняли файл в виде строки в формате:

[NSMutableString stringWithFormat:@"temp%d.caf",number];

Затем всякий раз, когда пользователь хочет записать, вы увеличиваете «число» на единицу.

number = number +1;
person akuritsu    schedule 23.05.2012