Я пытаюсь получить необработанные аудиоданные из файла (я привык видеть значения с плавающей запятой в диапазоне от -1 до 1).
Я пытаюсь извлекать эти данные из буферов в режиме реального времени, чтобы я мог обеспечить некоторый тип измерения для приложения.
Я в основном считываю весь файл в память, используя AudioFileReadPackets. Я создал аудиоустройство RemoteIO для воспроизведения и внутри Воспроизведения, я передаю mData в AudioBuffer, чтобы его можно было отправлять на оборудование.
Большая проблема, с которой я сталкиваюсь, заключается в том, что данные, отправляемые в буферы из моего массива данных (из AudioFileReadPackets), представляют собой UInt32 ... Я действительно запутался. Похоже, он 32-битный, и я установил пакеты / кадры по 4 байта каждый. Как, черт возьми, я могу получить мои необработанные аудиоданные (от -1 до 1) из этого?
Это моё описание формата
// Describe format
audioFormat.mSampleRate = 44100.00;
audioFormat.mFormatID = kAudioFormatLinearPCM;
audioFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;
audioFormat.mFramesPerPacket = 1;
audioFormat.mChannelsPerFrame = 2;
audioFormat.mBitsPerChannel = 16;
audioFormat.mBytesPerPacket = 4;
audioFormat.mBytesPerFrame = 4;
Я сейчас читаю волновой файл.
Спасибо!