Algorithmische Komposition mit Common Lisp
Next: Der erste Ton , Previous: Aufgaben [ A2.2 ] , Up: Praktischer Teil , Home: Allgemeine Einführung

Algorithmische Komposition mit Common Lisp

Clamps/Common Music

Common Music erweitert Common Lisp um musikspezifische Funktionalität. Clamps erweitert diese Funktionalität um weitere Eventklassen und Ausgabeformate.

Dazu zählt unter anderem:

  • Midi:

    Komplette Implementierung des MIDI Protokolls, Lesen und Schreiben von Mididateien, Midi Input/Output

  • sfz:

    Eine Eventklasse, die einen in Clamps eingebauten Software Sampler nutzt und dadurch die Notwendigkeit des Einsatzes externer Midi Soft- oder Hardware Sampler für die Klangausgabe vermeidet.

  • Ereignisse und Streams1

    Umfangreiche Implementation von Ereignis- und Dateiklassen (MIDI, FUDI, Csound, OSC, FOMUS, SVG) samt damit verbundener streambasierter print, input und output Methoden.

  • Prozesse

    Einheitliche Spezifikation einer Prozesssyntax, die unabhängig von dem Ausgabetyp (der Ereignisklasse) ist.

  • Patterns
  • Skalen, Mikrotonalität, Rhythmische Abstraktionen, Umrechnungsfunktionen

Eine komplette Übersicht der Common Music Funktionen findet man nach der Installation im Common Music Dictionary unter "<home>/quicklisp/local-projects/cm/doc/dict/index.html".

Für online help kann man in emacs den Cursor auf das Ende eines common music Keywortes positionieren und dann das Tastaturkürzel "C-c C-d c" verwenden. Dadurch wird die entsprechende Webseite automatisch an der entsprechenden Stelle geöffnet.

Eine Kopie des Common Music Dictionary ist zusätzlich online auf diesem Server unter dieser Adresse verfügbar.

Wichtiger Hinweis:

Für die Common Music Beispiele der nächsten Abschnitte ist es erforderlich, dass zuvor Jack (Webseite) und ein Softwaresynthesizer (beispielsweise Qsynth) gestartet wurden.

Fußnoten:

1

Streams sind bei Computern Abstraktionen für Ein- und Ausgabeoperationen, ähnlich eines softwarebasierten Interfaces. Sie vereinheitlichen Ausgaben auf den Bildschirm, in eine Datei oder auf ein Ausgabegerät, wie beispielsweise einen Hard- oder Softwaresynthesizer, so dass mit den selben Funktionen die Funktionalität von Ein- und Ausgabe in ihrer gesamten Bandbreite abgedeckt werden kann.