Home / LinuxUser / 2002 / 04 / Brahms – Notensatz und Sequencer

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Spiel, Satz und Sieg

Brahms – Notensatz und Sequencer

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

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

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

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

Links

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.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...