====== Linux Musik Studio ======
Ich hab vor kurzem angefangen mir zu überlegen wie ich den Hardware Zoo bei mir reduzieren kann und möglichst viel über Linux Audio realisieren kann. Es war für mich sehr überraschend was da heute schon mit freier Software geht, nämlich fast alles.
===== Linux System =====
Wichtig sind folgende Änderungen am System/OS:
Zuerst muss der Benutzeraccount mit dem man später arbeiten will zu der Gruppe "audio" hinzugefügt werden:
sudo useradd -G audio BENUTZERACCOUNT
Die Anwendung Muse und auch Hydrogen brauchen spezielle Einstellungen um Hauptspeicher/RAM zu reservieren und das ohne Begrenzung. In meinem System war dieser Parameter auf 8192GB gesetzt:
~> ulimit -l
8192
Dieser muss auf "unlimited gesetzt werden. Dazu muss die Datei /etc/security/limits.conf angepasst werden. Folgende Zeilen werden ergänzt:
@audio - rtprio 99
@audio - memlock unlimited
Die Gruppe "audio" wird berechtigt "unlimited" RAM zu reservieren.
===== Software =====
==== Instrumente und Recording ====
^ Software ^ Nutzen ^ ^
| Guitarix | Gitarren-Syntheziser | |
| Hydrogen | Drum-Sequencer | |
| Ardour | Recording, Sequencer | |
| Muse | Recording, Sequencer | |
| LinuxSampler | Cubase Alternative, Sequencer | |
==== Tools ====
^ Software ^ Nutzen ^ Ersatz für ^
| qpwgraph | Grafisches Tool um Pipewire "Verkabelung" zu erstellen | |
| wpctl | Kommandozeilen Tool zur Pipewire Verkabelung/Volume etc | "wbctl status", "wpctl inspect nnn" |
| yabridge | Tool zum Bereitstellen von VST3 Windows Plugins | |
| lv2-zam-plugins | Multi Effekt Plugin | |
| lv2-HarmonicExciter | Fügt Oberwellen hinzu | Behringer Harmonizer |
| LSP Plugins | | |
| calf | Sammlung von Plugins, Kompressor, Dynamic Tools | Behringer Composer |
| asunder | Rippen von Audio CDs mit Samples | |
| akaiutil | Rippen von Samples von Akai S-2000 CDs | |
| | | |
| | | |
Als Backend für den Sound und die "Verkabelung" benutze ich pipewire mit dem pipewire-jack Paket.
Auf der grafischer Oberfläche "qjackctl" starten und dann auf den "Starten" Button klicken, dies startet den Jack Server den Guitarix braucht.
Zuerst im Jack Server die Ein- und Ausgabeports konfigurieren sonst startet zum Beispiel Hydrogen kann aber nicht bedient werden und nur durch "kill" beendet werden.
===== Akai CDs =====
Mein Device mit der jeweiligen CD ist /dev/sr0
Inhaltverzeichnis erste Partition anzeigen:
akailist -f /dev/sr0 -p1
CD rippen
akaiutil -r /dev/sr0
targetwav NAME.tar (Name des tar Archivs in den alle Samples als .wav gepackt werden)
tar xf NAME.tar
Erstellen eines 1:1 ISO Images auf Festplatte:
sudo dd if=/dev/sr0 of=/PFAD/UND/NAME/AUSGABE.ISO bs=2048 status=progress
===== Alsa versus Pipewire =====
Pipewire als Verbindungschicht zwischen alsa (als untereste Hardwarebasis) und Jack ist besser als Pulseaudio also lohnt es sich darauf zu wechseln. Um festzustellen ob pulseaudio oder pipewire benutzt werden kann folgermassen vorgegangen werden:
* systemctl --user status pipewire (Unbedingt als Audio Benutzer und nicht als root ausführen). Falls das aktiv anzeigt oder running läuft pipewire
* pactl info | grep -i server. Hier bekommt man den zur Zeit aktiven Soundserver angezeigt also entweder "pulseaudio" oder pipewire"
* systemctl --user status pulseaudio. Falls aktiv/running wird noch das klassische pulseaudio verwendet.
* aplay /usr/share/sounds/alsa/Front_Center.wav. Falls eine Tonausgabe erfolgt wird also direkt und nicht über pulseaudio/pipewire benutzt, ansonsten gibt es eine Fehlermeldung (busy/Device in use).
* sudo zypper install pipewire pipewire-pulseaudio pipewire-jack pipewire-alsa. Erstzen von pulseaudio durch die entsprechenden Komponenten von pipewire.
* systemctl --user disable --now pulseaudio
* systemctl --user mask pulseaudio
* systemctl --user enable --now pipewire pipewire-pulse
* systemctl --user enable --now wireplumber
* Neu anmelden oder Reboot
* pactl info | grep -i server. Hier sollte jetzt "PulseAudio (on Pipewire)" erscheinen
* pw-top (Jack Latenz anzeigen)
===== Midi- und Audioports =====
Wichtig hier ist das die Reihenfolge der Audiokarten als Karte 0, Karte 1 usw. sich mit jedem Neustart ändern kann. Darauf kann man sich also nicht verlassen. Zum Beispiel war "Lambda (Lexicon Lambda)" nach dem ersten Aanschliessen per USB "Karte 5" nach einem Neustart aber "Karte 0". Also keine Angst wenn es so aussieht als wenn auf einmal eine Karte verschwunden wäre...
==== Rohes System ====
Midi-Eingänge
->aconnect -i
client 0: 'System' [type=Kernel]
0 'Timer '
1 'Announce '
client 14: 'Midi Through' [type=Kernel]
0 'Midi Through Port-0
Midi-Ausgänge
-> aconnect -o
client 14: 'Midi Through' [type=Kernel]
0 'Midi Through Port-0
Audio-Ausgänge
->aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
Karte 1: Mic [Samson Meteor Mic], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: HDMI [HDA ATI HDMI], Gerät 3: HDMI 0 [HDMI 0]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: HDMI [HDA ATI HDMI], Gerät 7: HDMI 1 [HDMI 1]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: HDMI [HDA ATI HDMI], Gerät 8: HDMI 2 [HDMI 2]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: HDMI [HDA ATI HDMI], Gerät 9: HDMI 3 [SMT27A300]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: HDMI [HDA ATI HDMI], Gerät 10: HDMI 4 [PL2783Q]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 2: HDMI [HDA ATI HDMI], Gerät 11: HDMI 5 [PL2760Q]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 3: Generic [HD-Audio Generic], Gerät 0: ALC1220 Analog [ALC1220 Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 3: Generic [HD-Audio Generic], Gerät 1: ALC1220 Digital [ALC1220 Digital]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Audio-Eingänge
~> arecord -l
**** Liste der Hardware-Geräte (CAPTURE) ****
Karte 0: U0x46d0x821 [USB Device 0x46d:0x821], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 0/1
Sub-Gerät #0: subdevice #0
Karte 1: Mic [Samson Meteor Mic], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 3: Generic [HD-Audio Generic], Gerät 0: ALC1220 Analog [ALC1220 Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Karte 3: Generic [HD-Audio Generic], Gerät 2: ALC1220 Alt Analog [ALC1220 Alt Analog]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
Ports anzeigen die Jack kennt/benutzen Kann:
~> jack_lsp
Cannot lock down 86611866 byte memory area (Cannot allocate memory)
system:capture_1
system:capture_2
==== Bomge BMG-22S ====
->aplay -l
**** Liste der Hardware-Geräte (PLAYBACK) ****
.
.
Karte 4: AUDIO [BOMGE AUDIO], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
->arecord -l
**** Liste der Hardware-Geräte (CAPTURE) ****
.
.
Karte 4: AUDIO [BOMGE AUDIO], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
==== Digitech Lexicon Lambda ====
->aplay -l
.
.
Karte 5: Lambda [Lexicon Lambda], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
->arecord -l
.
.
Karte 5: Lambda [Lexicon Lambda], Gerät 0: USB Audio [USB Audio]
Sub-Geräte: 1/1
Sub-Gerät #0: subdevice #0
===== liquidsfz =====
Sampler speziell für SFZ Samples. Frontend ist qliquidsfz.
==== liquidsfz ====
Installation Sampler:
Download ZIP von GitHub https://github.com/swesterfeld/liquidsfz und entpacken, dann:
cd liquidsfz
./configure
make
make install
==== qliquidsfz ====
Installation Frontend:
Download ZIP von GitHub https://github.com/be1/qliquidsfz und entpacken, dann:
cd qliquidsfz
qmake -config release (or qmake6 -config release)
make
sudo make install
===== vmpk =====
Software Midi Keyboard
sudo zypper install vmpk
===== Carla =====
Full featured Audio Plugin Host
===== sfizz =====
Repository für sfizz:
zypper addrepo https://download.opensuse.org/repositories/home:sfztools:sfizz/openSUSE_Tumbleweed/home:sfztools:sfizz.repo
sudo zypper install sfizz
Download sfizz-ui von GitHub
git clone --recursive https://github.com/sfztools/sfizz-ui.git
Installieren der Abhängigkeiten:
sudo zypper install xcb-util-devel
sudo zypper install xcb-util-cursor-devel
sudo zypper install xcb-util-keysyms-devel
sudo zypper install libxkbcommon-devel
sudo zypper install libxkbcommon-x11-devel
cd sfizz-ui
mkdir build
cd build
cmake ..
cmake --build .