Mit Pulseaudio in Ubuntu 15.10 möchte ich zwei verschiedene Mikrofone in einer einzigen Senke kombinieren und sie die kombinierte Ausgabe auf zwei verschiedenen Ausgängen spielen lassen. Das folgende Skript macht den ersten Teil (im Web gefunden), aber die Ausgabe scheint nur auf einer einzigen Ausgabe zu spielen.Pulseaudio - kombinierte Mikrofonströme zur Wiedergabe von kombinierten Lautsprecherspeichern
Was ist für den letzten Schritt erforderlich? Diese
#!/bin/bash
# Script to map two pulseaudio hardware input sources as mono inputs
# to left and right channel of a new loopback-sink respectively. This
# sink can be used e.g. to use VoIP or record two microphones seperately.
# Copyright (C) 2013, Henning Hollermann, [email protected]
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
do_activate() {
while [ "x" = "x$LEFT" ]; do
echo "Choose Source for left channel by ID"
pactl list short sources
read ID
LEFT=$(pactl list short sources|awk '/^'$ID'/{print $2}')
done
while [ "x" = "x$RIGHT" ]; do
echo "Choose Source for right channel by ID"
pactl list short sources | grep -v $LEFT
read ID
RIGHT=$(pactl list short sources | grep -v $LEFT|awk '/^'$ID'/{print $2}')
done
# Create the name of the Combined sink
NAME="Combined_Mics:_Left:_"$(echo $LEFT|awk -F'.' '$0=$2')"_Right:_"$(echo $RIGHT|awk -F'.' '$0=$2')
echo "[LOAD] null sink as \"$NAME\" to connect the two mics to"
pactl load-module module-null-sink \
sink_name=combined channels=2 \
sink_properties="device.description=$NAME"
echo "[LOAD] map source 1 ($LEFT) to left channel of \"$NAME\""
pactl load-module module-remap-source \
source_name=${LEFT}_left_channel master=$LEFT channels=2 \
master_channel_map=mono,mono channel_map=left,left
pactl load-module module-loopback sink=combined source=${LEFT}_left_channel
echo "[LOAD] map source 2 ($RIGHT) to right channel of \"$NAME\""
pactl load-module module-remap-source \
source_name=${RIGHT}_right_channel master=$RIGHT channels=2 \
master_channel_map=mono,mono channel_map=right,right
pactl load-module module-loopback sink=combined source=${RIGHT}_right_channel
echo "[DONE] Now adjust the left and right channel volume of the new sink to be equally loud"
}
do_deactivate() {
echo "[UNLOAD] pulseaudio modules..."
echo "[UNLOAD] module-loopback"
pactl unload-module module-loopback
echo "[UNLOAD] module-remap-source"
pactl unload-module module-remap-source
echo "[UNLOAD] module-null-sink"
pactl unload-module module-null-sink
}
init() {
for exe in /usr/bin/pulseaudio /usr/bin/pactl; do
if [ ! -x "$exe" ]; then
echo "[ERROR] required file $exe not found or not executable"
exit 1
fi
done
[ ! -x /usr/bin/pavucontrol ] && echo "[NOTICE] pavucontrol might be very useful."
}
# MAIN
init;
case $1 in
activate|enable|start)
do_activate;;
deactivate|disable|stop)
do_deactivate;;
*)
echo "Usage: $0 [enable|disable]";;
esac;