Я пытаюсь воспроизвести простой волновой файл, используя библиотеку portaudio.
Я думал, что это должно быть довольно просто, поэтому я написал так просто, как я мог сделать обратный вызов.
Моя волна составляет 16 бит на выборку и 2 канала, поэтому я предположил, что вставка целого числа в выходной поток будет в порядке (выборка на целое число).
int *out = (int*)outputBuffer;
for(int i=0; i<framesPerBuffer; i+=4 )
*out++ = *(reinterpret_cast<int*>(&data->chunk[i]));
(Я сохранил данные из файла в виде символов)
Музыка играет почти нормально, но она зашумлена с добавлением высокого тона.
Я пытался оставить идею переосмысленного броска и двигался как персонаж. Независимо от того, что я делал с записью в выходной буфер, он всегда звучал как раньше. У меня закончились идеи, что может это исправить.
outputParameters.channelCount = 2;
outputParameters.sampleFormat = paInt16 ;
// outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultLowOutputLatency;
outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultHighOutputLatency;
outputParameters.hostApiSpecificStreamInfo = NULL;
Это мои выходные параметры.
Задача ещё не решена.
Других решений пока нет …