Я пытаюсь определить удары в минуту (BPM) от микрофона, используя звуковую энергию, я думаю, что выяснил часть, определяющую BPM, но у меня возникли небольшие проблемы с получением данных RAW.
Пример основан на приложении Apples SpeakHere - на функции обратного вызова AudioQueue, которую я использую:
SInt16 *buffer = (SInt16*)inBuffer->mAudioData;
for (int i = 0; i < (inBuffer->mAudioDataByteSize)/sizeof(SInt16); i++)
{
printf("before modification %d\n", (int)*buffer);
buffer++;
}
Но я получаю некоторые интересные значения - любой шанс, что кто-то может указать мне направильное направление, где я иду не так, и дайте мне знать, какой диапазон я должен получить обратно.
Настройка формата аудио:
mRecordFormat.mFormatFlags = kLinearPCMFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsPacked;
mRecordFormat.mBitsPerChannel = 16;
mRecordFormat.mBytesPerPacket = mRecordFormat.mBytesPerFrame = (mRecordFormat.mBitsPerChannel / 8) * mRecordFormat.mChannelsPerFrame;
mRecordFormat.mFramesPerPacket = 1;
Приветствия,