From 6f47cc4ecb8b1703dc38252daf7376fb24866f8f Mon Sep 17 00:00:00 2001 From: kj Date: Thu, 10 Mar 2022 14:56:00 -0400 Subject: [PATCH] Change to a pipewire way and for start/stop virtual sinks. Also make this more like a command with params that a simple script. --- TwitchVOD | 67 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/TwitchVOD b/TwitchVOD index 175ccdb..2618f50 100755 --- a/TwitchVOD +++ b/TwitchVOD @@ -1,12 +1,61 @@ -#!/bin/sh +#!/bin/bash -# Use "pactl list short sinks" to see your devices -AUDIOOUTPUTDEVICENAMEHERE=bluez_output.00_25_DB_69_D3_0B.a2dp-sink +## +# Create virtual sinks for use it on Twitch VOD Track. +# +# @author kj +# @website http://kj2.me +# @licence MIT +## -# pactl load-module module-remap-sink sink_name=base_output master=$AUDIOOUTPUTDEVICENAMEHERE channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right remix=no; -# pacmd update-sink-proplist base_output device.description="Main_Sink"; -# pactl load-module module-remap-sink sink_name=music_output master=$AUDIOOUTPUTDEVICENAMEHERE channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right remix=no; -# pacmd update-sink-proplist music_output device.description="Music_Sink" +AUDIOOUTPUTDEVICE=bluez_output.00_25_DB_69_D3_0B.a2dp-sink -pactl load-module module-remap-sink sink_name="Main_Sink" master=$AUDIOOUTPUTDEVICENAMEHERE channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right remix=no; -pactl load-module module-remap-sink sink_name="Music_Sink" master=$AUDIOOUTPUTDEVICENAMEHERE channels=2 master_channel_map=front-left,front-right channel_map=front-left,front-right remix=no; +function startSinks() { + if [ -f "sinks.pid" ]; then + echo "Se ha encontrado el archivo de configuraciĆ³n de dispositivos virtuales previos." + stopSinks + fi + + AUDIOOUTPUTDEVICE=$1 + + echo "Creando los nuevos dispositvos virtuales..." + pw-loopback --capture-props='media.class=Audio/Sink node.name=Music_Sink audio.position=[FL FR]' --playback-props='audio.position=[FR FL] node.target="'$AUDIOOUTPUTDEVICE'"' > /dev/null 2>&1 & + Main_PID=$! + pw-loopback --capture-props='media.class=Audio/Sink node.name=Main_Sink audio.position=[FL FR]' --playback-props='audio.position=[FR FL] node.target="'$AUDIOOUTPUTDEVICE'"' > /dev/null 2>&1 & + Music_PID=$! + + echo $Main_PID >> sinks.pid + echo $Music_PID >> sinks.pid + + echo "Las dispositivos de audio virtuales han sido creados :)." +} + +function stopSinks() { + if [ -f "sinks.pid" ]; then + echo "Deteniendo los dispositivos virtuales..." + while read -r pid; do + kill -9 $pid + done < sinks.pid + rm sinks.pid + echo "Dispositivos virtuales detenidos." + else + echo "No se ha encontrado el archivo de configuraciĆ³n, no hay nada para detener." + fi +} + +if [ "$1" == "start" ]; then + startSinks $AUDIOOUTPUTDEVICE + exit +fi + +if [ "$1" == "stop" ]; then + stopSinks + exit +fi + +if [ "$1" == "list" ]; then + pactl list short sinks + exit +fi + +echo "Modo de uso: $(basename $0) [start|stop|list]"