Я использую ProjectM аудио-визуализатор на Linux. Я использую Ubuntu и Pulseaudio, и поэтому я использую бинарный файл projectm-pulseaudio. К сожалению, кажется, что разработка ProjectM прекратилась, и для Linux нет ничего похожего на него.
Я рассматриваю возможность взлома исходного кода, чтобы исправить пару проблем, с которыми я столкнулся, но сначала хочу понять, возможно ли то, что я хочу сделать, так как мой C ++ очень ржавый, и мои знания Pulseaudio и qt около нуля.
ProjectM прослушивает выбор пользователем одного из мониторов устройства вывода Pulseaudio. Есть графический интерфейс для выбора, который вы хотите, и я могу сделать тот же выбор из графического интерфейса управления громкостью Pulseaudio. В моем случае я могу выбрать аудиовыход HDMI моей видеокарты, аналоговый аудиовыход моей материнской платы или цифровой аудиовыход моей материнской платы. Я использую последний из них, так как там подключены мои динамики.
Это главная проблема: он слушает смешанный аудиопоток на выходе из компьютера. Я хочу, чтобы он только слушал музыкальный поток; то есть определенный аудиопоток на пути в Pulseaudio. Это обеспечит пару преимуществ:
Кажется, что громкость музыкального проигрывателя (которая равна громкости, установленной в потоке музыкального проигрывателя, к которому я могу получить доступ из графического интерфейса управления громкостью Pulseaudio), также влияет на визуализацию, что нежелательно, но я надеюсь, что это просто эффект запуска, поскольку уменьшение громкости музыкального проигрывателя, очевидно, снижает амплитуду к тому времени, когда он попадает в приемник, что и прослушивает ProjectM. Что я действительно хочу, так это чтобы ProjectM получал полную громкость звукового сигнала, прежде чем он будет уменьшен с помощью какого-либо регулятора громкости.
Наконец, есть еще одно препятствие в том, что я использую функцию воспроизведения, которая уменьшает громкость каждой песни, так что каждый альбом имеет эквивалентную воспринимаемую громкость. По умолчанию для функции воспроизведения используется значение 89 дБ, поэтому я думаю, что этого может быть достаточно, чтобы увеличить каждую выборку на соответствующую величину, как только она попадет в ProjectM. Это, наверное, лучшее, что я могу сделать, так как Pulse не имеет представления о повторной игре, но я бы приветствовал другие предложения.
Таким образом, общий вопрос заключается в том, возможно ли все это звучит. Особенно:
И, наконец, любые советы или ресурсы, на которые стоит обратить внимание, будут оценены. Или, если у вас есть навыки для этого и вы заинтересованы в этом, я мог бы предложить вознаграждение.
Задача ещё не решена.