vois/scripts/setup_virtual_mic.sh
loki5512344 b0d685a110 Initial release: real-time voice changer in pure Rust
Phase-vocoder pitch/formant shifting, 12 presets, effect chain,
noise gate, WAV recording, full-screen TUI (arrow/mouse control)
and a built-in PipeWire/PulseAudio virtual mic (vois.rs).
GPL-3.0-or-later.
2026-08-02 17:54:50 +02:00

31 lines
1.1 KiB
Bash

#!/usr/bin/env bash
# Create the "vois" null sink and expose its monitor as a virtual mic.
# The default sink is left untouched: vois routes only its own playback
# stream to the "vois" sink, so other apps keep playing to your real output.
set -eu
SINK_NAME="vois.rs"
SINK_DESC="vois.rs virtual mic"
REMAP_NAME="vois.rs"
# Idempotency check: field 2 of `pactl list short <x>` is the object name.
if ! pactl list short sinks | awk -v n="${SINK_NAME}" '$2==n' | grep -q .; then
pactl load-module module-null-sink \
sink_name="${SINK_NAME}" \
sink_properties="device.description=${SINK_DESC}"
echo "created sink: ${SINK_NAME}"
else
echo "sink already present: ${SINK_NAME}"
fi
if ! pactl list short sources | awk -v n="${REMAP_NAME}" '$2==n' | grep -q .; then
pactl load-module module-remap-source \
source_name="${REMAP_NAME}" \
master="${SINK_NAME}.monitor"
echo "created remapped source: ${REMAP_NAME}"
else
echo "remapped source already present: ${REMAP_NAME}"
fi
echo "virtual mic source name(s): ${SINK_NAME}.monitor and ${REMAP_NAME}"
echo 'use "vois.rs" (or "vois.rs.monitor") as your microphone in apps'