====== Audio unter Linux ======
sx
Audio Debugging für OpenSUSE: https://en.opensuse.org/SDB:Audio_troubleshooting
Das Basis-Framework für Sound ist ALSA mit dem für die Soundkarte passenden Treiber. Moderne Linux Distros transportieren alle Audiodaten über den Pulseaudio Daemon als netzwerk-transparenten Datenstream. Daher kann der Pluseaudio Daemon auch auf entfernte Sound-Hardware im Netz zugreifen. Entsprechend kann man Audiodaten über ALSA oder Pulseaudio abgreifen und weiter verarbeiten. Pulseaudio abstrahiert die Audiodaten vollständig von der darunter liegenden Hardware:
//Soundquelle oder -Ziel → PulseAudio → ALSA-Treiber → Soundkarte//
Jedes Soundgerät ist entweder Quelle (Source) oder Senke (Sink) für Audiodaten.
===== Aufnehmen auf der Kommandozeile =====
**Mit arecord/aplay**
Auflisten aller Mikrofone
arecord -l
**** Liste der Hardware-Geräte (CAPTURE) ****
Karte 1: PCH [HDA Intel PCH], Gerät 0: ALC1150 Analog [ALC1150 Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 1: PCH [HDA Intel PCH], Gerät 2: ALC1150 Alt Analog [ALC1150 Alt Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 3: CinemaTM [Microsoft® LifeCam Cinema(TM)], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 4: MS [Sennheiser USB-ED CC 01 for MS], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Aufnahme im Sample Format S16_LE (16 bit little endian, 44100, stereo) in zwei Kanälen (-c) mit Rate 48000 Hertz (-r) für 20 Sekunden (-d) von einem bestimmten Mikrofon (--device)
arecord -f S16_LE -c 2 -r 48000 -d 20 --device="hw:4,0" tmp/test.wav
===== Mit Pulseaudio =====
pactl: Control a running PulseAudio sound server
list [short] [TYPE]
Dump all currently loaded modules, available sinks, sources, streams, etc. TYPE must be one of: modules,
sinks, sources, sink-inputs, source-outputs, clients, samples, cards. If not specified, all info is
listed. If short is given, output is in a tabular format, for easy parsing by scripts.
Oder über pacmd, Auflisten der Devices
thommie@locutus:~> pacmd list-sources | egrep '^\s+name:.*\.monitor'
name:
name:
name:
name:
Aufnehmen
parecord --channels=1 -d STREAM_NAME filename.wav
===== Aufnehmen aus einer bestimmten Applikation =====
(ohne Störung durch Notification aus Plasma/KDE usw.)
Auflisten der Quellen
pacmd list-sinks | egrep '^\s+name: .*alsa_output'
At a high level, here is what you are going to do:
- Create a “null” sink that you will be recording. Let’s call it ''recording''.
- Create a combined sink that will send its input to both headphones and the ''recording'' sink. Otherwise, you will be able to record a stream but not hear it yourself. So, let’s call this sink ''combined''.
- Direct the sound from the specific applications you want to record into the combined sink.
- Record the monitor of the ''recording'' sink to a file.
Find out the name of your output device by running
''pacmd list-sinks | egrep '^\s+name: .*alsa_output'''
In my case, it says
''name: ''
To create the two sinks, run these commands (you need to substitute the name of the output device that you learned on the previous step):
''pacmd load-module module-null-sink sink_name=recording sink_properties=device.description=recording
pacmd load-module module-combine-sink sink_name=combined sink_properties=device.description=combined \
slaves=recording,alsa_output.pci-0000_00_1f.3.analog-stereo''
If you do this often, make it a permanent setup by creating the file ''~/.config/pulse/default.pa'' with this contents (note that the long ''load-module'' command should be on a single line, don’t wrap it):
''.include /etc/pulse/default.pa
load-module module-null-sink sink_name=recording sink_properties=device.description=recording
load-module module-combine-sink sink_name=combined sink_properties=device.description=combined slaves=recording,alsa_output.pci-0000_00_1f.3.analog-stereo''
Now, redirect the sound to the ''combined'' sink:
- Run the ''pavucontrol'' command (a graphical window will appear) and go to the “Playback” tab.
- Start the application you’d like to record.
- The application should appear in ''pavucontrol''. If it doesn’t, make sure the application produces some sound. Unfortunately, until the application tries to play something, PulseAudio cannot “see” it.
Quelle: [[https://ro-che.info/articles/2017-07-21-record-audio-linux|https://ro-che.info/articles/2017-07-21-record-audio-linux]]
===== pipewire als pulseaudio Ersatz =====
https://cubiclenate.com/2021/07/17/pipewire-audio-server-on-opensuse-tumbleweed/
Pakete nachinstallieren
sudo zypper in pipewire pipewire-pulseaudio pipewire-alsa''
Konflikt
Problem: the installed pulseaudio-15.0-6.1.x86_64 conflicts with 'pulseaudio-daemon' provided by the to be installed pipewire-pulseaudio-0.3.42-1.1.x86_64
Solution 1: Following actions will be done:
deinstallation of pulseaudio-15.0-6.1.x86_64
deinstallation of pulseaudio-module-bluetooth-15.0-6.1.x86_64
deinstallation of pulseaudio-module-gsettings-15.0-6.1.x86_64
deinstallation of pulseaudio-module-x11-15.0-6.1.x86_64
deinstallation of pulseaudio-module-zeroconf-15.0-6.1.x86_64
deinstallation of pulseaudio-lang-15.0-6.1.noarch
Solution 2: do not install pipewire-pulseaudio-0.3.42-1.1.x86_64
Diese Pakete werden deinstalliert
The following 7 packages are going to be REMOVED:
alsa-plugins-pulse pulseaudio pulseaudio-lang pulseaudio-module-bluetooth pulseaudio-module-gsettings
pulseaudio-module-x11 pulseaudio-module-zeroconf
**Tuning**: https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Migrate-PulseAudio
**Crackling/Popping issues on intel-hda soundcard**
https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1569
Neustart Audio-System (z.B: bei Erkennungsproblem Bluetooth Audio):
systemctl restart sound.target
===== Audio Cleanup =====
* Step one: NOISE REDUCTION
* Step two: COMPRESSION
* Step three: LIMITER FILTER
* Step four: EQUALIZER
* Step five: NORMALIZE