Библиотека захвата звука в Linux, C ++ (только микрофон) - PullRequest
3 голосов
/ 14 июня 2010

Я занимаюсь разработкой музыкальной игры, она похожа на певицу, но вместо пения нужно играть на рекордере .Он называется oFlute и все еще находится на ранней стадии разработки.

В игре я фиксирую вход микрофона, затем выполняю простой FFT-анализ и сравниваю результаты с типичными частотами записывающего устройства, таким образом получая проигранную ноту.

Вначале аудиотекаЯ использовал RtAudio , но я не помню, почему я переключился на PortAudio , который я сейчас использую. проблема заключается в том, что время от времени он либо падает случайным образом, либо прекращает захват, как если бы не было звука, исходящего из микрофона.

Мой вопрос Какой лучший вариант для захвата ввода микрофона в Linux?Мне просто нужно открыть, прочитать и закрыть поток байтов из микрофона.

Я читал это руководство , и (удивительно) оно говорит:

Не думаю, что PortAudio - это очень хороший API для Unix-подобных операционных систем.

Итак, что вы мне порекомендуете?

1 Ответ

6 голосов
/ 14 июня 2010

PortAudio - странный выбор, учитывая другие параметры.

Я бы лично абстрагировался от всего и использовал GStreamer.Звук может быть ужасным беспорядком в Linux (если говорить о долгосрочном страдании).Позволяя Gstreamer справиться с этим, вы сможете забыть об этом, двигаться дальше и больше не думать об этом.

OpenAL, вероятно, является наиболее популярным для разработчиков игр, и он должен поддерживать большинство систем (хотя вы )будет получать удовольствие от игры с PulseAudio).

Я, безусловно, позабочусь о том, чтобы вы разрабатывали для самой популярной установки (которая на данный момент является PulseAudio, я считаю), так что выне попадайте в ситуацию, когда вы отпускаете, и вы погружаетесь в группу людей, стонущих о том, что звук не работает.

И не слушайте глупости о PulseAudio - это может быть новым иона может потребовать несколько больше ресурсов, чем обычная система ALSA, но она определенно не связана с проблемами задержки.Просить людей удалить его - не вариант для современных настольных дистрибутивов, так как он тесно интегрирован (и полезен).

...