ProjectM-pulseaudio потоки и усиление звука

Я использую ProjectM аудио-визуализатор на Linux. Я использую Ubuntu и Pulseaudio, и поэтому я использую бинарный файл projectm-pulseaudio. К сожалению, кажется, что разработка ProjectM прекратилась, и для Linux нет ничего похожего на него.

Я рассматриваю возможность взлома исходного кода, чтобы исправить пару проблем, с которыми я столкнулся, но сначала хочу понять, возможно ли то, что я хочу сделать, так как мой C ++ очень ржавый, и мои знания Pulseaudio и qt около нуля.

ProjectM прослушивает выбор пользователем одного из мониторов устройства вывода Pulseaudio. Есть графический интерфейс для выбора, который вы хотите, и я могу сделать тот же выбор из графического интерфейса управления громкостью Pulseaudio. В моем случае я могу выбрать аудиовыход HDMI моей видеокарты, аналоговый аудиовыход моей материнской платы или цифровой аудиовыход моей материнской платы. Я использую последний из них, так как там подключены мои динамики.

Это главная проблема: он слушает смешанный аудиопоток на выходе из компьютера. Я хочу, чтобы он только слушал музыкальный поток; то есть определенный аудиопоток на пути в Pulseaudio. Это обеспечит пару преимуществ:

  • Системные звуки и звуки, поступающие из других программ, не являются частью визуализации.
  • Громкость раковины находится позже в цепочке и поэтому не влияет на амплитуду входного сигнала ProjectM, и поэтому изменение громкости моей системы (что я делаю, а не вставаю и настраиваю громкость динамиков напрямую) не влияет на визуализацию.

Кажется, что громкость музыкального проигрывателя (которая равна громкости, установленной в потоке музыкального проигрывателя, к которому я могу получить доступ из графического интерфейса управления громкостью Pulseaudio), также влияет на визуализацию, что нежелательно, но я надеюсь, что это просто эффект запуска, поскольку уменьшение громкости музыкального проигрывателя, очевидно, снижает амплитуду к тому времени, когда он попадает в приемник, что и прослушивает ProjectM. Что я действительно хочу, так это чтобы ProjectM получал полную громкость звукового сигнала, прежде чем он будет уменьшен с помощью какого-либо регулятора громкости.

Наконец, есть еще одно препятствие в том, что я использую функцию воспроизведения, которая уменьшает громкость каждой песни, так что каждый альбом имеет эквивалентную воспринимаемую громкость. По умолчанию для функции воспроизведения используется значение 89 дБ, поэтому я думаю, что этого может быть достаточно, чтобы увеличить каждую выборку на соответствующую величину, как только она попадет в ProjectM. Это, наверное, лучшее, что я могу сделать, так как Pulse не имеет представления о повторной игре, но я бы приветствовал другие предложения.

Таким образом, общий вопрос заключается в том, возможно ли все это звучит. Особенно:

  1. Возможно ли, чтобы приложение (в данном случае модифицированная версия ProjectM) осуществляло непосредственный мониторинг потока воспроизведения Pulseaudio другого конкретного приложения, а не прослушивание монитора устройства вывода?
  2. Возможно ли получить аудиопоток до того, как он был масштабирован какими-либо регуляторами громкости? (Помимо масштабирования приложения музыкального плеера для целей воспроизведения).
  3. Удастся ли восстановить соединение с этим потоком, если он будет уничтожен и воссоздан — например, я не знаю, будет ли у него каждый раз какой-нибудь узнаваемый идентификатор. (Было бы досадно выбирать поток каждый раз, когда воспроизведение приостанавливается и возобновляется, или музыкальный проигрыватель перезапускается.)

И, наконец, любые советы или ресурсы, на которые стоит обратить внимание, будут оценены. Или, если у вас есть навыки для этого и вы заинтересованы в этом, я мог бы предложить вознаграждение.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]