Я встраиваю 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;
}
Кто-нибудь видел эту проблему раньше?