Algorithmische Komposition mit Common Lisp
Next: Praktischer Teil , Home: Allgemeine Einführung

Algorithmische Komposition mit Common Lisp

Allgemeine Einführung

Diese Publikation dient als Begleitskript für die Lehrveranstaltung Einführung in die algorithmische Komposition an der HfMDK Frankfurt. In der Lehrveranstaltung werden Methoden vermittelt, musikalische Abläufe mit Hilfe von Computeralgorithmen zu definieren und zu simulieren. Im Kurs wird die Computersprache Common Lisp eingesetzt. Lisp ist eine der ältesten Computersprachen und wurde ursprünglich speziell für Symbolische Datenverarbeitung entwickelt (im Unterschied und als Erweiterung zu Numerischer Datenverarbeitung). Für musikalische Anwendungen existieren spezifische Erweiterungen (sogenannte Packages) der Sprache, die von der Ansteuerung von Klangmodulen bis zur formalen Beschreibung musikalischer Phänomene und Zusammenhänge reichen.

Für die Lehrveranstaltung werden folgende Common Lisp Packages verwendet:

  • Clamps ist ein Metapaket, das Common Music, Incudine, Fomus und Clog zusammenfasst und um einige Funktionalität erweitert, um eine integrierte Arbeitsumgebung für den gesamten Arbeitsbereich von algorithmischer Komposition, elektronischer Musik und live-interaktiver Performance mit browserbasierten grafischen Oberflächen zu realisieren.
  • Common Music (cm)

    Common Music ist ein Package, das vor allem der metasprachlichen Definition von musikalischen Abläufen dient, die eine zentrale Rolle bei der algorithmischen Komposition spielt. Neben vielen Funktionen zur Beschreibung und Bearbeitung musikalischer Prozesse enthält das Paket auch eine umfangreiche Anbindung an das MIDI Protokoll, mit dem beispielsweise Software Synthesizer angesteuert werden können. Common Music wird seit 1989 von Rick Taube entwickelt. Zunächst in Common Lisp geschrieben, beruht die aktuelle Version 3 ausschließlich auf dem Lisp-Dialekt scheme. Da in dem Kurs mit Common Lisp gearbeitet wird, basiert das Kursmaterial daher auf der Version 2 von Common Music.

  • Incudine

    Incudine ist ein relativ neues Package, das auf Echtzeitverarbeitung von Klängen zielt. Insofern ist es vergleichbar mit Systemen, wie Supercollider oder Pure Data. Da incudine über einen sehr präzisen und effizienten Scheduler verfügt, lässt sich mit dessen Hilfe Common Music so erweitern, dass man die in Common Music definierten Algorithmen in Echtzeit abspielen kann.

  • Fomus

    Fomus ist ein Paket, das die Ausgabe von algorithmischen Abläufen bzw. allgemeinen Lisp Daten in Notenschrift ermöglicht. Das Paket wurde von David Psenicka, einem ehemaligen Studenten von Rick Taube, ursprünglich als Erweiterung zu Common Music 2005-2007 entwickelt.

  • Clog

    CLOG ist ein Common Lisp Paket zur browserbasierten Realisation von grafischen Benutzeroberflächen. Dieses System wurde für Clamps um Standardobjekte für die Arbeit mit Musik, wie z.b. Slidern, Schaltern, Nummernboxen, etc. erweitert.

Als Editor empfiehlt sich GNU Emacs, für Clamps ist die SBCL Common Lisp Implementation erforderlich. In diesem Fall ist zusätzlich die Installation von Jack erforderlich (Download über diese Webseite). Dieses Skript wurde 2026 von MIDI auf sfz (Teil von Clamps) umgeschrieben, damit die Beispiele auch ohne externen Soft- oder Hardwaresynthesizer funktionieren. Falls MIDI erwünscht ist (Common Music wurde hauptsächlich mit MIDI entwickelt, bevor der sfz Eventtyp und Common Lisp basierte Softwaresynthesizer existierten), empfiehlt sich die Installation eines Softwaresynthesizers, wie beispielsweise Qsynth. Als Betriebssysteme werden aktuell (2026) nur Linux und ein aktuelles OSX unterstützt.