Присоединение к разрыву на разных платформах

Я собираюсь заранее извиниться за то, что вы очень расплывчаты, но мои знания в этой области несколько ограничены, поэтому я не знаю необходимых «ключевых слов», чтобы сделать мой вопрос / вопрос ясным. Прости .

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

Я знаю, что это, безусловно, возможно, поскольку я сделал это давно в Java (я думаю, что использовал библиотеки Processing и Minim). Это было сделано в окнах, включив на звуковой плате свое устройство «loopback» (я думаю, мой поставщик назвал его «Wave Out Mix» или что-то еще). Как можно подойти к одной и той же проблеме в ОС Linux?

Я намерен использовать python для части анализа / визуализации, однако я могу работать на C, если необходимо получить необработанные данные.

Заранее благодарим за любую информацию.

Независимо от того, имеете ли вы доступ к «волновому излучению» или «петлевому шлейфу», зависит от вашей звуковой карты и драйверов.

Собственный звуковой API для Linux называется ALSA. Найдите документы и образец кода ALSA, и вы сможете получить код для записи с вашей звуковой карты, а затем, надеюсь, настройте микшер так, чтобы вы записывали его из «wave out», а не из микрофона.

Более старый API-интерфейс Linux (/ dev / dsp) называется OSS. Это немного проще, и ALSA эмулирует большую часть этого API – но ALSA является предпочтительным решением, если вы хотите получить полный доступ к вашей звуковой карте.

Вы можете проверить Jack – это система для маршрутизации аудиовыхода из одного приложения на вход другого, в большую цепочку или всевозможные другие конфигурации. Есть много и много совместимых программ, и если все, что вам нужно, уже поддерживает Jack, то вы обнаружите, что это самый простой API для этого типа вещей.

Наконец, это может показаться глупым, но вы можете получить аналоговый loopback-кабель – стерео-мини-разъем от мужчины к мужчине – и зацикливать его от вашего разъема для наушников до линейного разъема и записать «волну» таким образом, независимо от того, какая у вас звуковая карта. Это глупый взлом с аналоговым отверстием, но он работает, и в зависимости от того, что вы пытаетесь записать, это может быть достаточно хорошим.