Audacity (cant record desktop audio, stuck on alsa)

I know this is application specific, but this relates to my overrall nix config i think, pipewire, wireplumber, all enabled. But I cannot record internal desktop audio, how do i fix this? is it a nix fix

I set the recording device to pipewire, I heard the host device needed to be set to pipewire or smthin, but only alsa shows up. If any logs are needed tell me.

EDIT: Not really solved but I found a script that worked for pw-record, now ideally I would like to fix it for audacity at some point, or just some other gui audio recorder

cat > ~/Music/record-desktop.sh << 'EOF'
#!/bin/bash
OUTPUT="${1:-$HOME/Music/Recordings/recording-$(date +%Y%m%d-%H%M%S).wav}"
pw-record --target 0 "$OUTPUT" &
PID=$!
sleep 0.5
pw-link bluez_output.30:50:75:16:40:A6:monitor_FL pw-record:input_FL
pw-link bluez_output.30:50:75:16:40:A6:monitor_FR pw-record:input_FR
echo "Recording to $OUTPUT (PID $PID) — press Enter to stop"
read
kill $PID
echo "Done! Saved to $OUTPUT"
EOF
chmod +x ~/Music/record-desktop.sh

EDIT (2): Found a better script which autodetects the monitor:

#!/bin/bash
OUTPUT="${1:-$HOME/Music/Recordings/recording-$(date +%Y%m%d-%H%M%S).wav}"

# Find the RUNNING monitor source
MONITOR=$(pactl list short sources | awk '/monitor.*RUNNING/ {print $2}' | head -1)

if [ -z "$MONITOR" ]; then
    echo "Error: no active monitor source found" >&2
    exit 1
fi

# Try to find a matching input (e.g. bluez mic matching same MAC as monitor)
MAC=$(echo "$MONITOR" | grep -oP '[0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}' | head -1 | tr '_' ':')
MIC=$(pactl list short sources | grep -v monitor | awk -v mac="$MAC" '$0 ~ mac {print $2}' | head -1)

# Fall back to first non-monitor non-suspended source
if [ -z "$MIC" ]; then
    MIC=$(pactl list short sources | awk '!/monitor/ && /RUNNING|IDLE/ {print $2}' | head -1)
fi

echo "Recording desktop from: $MONITOR"
echo "Recording to: $OUTPUT"
echo "Press Ctrl+C to stop"

if [ -n "$MIC" ]; then
    echo "Recording mic from: $MIC"
    ffmpeg -f pulse -i "$MONITOR" -f pulse -i "$MIC" \
        -filter_complex amix=inputs=2:duration=longest \
        "$OUTPUT"
else
    echo "Warning: no mic found, recording desktop only"
    ffmpeg -f pulse -i "$MONITOR" "$OUTPUT"
fi

echo "Done! Saved to $OUTPUT"

EDIT (3): found something that includes my mic:

#
#!/bin/bash
OUTPUT="${1:-$HOME/Music/Recordings/recording-$(date +%Y%m%d-%H%M%S).wav}"

MONITOR=$(pactl list short sources | awk '/monitor.*RUNNING/ {print $2}' | head -1)

if [ -z "$MONITOR" ]; then
    echo "Error: no active monitor source found" >&2
    exit 1
fi

MAC=$(echo "$MONITOR" | grep -oP '[0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}[_:][0-9A-Fa-f]{2}' | head -1 | tr '_' ':')
MIC=$(pactl list short sources | grep -v monitor | awk -v mac="$MAC" '$0 ~ mac {print $2}' | head -1)

if [ -z "$MIC" ]; then
    MIC=$(pactl list short sources | awk '!/monitor/ && /RUNNING|IDLE/ {print $2}' | head -1)
fi

echo "Recording desktop from: $MONITOR"
echo "Recording to: $OUTPUT"
echo "Press Ctrl+C to stop"

if [ -n "$MIC" ]; then
    echo "Recording mic from: $MIC"
    ffmpeg -f pulse -i "$MONITOR" -f pulse -i "$MIC" \
        -filter_complex amix=inputs=2:duration=longest \
        "$OUTPUT"
else
    echo "Warning: no mic found, recording desktop only"
    ffmpeg -f pulse -i "$MONITOR" "$OUTPUT"
fi

echo "Done! Saved to $OUTPUT"
25 points · 10 comments · view on lemmy.world

10 Comments

Malix@sopuli.xyz · 2 pts · 178d (1 reply)

doesn't either of the loopback devices provide desktop audio?

SpiderUnderUrBed@lemmy.zip · 1 pts · 176d

I tried the loopback devices, didnt work, at most i made a script that worked, but i want it to work for audacity:

cat > ~/Music/record-desktop.sh << 'EOF'
#!/bin/bash
OUTPUT="${1:-$HOME/Music/Recordings/recording-$(date +%Y%m%d-%H%M%S).wav}"
pw-record --target 0 "$OUTPUT" &
PID=$!
sleep 0.5
pw-link bluez_output.30:50:75:16:40:A6:monitor_FL pw-record:input_FL
pw-link bluez_output.30:50:75:16:40:A6:monitor_FR pw-record:input_FR
echo "Recording to $OUTPUT (PID $PID) — press Enter to stop"
read
kill $PID
echo "Done! Saved to $OUTPUT"
EOF
chmod +x ~/Music/record-desktop.sh
StrangeAstronomer@lemmy.ml · 1 pts · 177d (2 replies)

pw-record

SpiderUnderUrBed@lemmy.zip · 1 pts · 176d (1 reply)

I managed to fix it for pw-record, I dont know how to get it working for audacity:

cat > ~/Music/record-desktop.sh << 'EOF'
#!/bin/bash
OUTPUT="${1:-$HOME/Music/Recordings/recording-$(date +%Y%m%d-%H%M%S).wav}"
pw-record --target 0 "$OUTPUT" &
PID=$!
sleep 0.5
pw-link bluez_output.30:50:75:16:40:A6:monitor_FL pw-record:input_FL
pw-link bluez_output.30:50:75:16:40:A6:monitor_FR pw-record:input_FR
echo "Recording to $OUTPUT (PID $PID) — press Enter to stop"
read
kill $PID
echo "Done! Saved to $OUTPUT"
EOF
chmod +x ~/Music/record-desktop.sh
mvirts@lemmy.world · 1 pts · 176d

Have you tried changing the connections in this script to use the audacity inputs instead of pw-record?

Also I thought audacity was out, tenacity is in.

Also it looks like wireplumber has some options that my be relevant like node.features.audio.monitor-ports listed here:

https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/settings.html

dhtseany@lemmy.ml · 1 pts · 177d (1 reply)

I think you need to install pipewire-pulse and pipewire-alsa. Make sure you have the pipewire.service and pipewire-pulse.service services enabled and started. What app are you using to make the app connections?

SpiderUnderUrBed@lemmy.zip · 1 pts · 176d

I am not using any app like qpwgraph to make connections, all i know is that this script works:

cat > ~/Music/record-desktop.sh << 'EOF'
#!/bin/bash
OUTPUT="${1:-$HOME/Music/Recordings/recording-$(date +%Y%m%d-%H%M%S).wav}"
pw-record --target 0 "$OUTPUT" &
PID=$!
sleep 0.5
pw-link bluez_output.30:50:75:16:40:A6:monitor_FL pw-record:input_FL
pw-link bluez_output.30:50:75:16:40:A6:monitor_FR pw-record:input_FR
echo "Recording to $OUTPUT (PID $PID) — press Enter to stop"
read
kill $PID
echo "Done! Saved to $OUTPUT"
EOF
chmod +x ~/Music/record-desktop.sh

as for everything else:


[spiderunderurbed@daspidercave:~/Music]$ systemctl status --user pipewire-pulse.service 
● pipewire-pulse.service - PipeWire PulseAudio
     Loaded: loaded (/etc/systemd/user/pipewire-pulse.service; linked-runtime; preset: ignored)
    Drop-In: /nix/store/admlblh3rvzwjyhvgl8wf5fdr44iqmgc-user-units/pipewire-pulse.service.d
             └─overrides.conf
     Active: active (running) since Thu 2026-02-26 18:55:45 NZDT; 23min ago
 Invocation: f234a6d525b844ba9ee769e0d46787ec
TriggeredBy: ● pipewire-pulse.socket
   Main PID: 3143 (pipewire-pulse)
      Tasks: 3 (limit: 18874)
     Memory: 14.5M (peak: 20.7M, swap: 2.5M, swap peak: 2.5M, zswap: 472.1K)
        CPU: 1.618s
     CGroup: /user.slice/user-1000.slice/user@1000.service/session.slice/pipewire-pulse.service
             └─3143 /nix/store/z8pz8hz2psggqsws4n7mzbbdghpcxm71-pipewire-1.4.9/bin/pipewire-pulse

Feb 26 18:55:45 daspidercave systemd[2666]: Started PipeWire PulseAudio.
Feb 26 18:55:45 daspidercave pipewire-pulse[3143]: mod.protocol-pulse: vm.overrides in pulse.properties are deprecated, use pulse.properties.ru>
Feb 26 18:55:45 daspidercave pipewire-pulse[3152]: pw.conf: execvp error 'pactl': No such file or directory
Feb 26 18:55:45 daspidercave pipewire-pulse[3154]: pw.conf: execvp error 'pactl': No such file or directory

[spiderunderurbed@daspidercave:~/Music]$ systemctl status --user pipewire-alsa
Unit pipewire-alsa.service could not be found.
[ble: exit 4]

[spiderunderurbed@daspidercave:~/Music]$ systemctl status --user pipewire-alsa.service
Unit pipewire-alsa.service could not be found.
[ble: exit 4]

[spiderunderurbed@daspidercave:~/Music]$ 
jafra@slrpnk.net · -2 pts · 178d (2 replies)

Is this a question?

artyom@piefed.social · 1 pts · 178d (1 reply)

The question mark usually denotes a question, yes.

jafra@slrpnk.net · 0 pts · 177d

Ah yeah. You're right. There ist this one question mark in between thats i oversaw at first. Either way, i wanted to hint to you thats maybe your post doesn't get perceived as a question much...