AlsaModularSynth, FluidSynth und NoteEdit

Aus LinuxUser 11/2003

AlsaModularSynth, FluidSynth und NoteEdit

Instrumente Marke Eigenbau

Mit Synthesizer-Programmen greifen Sie auf reichhaltige Instrumentensammlungen zurück oder basteln sich gleich eigene. Ein Notensatzsystem spielt Ihre Komposition mit den Instrumenten Ihrer Wahl ab.

Wollen Sie nicht nur eigene Partituren schreiben, sondern diese auch gleich mit selbst entworfenen Instrumenten spielen? Die Synthesizer-Programme FluidSynth[10] und AlsaModularSynth[14] erfüllen diese Aufgabe im Zusammenspiel mit dem Noteneditor NoteEdit[1].

NoteEdit

SuSE ist derzeit die einzige bekannte Distribution, die NoteEdit mitliefert, für Red Hat 9 finden Sie RPM-Pakete von NoteEdit und der TSE3-Bibliothek auf der Heft-CD. Bei anderen Distributionen müssen Sie die Quellen von der CD selbst kompilieren, die Anleitung gibt es unter [2].

Abbildung 1: NoteEdit bietet eine große Auswahl an Musikzeichen

Abbildung 1: NoteEdit bietet eine große Auswahl an Musikzeichen

Seit unserem Artikel in Ausgabe 4/2002 hat es die Notenzeichen Segno, Fine, Dal Segno, Dal Segno al Coda, Dal Segno al Fine und Piano-Pedal-Markierungen dazugelernt (Abbildung 1): Es stellt sie nicht nur dar, sondern beachtet sie auch bei der Wiedergabe. Zu den Triolen kamen allgemeine N-Tuplets, bei denen N zwischen 2 und 10 liegt, hinzu. Auch geschweifte und eckige Klammern (Akkoladen) sind möglich (Abbildung 2).

Abbildung 2: Akkoladen und Arpeggio

Abbildung 2: Akkoladen und Arpeggio

Taktstriche gehen bei Bedarf über mehrere Notenzeilen hinweg. Zudem ergänzte der Autor einige hilfreiche Kleinigkeiten wie den Doppel-Taktstrich, Arpeggio und den Schlussstrich.

NoteEdit unterstützt zudem Ritardando und Accelerando und notiert Akkorde und deren Griffschemata für die Gitarre (Abbildung 3).

Abbildung 3: Harmonien und Grifftabellen

Abbildung 3: Harmonien und Grifftabellen

In früheren Versionen ärgerten sich viele Nutzer, dass die für diesen Zweck ungewöhnliche mittlere Maustaste neue Noten einfügte. Inzwischen übernimmt ein Linksklick diese Aufgabe. Zudem können Sie in der aktuellen Ausgabe auch einzelne Noten eines Akkords bearbeiten, die Pfeiltasten verschieben sie nach oben und unten.

Wichtig für deutschsprachige Benutzer: Das Paket enthält die gesamte Dokumentation auch auf deutsch [3].

Außer den Export-Formaten MusiXTeX, PMX[4], LilyPond[5] und MUP[6] schreibt NoteEdit jetzt auch ABC music-Dateien [7]. Dies ist nicht nur ein verbreitetes Austauschformat für Notenschrift, auch das empfehlenswerte Notensatzsystem abcm2ps [8, 9] arbeitet damit.

Zur Musikwiedergabe benötigt NoteEdit ein funktionierendes MIDI-Gerät, der Menüpunkt Einstellungen / Noteneditor einrichten… / Klang zeigt die verfügbaren Geräte. Wählen Sie eines aus und überzeugen Sie sich von seiner Funktionalität, indem Sie eine Beispieldatei aus dem Unterverzeichnis examples abspielen. SuSE-Benutzer finden es unter /usr/share/doc/packages/noteedit/.

FluidSynth

Alternativ zum Hardware-MIDI-Gerät sorgt ein Software-Synthesizer wie FluidSynth oftmals für bessere Klangqualität. Manche Hardware liefert so schlechte Ergebnisse, dass auch Laien den Unterschied deutlich hören. Kasten 1 beschreibt die FluidSynth-Installation.

Kasten 1: Installation von FluidSynth

FluidSynth und NoteEdit arbeiten nur zusammen, wenn ALSA[11] die Kommunikation mit der Soundkarte übernimmt. Leider setzt SuSE derzeit als einzige große Distribution ALSA als Standard ein, für Red Hat 9 gibt es Pakete auf der Heft-CD.

Damit FluidSynth mit ALSA-Unterstützung kompiliert, muss das ALSA-Entwicklungspaket installiert sein; SuSE-Nutzer installieren dazu alsa-devel, das RedHat-Paket alsa-driver enthält sie ebenfalls. Anschließend entpacken Sie FluidSynth von der Heft-CD mit tar -xzf fluidsynth-1.0.3.tar.gz. Zum Kompilieren und Installieren dienen die folgenden Befehle:

cd fluidsynth-1.0.3
./configure
make
su (auf Verlangen root-Passwort eingeben)
make install
exit

Dieser Synthesizer erzeugt Töne durch die so genannte Wavetable-Synthese. Das Verfahren nutzt einen Soundfont, eine Sammlung von Beispieltönen (Samples) aller Instrumente eines virtuellen Orchesters. Aus diesen Tönen berechnen Wavetable-Synthesizer alle weiteren MIDI-Töne.

Auf der Heft-CD finden Sie die Soundfonts FluidR3 und Unison im Verzeichnis LinuxUser/soundfonts/, weitere gibt es unter [12] und [13].

FluidR3 sollten Sie nur benutzen, wenn Sie über mindestens 256 MB Arbeitsspeicher verfügen, denn FluidSynth lädt die 141 MB große Soundfont-Datei komplett in den Speicher. Bei zu wenig RAM lähmt dies unter Umständen das ganze System; verwenden Sie alternativ den kleineren Unisono-Font.

Nach dem Entpacken des Soundfonts mit gzip -d FluidR3.sf2.gz kommen Sie mit

fluidsynth FluidR3.sf2

in die FluidSynth-Eingabeaufforderung. Das Programm synthetisiert nun Töne, bis Sie es mit quit beenden.

Wenn Sie anschließend unter Einstellungen / Noteneditor einrichten… / Klang das Gerät Synth input port einstellen, verwendet NoteEdit den Software-Synthesizer zur Ausgabe. Wieder verschafft ein Test mit einer Beispieldatei Klarheit, ob alles wie gewünscht funktioniert. Wenn Ihnen die Wiedergabe zu leise ist, erhöhen Sie die Lautstärke an der FluidSynth-Eingabeaufforderung mit gain 2; dieser Befehl akzeptiert als Argument Werte von 1 bis 5. Für den Fall, dass Ihre Partitur Streicher enthält, wie die Zeile drei von example1.not aus den NoteEdit-Beispielen, beschreibt Kasten 2, wie Sie einen Bug in FluidSynth umgehen.

Kasten 2: Streicher in FluidSynth fehlerhaft

Durch einen Programmfehler synthetisiert FluidSynth das Instrument Streicher nicht korrekt. Diesen Bug umgehen Sie, indem Sie stattdessen Chor-A verwenden. Mit dem Auswahl-Werkzeug – das Icon mit dem schwarzen Pfeil – markieren Sie die betreffende Zeile; in der NoteEdit-Beispieldatei example1.not ist es die dritte. Im Dialogfenster Notenzeile / Eigenschaften… wählen Sie im Fenster Stimmen das Instrument 52. Chor Aahs aus.

ALSA Modular Synthesizer

Auch das Programm AlsaModularSynth von Matthias Nagorni ist ein Software-Synthesizer. Es arbeitet anders als FluidSynth nicht mit dem Wavetable-Verfahren, stattdessen setzen Sie damit ein Instrument aus vorgefertigten Modulen zusammen.

Wer SuSE 8.2 Professional benutzt, installiert das Paket alsamodular mit YaST von den mitgelieferten CDs. Benutzer von SuSE Personal finden das RPM-Paket auf der Heft-CD. Für andere Distributionen befinden sich eine Installationsanleitung (Installation.html) sowie die Quellen auf der Heft-CD.

Das Kommando ams startet AlsaModularSynth. Das Paket enthält zudem einige Beispielinstrumente; diese Dateien mit der Endung .ams installiert SuSE unter /usr/share/doc/packages/alsamodular/. Mit File / Load laden Sie beispielsweise example_full_midi.ams und gelangen in die grafische Instrumentenbeschreibung (Abbildung 4). Beachten Sie, dass einige Beispielinstrumente keine MIDI-Daten entgegennehmen; sie ignorieren die musikalischen Anweisungen von NoteEdit und spielen vorgegebene oder zufällige Tonfolgen ab.

Abbildung 4: Viele Module ergeben ein Instrument

Abbildung 4: Viele Module ergeben ein Instrument

Falls Sie NoteEdit vor AlsaModularSynth gestartet haben, schließen Sie den Noteneditor und starten ihn neu, damit er unter Einstellungen / Noteneditor einrichten… / Klang das Gerät ams anzeigt. Wählen Sie dieses Gerät, und testen Sie es mit der Datei zeile1.not von der Heft-CD. Sie enthält die erste Zeile von example1.not ohne Akkorde, weil AlsaModularSynth nur einstimmig spielt. Zwar startet der Parameter -pN den Synthesizer auch mehrstimmig (N steht für die Anzahl der Stimmen), doch das zwingt selbst neueste Prozessoren oft in die Knie.

Mit einem Rechtsklick auf den Kasten VCF erscheint ein Kontextmenü; der Regler Frequency ändert die Klangfarbe.

Eigenbau

Die Grundlagen für ein eigenes Instrument bilden die Module , und -Out wie in Abbildung 5. Ein neues Modul erstellt der Menüpunkt Module / New, mit festgehaltener Maustaste verschieben Sie es auf der Oberfläche. Ein Rechtsklick darauf öffnet ein Kontextmenü, mit dem Sie Parameter ändern oder das Modul löschen.

Abbildung 5: Die ersten drei Module des Instruments

Abbildung 5: Die ersten drei Module des Instruments

Nun verbinden Linksklicks auf den Rectangle-Ausgang des VCO-Moduls und den “In 0“-Eingang des PCM-Out-Moduls diese beiden Ports. Verknüpfen Sie den “In 1“-Eingang von PCM-Out genauso (Abbildung 6). Die geometrischen Bezeichnungen der VCO-Ausgänge geben die Form der ausgehenden Schwingungen an, im Falle von Rectangle sind sie rechteckig. Der Tune-Regler im Kontextmenü des VCO-Moduls ändert die angelegte Spannung manuell, für das spätere Zusammenspiel mit FluidSynth sollten Sie diesen Wert auf 0 lassen. Die Verbindung zwischen VCO und PCM-Out sorgt für die Wiedergabe der Schwingungen auf den Lautsprechern.

Synthesis / Stop unterbricht die Synthese jederzeit, Synthesis / Start nimmt sie wieder auf. Versehentlich hergestellte Verbindungen löst ein Rechtsklick auf einen verbundenen Eingang wieder auf.

Abbildung 6: PCM-Out steht für den Ausgang der Soundkarte

Abbildung 6: PCM-Out steht für den Ausgang der Soundkarte

Das MCV-Modul sorgt dafür, dass die Spannung dem von NoteEdit per MIDI geforderten Ton entspricht. Verbinden Sie deshalb dessen Freq-Ausgang mit dem Freq-Eingang des VCO-Moduls wie in Abbildung 7.

Abbildung 7: Erst durch Verbindungen entsteht das Instrument

Abbildung 7: Erst durch Verbindungen entsteht das Instrument

Spielt NoteEdit jetzt mit dem Gerät ams die Datei zeile1.not, kommt Ihr neues Instrument zum Einsatz. Wenn die Töne zu hoch klingen, erhöhen Sie den Wert Note Offset des MCV-Moduls von 24 auf 36. Das setzt die Töne um 12 Halbtöne – eine Oktave – tiefer.

Da jeder Ton gleich laut bleibt, bis der nächste Ton beginnt, erinnert die Ausgabe allerdings noch nicht an ein reales Musikinstrument. Ein echter Klavierton ist kurz nach dem Anschlag am lautesten und wird in der Folge nach dem Schema in Abbildung 8 leiser.

Abbildung 8: Die Lautstärke eines natürlichen Tones verringert sich

Abbildung 8: Die Lautstärke eines natürlichen Tones verringert sich

Um diese Intensitätsphasen mit AlsaModularSynth nachzubilden, fügen Sie Ihrem Instrument ein ENV– und ein “Lin. “-Modul hinzu. Verbinden Sie den Gate-Eingang von ENV mit dem gleichnamigen Ausgang des MCV-Moduls und den Ausgang out mit dem Eingang Gain 0 vom VCA wie in Abbildung 9. Den VCA-Ausgang wiederum verbinden Sie mit den beiden PCM-Out-Eingängen. Den Rectangle-Ausgang von VCO verknüpfen Sie statt mit PCM-Out nun mit In 0 am VCA-Modul.

Abbildung 9: Das Instrument wächst

Abbildung 9: Das Instrument wächst

Klicken Sie nun mit der rechten Maustaste auf das ENV-Modul, erscheint eine Hüllkurve (Envelope) mit den fünf Tonphasen Attack, Hold, Decay, Sustain und Release (Abbildung 8). Mit den Reglern passen Sie diese Kurve Ihren Wünschen an. Durch die Gate-Verbindung informiert MCV das ENV-Modul über eingehende Töne, letzteres erzeugt daraufhin eine Spannungsfolge entsprechend der Hüllkurve.

Das VCA-Modul dient als Verstärker und gibt das Signal nach PCM-Out weiter. Entspricht die eingestellte Hüllkurve dem Schema aus Abbildung 8, ähneln die bei der Wiedergabe durch NoteEdit erzeugten Töne einem natürlichen Instrument wenigstens entfernt.

KAconnect und QMidiRouter

Die erste Zeile der NoteEdit-Datei example1.not enthält die Melodie, die anderen Zeilen stellen die Begleitung dar. Mit Hilfe der Programme KAconnect und QMidiRouter lassen Sie die einzelnen Zeilen von verschiedenen Geräten und Instrumenten wiedergeben. So spielen Sie beispielsweise mit AlsaModularSynth und Ihrem selbstgebauten Instrument die Melodie und mit FluidSynth oder dem MIDI-Chip Ihrer Soundkarte die Begleitung.

SuSE-Benutzer installieren dazu das Paket kalsatools. Für andere Plattformen finden Sie die Quellen und die Installationsanleitung auf der Heft-CD (Installation.html).

Gewöhnlich weist man den einzelnen Notenzeilen verschiedenen MIDI-Kanäle zu. Den Kanal einer ausgewählten Zeile zeigt das Dialogfenster unter Notenzeile / Eigenschaften… im Feld Kanal an. MIDI-Kanal 1 gibt die Melodie von example1.not aus.

Mit QMidiRouter spalten Sie nun die Kanäle so auf, dass AlsaModularSynth ausschließlich Kanal 1 spielt und FluidSynth den Rest (Abbildung 10).

Abbildung 10: Verteilen Sie die MIDI-Kanäle auf verschiedene Geräte!

Abbildung 10: Verteilen Sie die MIDI-Kanäle auf verschiedene Geräte!

Nach dem Start mit qmidiroute stellen Sie unter Sort by mit Channel den MIDI-Kanal als Trennungskriterium ein. Um ab Kanal 1 zu trennen, schieben Sie den Regler Split Point auf 1 (Abbildung 11).

Abbildung 11: QMidiRouter trennt die Kanäle

Abbildung 11: QMidiRouter trennt die Kanäle

Nach einem Neustart zeigt NoteEdit unter Einstellungen / Noteneditor einrichten… / Klang das Gerät QMidiRouter_in_0. Wählen Sie es aus, um QMidiRouter zwischen die Ausgabe von NoteEdit und die MIDI-Geräte zu schalten.

KAconnect verbindet schließlich die verschiedenen Ein- und Ausgänge der Geräte. Der Befehl kaconnect ruft es auf und zeigt die gefundenen Ports. Readable Ports listet unter anderem die beiden Ausgänge des QMidiRouter auf. Der obere der beiden steht für den Kanal 1, der ersten Notenzeile von example1.not. Markieren Sie ihn und AlsaModularSynth unter Writeable Ports mit Linksklicks und verbinden Sie beides mit dem connect-Button (Abbildung 12). Dazu muss AlsaModularSynth natürlich noch laufen.

Analog verbinden Sie den zweiten Ausgang von QMidiRouter, der alle anderen Noten ausgibt, mit dem Eingang von FluidSynth oder einem anderen MIDI-Gerät Ihrer Wahl. disconnect trennt verbundene Ports wieder voneinander.

Abbildung 12: KAconnect verbindet Ein- und Ausgänge der MIDI-Geräte

Abbildung 12: KAconnect verbindet Ein- und Ausgänge der MIDI-Geräte

Zurück im NoteEdit-Fenster gibt ein Klick auf das Wiedergabe-Icon den Inhalt von example1.not nun über die zugeordneten MIDI-Geräte wieder. Wenn das Verhältnis der Lautstärken von Melodie und Begleitung nicht stimmen, passen Sie sie im jeweiligen Synthesizer-Programm an. Bei FluidSynth mit dem Befehl gain, bei AlsaModularSynth mit dem Regler des PCM-Out-Moduls.

Wie weiter?

Das erste selbstgebastelte Instrument mag manchen Anwender mit seinem mangelnden Realismus enttäuschen. In der Datei ams-tutorial.tar.gz auf der Heft-CD finden Sie weitere Beispielinstrumente von Matthias Nagorni, die ein Tutorial bilden. Unter [16] beschreibt er ausführlich weitere Techniken und Programme zur Vertiefung in die Materie. Auch geduldiges Ausprobieren bewirkt nach und nach deutliche Fortschritte.

Glossar

Software-Synthesizer

Wenn Sie über kein MIDI-Gerät verfügen, das Linux unterstützt, benutzen Sie stattdessen ein Programm, das auf Wunsch auch zusätzliche Funktionen übernimmt.

MIDI

Über das “Musical Instrument Digital Interface” kommunizieren elektronische Musikinstrumente, MIDI-Keyboards, Computer und einzelne Programme miteinander. MIDI-Daten enthalten keine Klanginformationen, sondern Anweisungen, welche Tasten zu betätigen sind.

Notenzeichen

Segno, Fine, Dal Segno, Dal Segno al Coda und Dal Segno al Fine schreiben Wiederholungen einzelner Musikteile vor.

Triolen

Dieses spezielle N-Tuplet weist drei Noten an, sich die Dauer von zweien zu teilen.

N-Tuplets

Musikzeichen, die die Neuverteilung des Taktmaßes einer Gruppe von Noten vorschreiben.

Ritardando

Kontinuierliche Verringerung des Tempos.

Accelerando

Kontinuierliche Erhöhung des Tempos.

Arpeggio

Italienisch für “harfenartig”; Vorschrift zum zeitversetzen Anschlag eines Akkordes (“Harfenanschlag”).

Piano-Pedal-Markierungen

Musikzeichen, die die Bedienung des Klavierpedals vorschreiben.

MIDI-Gerät

Da die MIDI-Daten keine Klang-Informationen enthalten, erzeugt ein Chip auf der Soundkarte oder ein Software-Synthesizer die geforderten Töne.

ALSA

Die “Advanced Linux Sound Architecture”, ein Sound-System unter Linux, löst das OSS/Lite-System des Kernels 2.4 vorraussichtlich ab Kernel-Version 2.6 ab.

MCV

“MIDI Controlled Voltage Suppply” rechnet die per MIDI vorgegebenen Tonhöhen in Spannungswerte um. Aus diesen Werten erzeugt VCO die geforderten Töne.

VCO

Der “Voltage Controlled Oscillator” erzeugt Schwingungen entsprechend einer angelegten Spannung.

PCM

Die “Pulse Code Modulation” wandelt digitale in analoge Daten um und umgekehrt. PCM-Out ist die Schnittstelle zu den Lautsprechern.

VCA

Der “Voltage Controlled Amplifier” verstärkt Signale gemäß einer angelegten Spannung.

Der Autor

Jörg Anders ist der Entwickler von NoteEdit. Er ist Assistent an der Fakultät für Informatik der Technischen Universität Chemnitz, benutzt hauptsächlich Linux und spielt Gitarre und ein wenig Klavier.

LinuxUser 11/2003 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben