Может ли использование AKAudioFile и replaceWith внутри AKAudioPlayer привести к искажению? - PullRequest
0 голосов
/ 23 мая 2018

Я встраиваю AudioKit в экспериментальную психологию, добавляющую тестирование (восприятие внутреннего тела), и сейчас это очень просто, у меня просто есть класс AudioManager.m, который объявляет:

    @implementation AudioManager {
    AKAudioPlayer* player;
    bool canPlay;
}

    +(AudioManager *)sharedManager {
        static dispatch_once_t pred = 0;
        static AudioManager *instance = nil;
        dispatch_once(&pred, ^{
            instance = [[AudioManager alloc] init];
            [instance setup];
        });
        return instance;
    }

маленький игрокметоды, такие как:

-(NSError*)playHTTIntro {
    return [self playWavInResources:@"Htt1"];
}

затем вызываются из определенных контроллеров представления как:

    -(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [[AudioManager sharedManager] playHTTGuess];
}

странная проблема, с которой я сталкиваюсь, заключается в том, что при вызове и воспроизведении файлов увеличиваются амплитуда и искажениенакапливает

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

playWavInResources выше реализован как:

    -(NSError*)playWavInResources:(NSString*)wavName {
    if(player)
        [player stop];

    NSError* error;
    AKAudioFile* audioFile = [[AKAudioFile alloc] initForReading:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:wavName ofType:@"wav"]] error:&error];
    if(!error) {
        if(player)
            [player replaceWithFile:audioFile error:&error];
        else
            player = [[AKAudioPlayer alloc] initWithFile:audioFile looping:false lazyBuffering:false error:&error completionHandler:nil];
        AudioKit.output = player;

        // Start audio engine if not already
        NSError* error;
        [AudioKit startAndReturnError:&error];
        if(!error)
            [player start];
    }
    return error;
}

Кто-нибудь видел эту проблему раньше?

...