Musik:
Synthesizer unter Linux







Nützliche Links:

  • https://linuxmusician.com/how-to-install-and-configure-jack-audio-on-linux/
  • https://jackaudio.org/applications/
  • https://wiki.archlinux.org/title/USB_MIDI_keyboards
  • http://synthesizeracademy.com
  • https://www.bonedo.de/artikel/synthesizer-basics-folge-1/2/
  • http://vco1.de/#Podcast
  • https://www.youtube.com/watch?v=UxGswh6XLto
  • https://www.youtube.com/@DasDoktorchen/videos



Nützliche Software, zur Installation empfohlen:

  • audacity (Multitrack)
  • Yoshimi (Synthesizer)
  • amsynth (Synthesizer)

Vorbereitende Arbeiten:

Um Probleme aus dem Weg zu gehen, kann man seine User-ID (nehmen wir einmal an, diese
würde "userxy" heißen) von Rewt in die Gruppe "audio" aufnehmen lassen, z. B.:

/etc/group:

(...)

audio:x:29:pulse,userxy
(...)

DAW:

Eine DAW (Digital Audio Workstation) ist ein Verbund digitaler Geräte zur Aufzeichnung und Verarbeitung von Schallsignalen bei Tonaufnahmen, Musikproduktionen, Abmischung und Mastering, das sich durch eine hohe Integration der Komponenten auszeichnet. Heute versteht man darunter oft ein Computersystem mit entsprechender Hardware und Musiksoftware (Wikipedia)

LV2:

LV2 ist eine Programmierschnittstelle für Audio-Plug-Ins zur Kommunikation zwischen Host-Anwendungen, Filtern und Audio-Effekten unter Linux. LV2 ist der Nachfolger von LADSPA (Linux Audio Developer's Simple Plugin API)

VST:

VST steht für Virtual Studio Technology, ein Quasi-Instustrie-Standard von Steinberg Media Technologies für sein Sequenzer-Programm "Cubase" entwickelt.

LMMS:

LMMS steht für Linux MultiMedia Studio, ist kein Synthesizer sondern eine komplette DAW (Digital Audio Worksation, s.o.)

Midi-Keyboard:

Im Juni 2025 habe ich mir das Midi-Keyboard Impact LX49+ von Nektar gekauft.

Ziel ist es, Blender-Filme mit interessanter Musik zu unterlegen, ohne in Copyright-Probleme hineinzulaufen.

Das Keyboard wird via USB an den PC angestöpselt.


Erstens: Wird ganz allgemein ein Midi-Gerät am USB-Port erkannt? - Kontrolle:

user@systemname:~$ lsusb
Bus 001 Device 006: ID 2467:2015 Nektar Impact LX49+
    Ja.





Zweitens: Wird das erkannte Midi-Gerät von ALSA ebenfalls erkannt? - Kontrolle via
aconnect -i und aconnect -o (Midi Input Device, Midi Output Device).


Acconect ist ein Utility, mit dem man zwei verschiedene ALSA Ports miteinander verbinden oder
bereits gesetzte Verbindungen wieder lösen kann. Ferner kann Aconnect mit der Option "-i" aktuelle Ports anzeigen:


user@systemname:~$ acconect -i
client 0: 'System' [type=Kernel]
   0 'Timer           '
   1 'Announce        '
client 14: 'Midi Through' [type=Kernel]
   0 'Midi Through Port-0'
client 20: 'Impact LX49+' [type=Kernel,card=1]
   0 'Impact LX49+ MIDI1'
   1 'Impact LX49+ MIDI2'
    Ja.


user@systemname:~$ aconnect -o
client 14: 'Midi Through' [type=Kernel]
   0 'Midi Through Port-0'
client 20: 'Impact LX49+' [type=Kernel,card=1]
   0 'Impact LX49+ MIDI1'
    Ja.



Wenn wir ALSA verwenden wollen, um MIDI-Connections zu verwenden (und eben nicht JACK):

Drittens: Für Verwendung unter ALSA brauchen wir das Paket: aconnectgui
(und wenn wir das nicht schon haben: alsa-utils) installierbar mit Synaptic.



Viertens: ALSA handelt das MIDI Routing. Um die MIDI-Verbindungen anzuzeigen, verwenden wir aconnect -l:

user@systemname:~$ aconnect -l
(...)
client 0: 'System' [type=Kernel]
   0 'Timer           '
   1 'Announce        '
client 14: 'Midi Through' [type=Kernel]
   0 'Midi Through Port-0'
client 20: 'Impact LX49+' [type=Kernel,card=1]
   0 'Impact LX49+ MIDI1'
   1 'Impact LX49+ MIDI2'






Fünftens: Das mit dem Paket "alsa-utils" mitgelieferte Programm "aseqdump" kommt nun zum Einsatz:
    => Das Programm erzeugt einen ALSA Sequiencer Port und man kann Input Devices darauf subskribieren (s.u.)
    => Das Programm zeigt nach dem korrekten Binding, ob Tastenanschläge auf dem Keyboard beim PC ankommen.

Allgemein: Die vom obigen Befehl "aconnect -i" ermittelte Client-Nummer (das ist die #20
- und nicht die #14, das ist nämlich Midi Through!) pollen wir nun mal:

user@systemname:~$ aseqdump -p 20
Waiting for data. Press Ctrl+C to end.
Source  Event                  Ch  Data
20:0   Control change          0, controller 11, value 0


Wenn wir nun auf dem Midi-Keyboard einige Tasten anschlagen, erscheint jeweils eine Infozeile in der Konsole:
Source  Event                  Ch  Data
20:0   Control change          0, controller 11, value 0
20:0   Note on                 0, note 48, velocity 35
20:0   Note off                0, note 48, velocity 0
20:0   Note on                 0, note 60, velocity 17
20:0   Note on                 0, note 64, velocity 24
20:0   Note off                0, note 60, velocity 0
20:0   Note off                0, note 64, velocity 0


Auch wenn wir an Drehreglern auf dem Midi-Keyboard "herumspielen", werden diese als Infozeilen sichtbar
(halt nicht als Note non/off, sondern als Control change - dabei hat jeder Regler seine eigene Nummer...)
20:0   Control change         15, controller 30, value 97
20:0   Control change         15, controller 30, value 98
20:0   Control change         15, controller 30, value 99
20:0   Control change         15, controller 110, value 127
20:0   Control change         15, controller 110, value 0


Auf diese Weise kann man beweisen, dass das Zusammenspiel der Signale vom Midi-Keyboard zum PC funktioniert.

Durchreichen der Keyboard-Einstellungen an Software-Synthesizer:

Wenn man auf dem Nektar LX49+ die Taste "Prset" (diese befindet sich in der Mitte, unterhalb der LED-ANzeige)
aktiviert (sie leuchtet dann weiß auf), werden die Dreh- und Schieberegler-Veränderungen, die man am
Keyboard macht, auf den Synthesizer übertragen, d.h. man spart sich die mühselige Bedienung
mit der Maus am Bildschirm.

Synthesizer Yoshimi

Als Synthesizer verwende ich erst einmal Yoshimi. Er bringt einige Banks mit, bei denen ich folgende
Einstellungen interessant fand:

BankSound-ID
/ Bezeichnung
Beschreibung
Bank 5: Arpeggios 3. Arpeggio 3 Rechts-und links toggelnder kurzer Sound
Bank 5: Arpeggios 34. Sequence 2
Bank 25: Cormi Sound 76. Pinkollo Panflöte mit zuviel Hall
Bank 25: Cormi Sound 106, Entropia Scifi
Bank 40: Fantasy 6. Space Synth Brass Fernseh-Titelmelodie
Bank 50: Misc 33. Trash Synth 1 Schocker
Bank 95: Synth 37. Resonance Synth Kurz anschlagen: Echo erscheint
Bank 105: Mysterious Bank 30. cool organ 2 Deep Purple: Child in Time-Orgel
Bank 105: Mysterious Bank 52. another planet Scifi
Bank 105: Mysterious Bank 54. another space Scifi
Bank 105: Mysterious Bank 58. echoes Woodhenge-like
Bank 110: Will Godfrey Collection 7. ethereal Soft tronic
Bank 110: Will Godfrey Collection 24. full strings Matrix like
Bank 110: Will Godfrey Collection 40. Master synth low Orchestral, episch

Fiddling around with Bristol:

Bristol kann folgende "alte" Synthesizer emulieren:

              moog mini
              moog explorer (voyager)
              moog voyager electric blue
              moog memory
              moog sonic 6
              moog/realistic mg-1 concertmate
              hammond module (deprecated, use -b3)
              hammond B3 (default)$
              sequential circuits prophet-5
              sequential circuits prophet-5/fx
              sequential circuits prophet-10
              sequential circuits pro-one
              fender rhodes mark-I stage 73
              fender rhodes bass piano
              crumar roadrunner electric piano
              crumar bit 01
              crumar bit 99
              crumar bit + mods
              crumar stratus synth/organ combo
              crumar trilogy synth/organ/string combo
              oberheim OB-X
              oberheim OB-Xa
              arp axxe
              arp odyssey
              arp 2600
              arp/solina string ensemble
              korg polysix
              korg poly-800
              korg mono/poly
              korg ms20 (unfinished: -libtest only)
              vox continental
              vox continental super/300/II
              roland juno-60
              roland jupiter-8
              baumann bme-700
              bristol bassmaker sequencer
              yamaha dx-7
              yamaha cs-80 (unfinished)
              commodore-64 SID chip synth
              commodore-64 SID polyphonic synth (unfinished)
              granular synthesiser (unfinished)
              ems synthi-a (unfinished)


 entsprechend:

              Option:            Emulierter Synthesizer:
              ------------------------------------------
              -mini              - moog mini
              -explorer          - moog voyager
              -voyager           - moog voyager electric blue
              -memory            - moog memory
              -sonic6            - moog sonic 6
              -mg1               - moog/realistic mg-1 concertmate
              -hammond           - hammond module (deprecated, use -b3)
              -b3                - hammond B3 (default)
              -prophet           - sequential circuits prophet-5
              -pro52             - sequential circuits prophet-5/fx
              -pro10             - sequential circuits prophet-10
              -pro1              - sequential circuits pro-one
              -rhodes            - fender rhodes mark-I stage 73
              -rhodesbass        - fender rhodes bass piano
              -roadrunner        - crumar roadrunner electric piano
              -bitone            - crumar bit 01
              -bit99             - crumar bit 99
              -bit100            - crumar bit + mods
              -stratus           - crumar stratus synth/organ combo
              -trilogy           - crumar trilogy synth/organ/string combo
              -obx               - oberheim OB-X
              -obxa              - oberheim OB-Xa
              -axxe              - arp axxe
              -odyssey           - arp odyssey
              -arp2600           - arp 2600
              -solina            - arp/solina string ensemble
              -polysix           - korg polysix
              -poly800           - korg poly-800
              -monopoly          - korg mono/poly
              -ms20              - korg ms20 (unfinished: -libtest only)
              -vox               - vox continental
              -voxM2             - vox continental super/300/II
              -juno              - roland juno-60
              -jupiter           - roland jupiter-8
              -bme700            - baumann bme-700
              -bm                - bristol bassmaker sequencer
              -dx                - yamaha dx-7
              -cs80              - yamaha cs-80 (unfinished)
              -sidney            - commodore-64 SID chip synth
              -melbourne         - commodore-64 SID polysynth (unfinished)
              -granular          - granular synthesiser (unfinished)
              -aks               - ems synthi-a (unfinished)
              -mixer             - 16 track mixer (unfinished: -libtest only)




Beispiele zum Starten von Kommandozeile aus:

user@systemname:~$ startBristol -alsa -mini
user@systemname:~$ startBristol -alsa -memory
user@systemname:~$ startBristol -alsa -juno
user@systemname:~$ startBristol -alsa -solina

Nachdem der Synthesizer gestartet und sein Bild angezeigt wird, kann man in einer zweiten Konsole
nachsehen, welche Client-IDs belegt sind:

user@systemname:~$ aconnect -l
(...)

client 20: 'Impact LX49+' [type=Kernel,card=1]
   0 'Impact LX49+ MIDI1'
   1 'Impact LX49+ MIDI2'
client 128: 'bristol' [type=User,pid=3393]
   0 'bristol input  

(...)




Verbinden des Bristol-Synthesizers mit dem Midi-Keyboard:

Nachdem! der Synthesizer sichtbar ist, geschieht dies durch den
Konsolen-Befehl: aconnect <Out-Nummer> <In-Nummer>

In unserem Fall: Wir verbinden "Out" vom Midi-Keyboard #20 mit "In" #128 vom Bristol-Sythesizer:

user@systemname:~$ aconnect 20 128

ALSA oder JACK?

ALSA ist für denjenigen Anwender gedacht, der einfach mal schnell Musik aufnehmen und wiedergeben will. ALSA läuft mit fast jeder Soundkarte, aber ist für komplizierte Szenarios nicht so gut geeignet.

JACK (Jack Audio Connection Kit) ist ein "advanced Sound Server" und wird eher im professionellen Umfeld eingesetzt. Insbesondere ist JACK auf geringe Latenzen ausgerichtet, auf Multitrack- und MIDI-Fähigkeit und nahtlosem Ineinandergreifen und Agieren von Soundprogrammen miteinander.

Man kann beide Soundsysteme einsetzen - je nach Bedarf wird eben das eine oder das andere angeworfen.

JACK:

Installation: Unter Debian vorinstalliert.

Setup:
    Check: In der Konsole ruft man das Userinterface zu JACK auf:
    user@systemname:~$ qjackctl
    Nun kann man versuchen, den JACK-Server zu starten:



    Falls Probleme auftauchen:



    Prüfen, dass JACK-Daemon vorhanden ist:
    uer@systemname:~$ jackd --version
    jackdmp version 1.9.21 tmpdir /dev/shm protocol 9


    Da eine Reinstallation denselben Fehler brachte, schaute ich mir die Einstellungen in qjackctl an und setzte neu:



    Mit diesen Einstellungen ("fürs erste!") ließ sich dann JACK-Server ohne Probleme starten.

    Leider hörte man nichts. Kontrolle:

    uer@systemname:~$ aplay -l
    **** Liste der Hardware-Geräte (PLAYBACK) ****
    Karte 0: PCH [HDA Intel PCH], Gerät 0: ALC897 Analog [ALC897 Analog]
     Sub-Geräte: 1/1
     Sub-Gerät #0: subdevice #0
    Karte 0: PCH [HDA Intel PCH], Gerät 3: HDMI 0 [LG TV SSCR2]
     Sub-Geräte: 1/1
     Sub-Gerät #0: subdevice #0
    Karte 0: PCH [HDA Intel PCH], Gerät 7: HDMI 1 [HDMI 1]
     Sub-Geräte: 1/1
     Sub-Gerät #0: subdevice #0
    Karte 0: PCH [HDA Intel PCH], Gerät 8: HDMI 2 [HDMI 2]
     Sub-Geräte: 1/1
     Sub-Gerät #0: subdevice #0

Synthesizer-related Infos:

AM (Amplitude Modulation):

VCA (Voltage Controlled Amplifier):

Ein VCA ist eine elektronische Einheit, bei der das hereinkommende Audiosignal mit Hilfe einer ebenfalls
zum VCA hereinkommenden (vom Benutzer veränderbaren) elektrischen Spannung (mit CV für Control Voltage)
verändert wird. Ist CV gleich null (oder negativ) wird das Audiosignal nicht mehr durchgelassen und
der Ausgang des VCA ist still. Die Hauptanwendung von VCA ist das "Envelope Shaping", d.h. die Veränderung der Hüllkurve.

Envelope (deutsch: Hüllkurven):