Brahms – Notensatz und Sequencer

Aus LinuxUser 04/2002

Brahms – Notensatz und Sequencer

Spiel, Satz und Sieg

Musik komponieren, bearbeiten, drucken und abspielen: Das Sequencer- und Notensatz-Programm Brahms hilft bei allen Schritten der Computer-Musik. Mit seiner KDE-Oberfläche ist Brahms einfach zu bedienen und führt schnell zum Erfolg.

Das Brahms-Projekt verbindet mehrere Bereiche der computergestützten Musik. Als Sequencer kann Brahms Musik lesen, bearbeiten und wieder abspielen. Ein Musikstück liegt dabei nicht mit seiner gesamten Audio-Information vor wie etwa bei aiff– oder wav-Dateien, sondern als Abfolge von einzelnen Klangereignissen. Das gängige Format hierfür ist MIDI. Brahms arbeitet mit diesen abstrakten Noten, die es über die MIDI-Schnittstelle ausgegeben und somit zu wohlklingender Musik zusammensetzen kann.

Zusätzlich enthält Brahms ein umfangreiches Notensatzsystem. Für die heutige Partiturnotation reicht das MIDI-Format nicht aus. Im Brahms-eigenen Format (in XML geschrieben) haben Noten zusätzliche Attribute für die exakte Darstellung, zum Beispiel

doppelte Alteration (x und bb), Gruppierung, Tuplet-artigkeit sowie Verzierungen durch zahlreiche Symbole wie Bindebögen, Triller, (De-) Crescendi und viele weitere. Schließlich kann Brahms das Musikstück auch in ein druckbares Format bringen.

Warum Brahms entstand

Bevor die Entwicklung von Brahms begann, waren nur wenige Notensatz- und Sequencing-Programme für Linux zu finden. Diese befanden sich in unterschiedlichen Stadien und waren zum Teil hoch spezialisiert, wiesen aber allesamt einen wichtigen Mangel auf: Es fehlten Schnittstellen zur Erweiterung der Funktionalität. In der Folge entwickelten zahlreiche Projekte ihr eigenes Notensatzsystem, obwohl ihr eigentliches Ziel viel enger gefasst war (zum Beispiel Forschungsprojekte mit sehr spezieller Aufgabenstellung). Aus dieser Not heraus entstand 1998 das Brahms-Projekt mit dem Ziel, eine Musikplattform zu bieten. Brahms sollte die gängigen Anforderungen an ein Musiksystem beherrschen und über eine geeignete Schnittstelle im Funktionsumfang beliebig erweiterbar sein.

Dem geschulten Auge wird nicht entgehen, dass an der einen oder anderen Stelle Parallelen zu einem bekannten Produkt aus der Welt proprietärer Systeme auftreten, das ursprünglich auch als Inspiration diente. Inzwischen hat Brahms einen eigenen Weg eingeschlagen, der Umstieg fällt aber recht leicht.

Musik mit Brahms schreiben

Brahms ist wie eine mehrspurige Bandmaschine aufgebaut, die als größte Datenstruktur ein Musikstück (song) bearbeitet. Neben allerlei magischen Knöpfen und Schaltern teilt sich das Hauptfenster im Wesentlichen in zwei Teile: Links sind die Tonspuren (tracks) zeilenweise dargestellt.

Jede Tonspur kann aus einem oder mehreren Abschnitten (parts) bestehen. Die zu einer Spur gehörenden Abschnitte sind auf der rechten Seite nebeneinander angeordnet. Ganze Tonspuren oder einzelne Abschnitte lassen sich durch zahlreiche Attribute manipulieren (siehe Abbildung 1), beispielsweise kann die Tonhöhe oder die Lautstärke einer gesamten Tonspur variiert werden. Die Tonspur kann einem Instrument und einem Ausgang zugewiesen sein, sie lässt sich aber auch stumm schalten.

Abbildung 1: Das Hauptfenster stellt links die Tonspuren und rechts die Abschnitte dar

Abbildung 1: Das Hauptfenster stellt links die Tonspuren und rechts die Abschnitte dar

Die eigentlichen (Klang-) Ereignisse (events) finden sich in den Abschnitten einer Tonspur wieder. Alle Ereignisse besitzen eine Startposition innerhalb ihres Abschnitts und eine Dauer. Wer sich im Notensatz auskennt wird vermutlich die Pausen vermissen – diese lassen sich aber aus den Notenpositionen und -Längen berechnen, Brahms ergänzt sie automatisch.

Die verschiedenen Typen von Ereignissen (etwa Notes, MasterEvents und AudioEvents) sind den Abschnitten verschiedener Tonspur-Typen zugeordnet (entsprechend ScoreTracks, MasterTracks und AudioTracks). Für die verschiedenen Spur-Arten sind spezielle Editoren vorgesehen.

Brahms-Erweiterungen (Addons) können zusätzliche Ereignis-Typen und neue Tonspur-Typen definieren. Ein gutes Beispiel dafür ist das RiemannAddon, das ein Musikstück funktionstheoretisch untersucht: Es erzeugt einen HarmonyTrack und füllt ihn mit RiemannEvents. Diese neuen Events beschreiben die harmonische Situation des Stücks zu verschiedenen Zeiten.

Über den Tonspuren und Abschnitten befinden sich im Hauptfenster einige Toolbars. Diese enthalten alle wesentlichen Funktionen wie Play und Stop sowie das Setzen der Position, des Tempos und der Taktart. Dazu kommen ein mehrstufiges Undo und Redo, die üblichen Operationen zum Kopieren, Ausschneiden und Einfügen sowie zwei weitere Modi zum Zerschneiden und Verkleben von Abschnitten. Das Menü bietet noch weitere Funktionen, etwa Import und Export von MIDI-Dateien,

Mixdown eines Musikstücks, Nachladen von Addons sowie das Fenster mit den globalen Einstellungen (siehe Abbildung 2).

Abbildung 2: In den Preferences lassen sich globale Einstellungen vornehmen

Abbildung 2: In den Preferences lassen sich globale Einstellungen vornehmen

What you see is what you hear

Jede eingegebene Noten gibt Brahms sofort klanglich wieder. In den Einstellungen der Tonspuren lassen sich das MIDI-Instrument sowie der Ausgabekanal wählen.

Die beiden Play-Schaltflächen im Hauptfenster spielen das aktuelle Werk ab. Der eine Schalter gibt den markierten Bereich wieder (die Markierung befindet sich oberhalb des Abschnitt-Feldes). Die zweite Play-Taste spielt das gesamte Werk.

Kaltstart

Nach dem Start von Brahms sind die Felder für Tonspuren und Abschnitte zunächst leer. Um ein neues Musikstück zu setzen ist mindestens eine Tonspur mit mindestens einem Abschnitt erforderlich. Der Menüpunkt Edit/Add Scoretrack legt eine neue Spur an, die über das Kontextmenü (rechte Maustaste) mit Add Part einen neuen Abschnitt erhält. Einfacher geht das mit einem Doppelklick im großen Feld rechts, das die Abschnitte enthält. Brahms erzeugt dann einen Abschnitt an der Stelle, an der sich der Mauszeiger befindet. Der Abschnitt lässt sich durch Ziehen der Maus an jede beliebige andere Position verschieben.

Das Kontextmenü des Abschnitts bietet eine Auswahl an Editoren, die den Inhalt der jeweiligen Spur bearbeiten. Auch der Hintergrund des rechten Feldes hat ein Kontextmenü, über das einige Editoren zugänglich sind. In diesem Fall bearbeiten sie das gesamte Musikstück (siehe Abbildung 3).

Abbildung 3: Das Kontextmenü im Abschnitts-Feld kann Editoren starten, die mehrere Spuren gleichzeitig bearbeiten

Abbildung 3: Das Kontextmenü im Abschnitts-Feld kann Editoren starten, die mehrere Spuren gleichzeitig bearbeiten

Notensatz mit dem ScoreEditor

Einer dieser Editoren ist der ScoreEditor. Er zeigt zunächst ein leeres Notenblatt. Durch einen Mausklick auf den Violinschlüssel lassen sich Notenschlüssel und Tonart wählen (siehe Abbildung 4). Ein roter Balken auf der linken Seite zu Beginn des Systems kennzeichnet die aktive Tonspur. Auf diese Spur beziehen sich die Tonhöhe, die der entsprechende Toolbar anzeigt, sowie die Anschlagwerte (velocity) im Info-Feld unterhalb der Systeme. In diesem System befindet sich gegebenenfalls auch der Noten-Cursor. Die aktive Spur lässt sich mit den Tasten [Bild-Auf] und [Bild-Ab] auswählen.

Abbildung 4: Im ScoreEditor lassen sich Noten eingeben und manipulieren

Abbildung 4: Im ScoreEditor lassen sich Noten eingeben und manipulieren

Mit der Maus allein lässt sich bereits das Meiste bewerkstelligen: Eine Note kann eingefügt oder selektiert und verschoben werden, bei gedrückter Maustaste lassen sich auch mehrere Noten selektieren und dann verschieben. Jede Note hat ihr eigenes Kontextmenü (rechte Maustaste).

Toolbars für die Editoren

Abbildung 5: Aufbau der Toolbar

Abbildung 5: Aufbau der Toolbar

Die verschiedenen Editoren benutzen einige Werkzeugleisten gemeinsam. Der Standard-Toolbar (Abbildung 5) enthält die gebräuchlichen Arbeitsschritte: Rückgängig, Wiederherstellen, Kopieren, Ausschneiden, Einfügen, Löschen und Drucken. Ein Auswahl-Menü stellt die jeweils erhältlichen Addons zur Verfügung, das Zahnrad rechts davon aktiviert das gewählte Addon. Die weiteren Icons variieren die Zahl der dargestellten Takte (Zoom), bestimmen die Position zum Einfügen (Insertpoint), schalten die Klangwiedergabe beim Editieren ein oder aus und sorgen dafür, dass der Editor Noten mit explizit angegebenen MIDI-Kanälen in Farbe darstellt.

Abbildung 6: Aufbau des ButtonBar

Abbildung 6: Aufbau des ButtonBar

Der ButtonBar (Abbildung 6) zeigt die aktuelle Position (Takt, Schlag und Tick) und die Tonhöhe des Mauszeigers. Ein Klick mit der linken Maustaste erzeugt eine entsprechende Note an eben dieser Position. Bei gedrückter [Umschalt]-Taste wird der Ton chromatisch erhöht (#), während er durch gleichzeitiges Halten der [Strg]-Taste erniedrigt wird (b). Entfernte enharmonische Veränderungen lassen sich durch vorheriges Anwählen der Schaltflächen rechts (bb, b, no, #, x) oder nachträglich mit Hilfe des NoteBar bewirken (Abbildung 7).

Die Notensymbole im ButtonBar bestimmen die Länge der als nächstes einzugebenden Noten von einer ganzen bis hin zu einer 64stel Note. Die Noten werden standardmäßig auf Sechzehntel gerundet – dies lässt sich im Menü Resolution ändern. Die folgenden beiden Schaltflächen wählen punktierte Noten und Triolen. Effizienter ist allerdings das Einstellen der Notenlänge über die Tastaturkürzel [Alt-1] bis [Alt-7].

Abbildung 7: Aufbau der NoteBar

Abbildung 7: Aufbau der NoteBar

Die Parameter einer einzelnen Note werden im NoteBar angezeigt. Dieser ist beim Öffnen eines Editors deaktiviert, er kommt über das Menü View/Notebar oder mit dem Tastaturkürzel [Alt-E] zum Vorschein. Sobald mit der Maus oder den Cursortasten eine Note ausgewählt ist, füllen sich die Felder mit Werten. Das start-Feld beschreibt die Position im Stück (nicht etwa innerhalb des Abschnitts) durch drei Werte: Taktnummer, Schlag (zum Beispiel 1, 2 oder 3 in einem 3/4-Taktmaß) und Tick innerhalb eines Schlags. Eine Viertelnote besteht aus 384 Ticks. Durch Ändern dieses Wertes lassen sich Vorschlagnoten oder Arpeggi bewirken.

Das length-Feld gibt die Notendauer in Ticks an. Der pitch beschreibt die Tonhöhe durch Angabe des Tons, gefolgt von der Oktavlage. In vel (velocity) befindet sich der Anschlagswert der Note (0 bis 127), im chn-Feld (channel) die Nummer des MIDI-Kanals (0 bis 15). Eine MIDI-Kanal-Nummer x signalisiert, dass die Einstellung von der zugehörigen Tonspur übernommen wird. Dieser Wert lässt sich mit dem Pinsel-Symbol aus dem ToolBar (Abbildung 5) im Notenbild einfärben (Abbildung 8).

Abbildung 8: Beim Zusammenmischen (Menü des Hauptfensters, Edit/Mixdown) werden den einzelnen Noten die MIDI-Kanäle der ursprünglichen Tonspur zugeordnet

Abbildung 8: Beim Zusammenmischen (Menü des Hauptfensters, Edit/Mixdown) werden den einzelnen Noten die MIDI-Kanäle der ursprünglichen Tonspur zugeordnet

Musik in Wort und Bild

Der ScoreEditor bietet verschiedene Werkzeuge (siehe Tabelle 1), die das Notenbild ergänzen können. Diese Hilfsmittel werden im Tool-Menü des Editorfensters ausgewählt. Ein Werkzeug bleibt so lange aktiv, bis ein anderes ausgewählt wird. Die mit einigen Werkzeugen erscheinenden Symbol-Auswahl-Fenster verschwinden wieder, wenn ein neues Werkzeug ausgewählt ist.

Tabelle 1: Werkzeuge in Brahms

Werkzeug Anwendungsgebiet
Insert Notes Dieses (voreingestellte) Werkzeug wird zur Eingabe und Manipulation der Noten genutzt.
Add Note Symbols Mit diesem Werkzeugs werden einzelne Noten verziert (Abbildung 9).
Add System Symbols Symbole, die nicht einer Note zuzuordnen sind, lassen sich hiermit direkt in das System positionieren (Abbildung 9).
Add Lyrics Auch Silben und Texte lassen sich den Noten zuordnen: Ein Mausklick in eine Note öffnet ein kleines Textfeld, das sich mit der [Eingabe]-Taste wieder schließt. Soll auch die folgende Note einen Text erhalten, dann ist die [Leer]-Taste besser geeignet, um die Silbe zu beenden. Brahms öffnet dann unter der nächsten Note ein neues Textfeld (Abbildung 10).
Abbildung 9: Mit NoteSymbols (links) und SystemSymbols (rechts) lässt sich das Notenbild verfeinern

Abbildung 9: Mit NoteSymbols (links) und SystemSymbols (rechts) lässt sich das Notenbild verfeinern

Abbildung 10: Eingabe von Texten

Abbildung 10: Eingabe von Texten

Brahms kann die Partitur auch drucken, zurzeit benötigt der Sequencer dazu aber noch das Shareware-Programm MUP (The MUsicPublisher). Die Ausgaben von Brahms dienen als Eingabe für MUP, welches eine sehr ansprechend formatierte PostScript-Datei liefert. Da der Shareware-Aspekt dieser Software vielen ein Dorn im Auge ist, wird derzeit an einer Ausgabe durch das GPL-Programm Lilypond gearbeitet.

Nachdem eine oder mehrere Stimmen im Editor erstellt wurden, kann das Hauptfenster diese auf verschiedene Arten darstellen. Im Menü Edit/Preferences/Desktop lassen sich folgende Varianten auswählen: plain, show trackname, show instrument, show part events, show events and pitches (Abbildung 11).

Abbildung 11: Die Abschnitte lassen sich in verschiedenen Ansichten darstellen

Abbildung 11: Die Abschnitte lassen sich in verschiedenen Ansichten darstellen

Weitere Editoren für mehr Eingabe-Möglichkeiten

Im Laufe der Zeit haben sich verschiedene Formen entwickelt, Musik zu notieren. Die heutige Notation ist über Jahrhunderte gewachsen, ihre Wurzeln stammen aus einer Zeit, zu der die wohltemperierte Stimmung noch nicht bekannt war. Das wird spätestens bei dem Versuch deutlich, ihre Struktur in Algorithmen zu fassen.

Im Zeitalter der Computermusik erfreut sich daher die Darstellung in einem PianoRollEditor größter Beliebtheit. Durch die Klaviatur am linken Rand, deren Töne in einem großen Diagramm gegen die Zeit aufgetragen werden, kann auch der mit klassischer Notation nicht vertraute Pianist Musik schreiben und bearbeiten. Ähnlich aufgebaut ist der DrumEditor, mit dem sich Schlagzeugspuren artgerecht setzen lassen (Abbildung 12).

Abbildung 12: DrumEditor und PianoRollEditor bieten verschiedene Darstellungen einer Tonspur

Abbildung 12: DrumEditor und PianoRollEditor bieten verschiedene Darstellungen einer Tonspur

In allen Editoren kann eine Selektion von Noten mit der Maus verschoben werden, oder sie wird durch gleichzeitiges Drücken der [Strg]-Taste kopiert. Hält man gleichzeitig die [Umschalt]-Taste gedrückt, so werden die Noten lediglich in der Zeit und nicht in der Tonhöhe verschoben oder kopiert. Im PianoRollEditor lassen sich auch die Notenlängen per Maus korrigieren. Dies geschieht, indem man auf das Ende eines Notenbalkens klickt – der Mauszeiger verändert in dieser Region seine Gestalt (Abbildung 13).

Abbildung 13: Am Ende des Notenbalkens ändert der Mauszeiger seine Gestalt

Abbildung 13: Am Ende des Notenbalkens ändert der Mauszeiger seine Gestalt

Da Brahms viele Editor-Funktionen in abstrakten Klassen kapselt, ist es nicht sehr aufwändig, weitere Editoren zu implementieren. Auf der Wunschliste stehen bereits ein Editor für Gitarrentabulaturen und für die Modalnotation mittelalterlicher Musik.

Brahms unterstützt aRts und ALSA

Derzeit unterstützt Brahms zwei Architekturen zur Klangausgabe: ALSA in der Version 0.5.x sowie aRts. Beide Betriebsmodi haben ihre Vor- und Nachteile. Abhängig davon, wie sich aRts weiterentwickelt, wird zukünftig auch ALSA 0.9.x unterstützt werden. Langfristig soll eine Plattform unterstützt werden, deren Schnittstelle allen Anforderungen eines Sequencers gerecht wird – aRts ist hier ein vielversprechender Kandidat und bietet zudem noch viele andere Vorzüge.

aRts ist nicht nur ein Software-Synthesizer, sondern wird seit geraumer Zeit auch als Soundserver des KDE-Desktops eingesetzt. In diesem Modus lässt sich von den vielen aRts-Fähigkeiten Gebrauch machen wie Klangsynthese mit dem

aRts-builder, MIDI-Aufnahmen von einem Keyboard, simultanes Abspielen mehrerer Klangquellen im System und weitere.

Das Aufnehmen und Wiedergeben von Audiodaten mit Audio-Tonspuren befindet sich momentan in der Entwicklung, erste Versuche waren bereits erfolgreich. Jede Brahms-Tonspur erhält dabei einen eigenen Mixerkanal (Abbildung 14).

Abbildung 14: Jeder Brahms-Tonspur ist ein Mixerkanal zugeordnet

Abbildung 14: Jeder Brahms-Tonspur ist ein Mixerkanal zugeordnet

Der aRts-Modus ist in KDE 2.x und KDE 3.x unterschiedlich zu verwenden. Falls keine Töne zu hören sind, ist in der Regel die Einstellung im MIDI-Manager verantwortlich. Der ist ein Teil des Programms artscontrol und dort im Menüpunkt View/View MidiManager zu finden.

Im Manager kann mit Add/aRts Synthesis Midi Output ein synthetisches MIDI-Instrument erzeugt werden, zum Beispiel Slide. Dieses Instrument erscheint dann als neuer Ausgang. Damit Brahms dieses Instrument nutzen kann, muss es mit der Sequencer-Software verbunden werden. Dazu müssen das Instrument in der Liste der Ausgänge und Brahms in der Liste der MIDI-Eingänge ausgewählt und mit der connect-Schaltfläche (Abbildung 15) verbunden werden.

Abbildung 15: Der Ausgang von Brahms wird in artscontrol mit einem aRts-Instrument verbunden

Abbildung 15: Der Ausgang von Brahms wird in artscontrol mit einem aRts-Instrument verbunden

ALSA, die Advanced Linux Sound Architecture

Alternativ kann Brahms auch im ALSA-Modus betrieben werden, sofern ALSA in der Version 0.5.x installiert ist:

brahms -o alsa

In jeder Tonspur muss der gewünschte ALSA-Port als Ausgang festgelegt sein, mehr ist nicht zu konfigurieren. Der Vorteil besteht darin, dass die Soundfonts der Soundkarte verwendet werden können. Im Gegensatz dazu kennt aRts zurzeit ausschließlich synthetische Instrumente. Für die Wiedergabe orchestraler Instrumente ist das eher unbefriedigend. Außerdem gestattet aRts auf leistungsschwachen Systemen nur wenige Tonspuren. Sobald aRts auch ALSA als Sound- und MIDI-Treiber unterstützt, ist die ALSA-Option in Brahms hinfällig.

Flexibel durch Module

Die wesentlichen Bestandteile von Brahms sind in Bibliotheken abgelegt, die das Programm dynamisch zur Laufzeit lädt. Brahms selbst ist lediglich der Tropfen Klebstoff, der die Bibliotheken zusammenhält.

Die Kernbibliothek enthält alle Kernkomponenten und -funktionen (aber kein User-Interface) sowie zahlreiche abstrakte Klassen. Dazu gehören die Strukturelemente eines Musikstücks (zum Beispiel song, track, part, event, note), alle Operationen, die auf diese Elementen wirken, sowie die Grundfunktionalität der Editoren.

Die Elemente der Kernbibliothek benötigen eine Darstellung (Presentation), also ein User-Interface. Durch die strikte Trennung zwischen Funktion und Darstellung können neue Oberflächen mit minimalem Aufwand implementiert werden. Zurzeit gibt es zwei Darstellungen: TextPresentation und KdePresentation. Die KDE-Variante wird per Default geladen. Startet man Brahms mit der Option

brahms -p text

so läuft die gesamte Applikation auf der Konsole. Sogar die Darstellung der Noten im ScoreEditor ist in der Kernbibliothek abstrahiert. Daher war es sehr einfach, eine entsprechende Darstellung im Textmodus zu implementieren (Abbildung 16).

Bei beiden Abbildungen handelt es sich um den selben Musik-Ausschnitt. Die Achtelnoten sind in der Textform einzeln gesetzt: Die Abstraktion enthält zwar die Information über Gruppierungen von Noten, überlässt es jedoch der Darstellung, diese zu nutzen oder nicht.

Die Textform ist natürlich nicht wirklich bequem zu bedienen. Zur Not könnte man Brahms damit ohne grafischen Desktop von der Kommandozeile aus starten, im Grunde dient diese Darstellung jedoch als Proof of concept. Es wäre denkbar, eine rein Qt- oder Gtk-basierte Darstellung zu implementieren. Eine interessante Alternative wäre auch eine Web-Variante, die Brahms zum Musikserver wandelt, der per Browser bedient wird.

Brahms ist erweiterbar

Der große Vorzug dieser Architektur liegt in der Erweiterbarkeit von Brahms. Es können Erweiterungen (Addons) geschrieben und kompiliert werden, ohne die gesamte Brahms-Applikation neu zu übersetzten – sogar ohne sie neu zu starten. Ein übersichtliches API bietet eine einfache Schnittstelle, über die ein Musikstück mit allen seinen Komponenten bearbeitet werden kann.

Die drei Funktionen Quantize, QuantizeLength und FixedLength (dürfen in keinem Sequencer fehlen) sind als solche Erweiterungen implementiert. Wie andere Operationen sind auch sie umkehrbar, es ist also eine undo-Methode enthalten. Die zurzeit vorhandenen Erweiterungen sind in Tabelle 2 zusammengestellt.

Tabelle 2: Erweiterungen für Brahms

Name Kategorie Funktion
QuantizeAll Quantize Rundet die Startpositionen und die Länge von Noten und anderen Ereignissen.
QuantizeLength Quantize Rundet die Länge von Noten.
FixedLength Quantize Setzt die Notenlänge auf einen konstanten Wert, der im Editor gewählt wird.
Dump Testing Gibt den gesamten Inhalt des Musikstücks auf der Standardausgabe aus.
Debug Testing Gibt weitere Information an die Standardausgabe weiter.
ExtractLyrics Output Gibt die den Noten zugeordneten Texte (Lyrics) aus.
Stretch Edit Multipliziert jede Startposition und jede Länge mit Zwei.
Revert Edit Kehrt die Zeitrichtung eines Musikstücks um.
EarTraining Harmony Trainiert Intervalle und Akkorde (beliebig ausbaufähig).
Parallels Harmony Sucht aus einem Musikstück Quint- und Oktav-Parallelen. Legt dazu eine neue Tonspur an und füllt sie mit Kopien der verbotenen Noten. Verdeckte Parallelen werden (durch Setzen des MIDI-Kanals) eingefärbt. Stellt eine große Hilfe bei Eigenkompositionen und bei der Analyse von Werken dar.
Riemann Harmony Ordnet einem Musikstück zu verschiedenen Zeiten die passenden Harmonien zu.

Die

Riemann-Erweiterung ist vorerst noch ein Prototyp und nicht vollständig implementiert. Bemerkenswert an diesem Modul ist, dass es zur Berechnung der Harmonien nicht nur das Tonmaterial zum jeweiligen Zeitpunkt (vertikal) heranzieht, sondern zusätzlich den musikalischen Kontext (horizontal) beachtet. Ein Klang, der aus Fis und C besteht, ist im G-Dur Kontext vermutlich eher als D-Dur mit kleiner Septime aufzufassen und seltener als vermindertes Fis.

Abbildung 17: Die Riemann-Erweiterung führt einen neuen Tonspur-Typ ein

Abbildung 17: Die Riemann-Erweiterung führt einen neuen Tonspur-Typ ein

Darüber hinaus zeigt die Riemann-Erweiterung, dass Brahms-Erweiterungen neue Tonspur-Typen (Harmony, durch ein Herz symbolisiert) und neue Ereignis-Typen (RiemannEvents) einführen können. Die Ereignisse werden im unteren Teil des Editors angezeigt. Das Auswahl-Menü, das sonst die Anschlagswerte als einzigen Eintrag enthält, bietet nun auch die Riemann-Werte an (Abbildungen 17 und 18).

Abbildung 18: Die Riemann-Ereignisse lassen sich im unteren Teil des Editors darstellen

Abbildung 18: Die Riemann-Ereignisse lassen sich im unteren Teil des Editors darstellen

Eine Erweiterung wird entweder als Option beim Aufruf von Brahms angegeben

brahms -a dump -a riemann -a stretch

oder zur Laufzeit geladen (Menüpunkt File/Load Addon…). Die zu ladenden Bibliotheken befinden sich nach der Installation im Verzeichnis $KDEDIR/lib und beginnen mit libBrahmsAddon. Ist eine Erweiterung erfolgreich geladen, findet sie sich in den Kontextmenüs des Musikstücks, der Tonspur, des Abschnitts oder im Auswahl-Menü der Editor-Werkzeugleiste wieder (Abbildung 19).

Abbildung 19: Der Zugriff auf die geladenen Erweiterung findet über Kontextmenüs statt

Abbildung 19: Der Zugriff auf die geladenen Erweiterung findet über Kontextmenüs statt

Selbst ist der Musiker

Für diejenigen, die selbst eine Erweiterung schreiben möchten, bietet sich die gut dokumentierte Dump-Erweiterung als Vorlage an. In den Quellen von Brahms befindet sich die Erweiterungen im Verzeichnis brahms/addons. Außerdem ist die API-Dokumentation sehr hilfreich. Sie wird mit Brahms installiert, ist aber auch auf der Brahms-Homepage zu finden.

Ein kleines Beispiel zeigt, wie wenig Arbeit eine solche Erweiterung macht. Neben der Deklaration einiger Formalitäten wie Kontext, Kategorie und Namensgebung besteht der wesentliche Teil der Revert-Erweiterung aus der song()-Methode (siehe Listing 1).

Listing 1

Revert-Erweiterung

01 void Revert::song(Song @L: * song) {
02   Position endpos = (new SongIterator(song))->endPosition();
03   int sz = song->size();
04   for (int i=0; i<sz; i++) {
05     Track @L: * track = (Track @L: *) song->get(0); if (track==0) return;
06     Part @L: * part   = (Part @L: *) track->first(); if (part==0) return;
07     Track @L: * newTrack = song->createTrack(track->isA(),0);
08     newTrack->setName(strdup(track->name()->getValue()));
09     if (track->isA()==SCORETRACK) {
10       ((ScoreTrack@L: *) newTrack)->setProgram(track->program());
11       ((ScoreTrack@L: *) newTrack)->setChannel(track->channel());
12     }
13     Part @L: * newPart = new Part(newTrack);
14     newPart->setKey(part->key()); newPart->setClef(part->clef());
15     // ——————————————————–
16     for (Iterator i = Iterator(track); !i.done(); i++) {
17       Event @L: * event = (Event@L: *) (@L: *i)->copy();
18       newPart->setStart(event, endpos - i.part()->end(event));
19       newPart->add(event);
20     }
21     newTrack->add(newPart); song->add(newTrack);
22     song->remove(track); delete track;
23   }
24 }

Zunächst ermittelt das Modul die Endposition des Musikstücks. Die äußere Schleife führt durch alle Tonspuren (Zeile 4), die innere Schleife iteriert durch alle Ereignisse (Zeile 16). Die Position eines jeden Ereignisses wird von der Endposition abgezogen und dadurch in der Zeit gespiegelt. Schließlich werden nicht die Ereignisse selbst, sondern Kopien davon bearbeitet und in einer neuen Tonspur mit einem neuen Abschnitt abgelegt (Zeile 19). Sobald eine Spur bearbeitet ist, wird in Zeile 22 das Original entfernt.

Installation

Auf der Homepage von Brahms ist das Quell-Paket brahms-1.02-kde2.tgz für KDE 2 verfügbar. Folgende Befehle entpacken, konfigurieren und installieren das Programm:

tar xzvf brahms-1.02-kde2.tgz
cd Brahms
./configure
make
su
make install

Der letzte Schritt muss als root-User durchgeführt werden (daher das su-Kommando). Auf einigen Distributionen (zum Beispiel SuSE 7.3) ist bei der Konfiguration eine Option nötig, der dritte Schritt ändert sich dann:

./configure --prefix=/opt/kde2

Glossar

Doppelte Alteration
Das doppelte Alterieren ändert einen Ton um zwei Halbtonschritte. Dabei ist harmonisch betrachtet beispielsweise ein doppelt erhöhtes G ebenso wenig ein A, wie ein Fis ein Ges ist. Erst mit der wohltemperierten Stimmung, die in der Computermusik und bei Tasteninstrumenten heute üblich ist, entfallen diese Unterschiede. Folglich ist weder die enharmonische Verwechslung (Fis/Ges) noch die doppelte Alteration Gegenstand des MIDI-Formats. MIDI beschreibt ausschließlich den Klang, nicht aber die Darstellung.
Mixdown
Mischt die Noten aus mehreren Spuren in einer einzelnen Spur zusammen.
aRts-builder
Der aRts-builder ist Bestandteil des aRts-Projekts und dient zur Erstellung von synthetischen Instrumenten. Verschiedene Module, etwa Effekte, Ein- und Ausgänge, lassen sich mit einer grafischen Oberfläche einfach zusammensetzen und ausführen.
Hugo Riemann
Der Musikforscher Riemann (1849-1919) entwickelte eine Funktionenlehre, die besagt, dass jedes akkordische Gebilde auf eine der drei Funktionen Tonika, Subdominante und Dominante zurückgeführt werden kann und dass jeder dieser Dreiklänge durch einen seiner Einzeltöne vertreten werden kann.
LinuxUser 04/2002 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