Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog RSS

Csound, Nyquist, ChucK

Stand: 2012-12-12

Drei extrem verschiedene Beispiele für musikorientierte Programmiersprachen. Vorab etwas Max Mathews und John Chowning.

Csound

Csound von Barry Vercoe (seit 1995) und später John ffitch basiert auf Music 11, ebenfalls von Barry Vercoe, und damit auf der Music-N-Familie von Max Mathews (ab 1957). Man kann sagen, dass die MPEG-4 Structured Audio Orchestra Language (SAOL) von Csound abstammt.

Es gibt seit 2005 ein Csound Journal.

Zunächst für Offline-Betrieb, inzwischen Echtzeit-Audio-Ein- und -Ausgabe und MIDI/OSC-Ein- und Ausgabe, ebenso z.B. als VST-Modul oder als Funktionsblock in Pure Data.

Zunächst Sprache für Kommandozeilen-Compiler, inzwischen mit grafischen Entwicklungsumgebungen, zum Beispiel:

Wesentliche Teile der Sprache (jetzt mit HTML-artigen Tags alles in einer .csd-Datei), Demo in QuteCsound, siehe csd-Dateien:

Drei Datenraten, je nach Anfangsbuchstabe einer Variablen oder Funktion:

Weitere Funktionen/Eigenschaften, siehe csd-Dateien: Folgenoten, Werte kopieren, Ramping, Physical modeling, logarithmische Angaben von Tonhöhe und Amplitude, Vibrato linear und exponentiell, Reihenfolge in Score egal, Polyphonie.

Nebenbei: Events vs. Audio Rate; Zipper Noise

Steuerbefehle in größeren Zeitintervallen zu berechnen und zu verarbeiten als dem Sampletakt, ist zwar effizient, führt aber zu Artefakten: Regelvorgänge werden stufig. (Klingt bei Lautstärkeänderungen wie ein Reißverschluss, daher Zipper Noise.) Derselbe Effekt droht mit Kontrollsignalen, die nur bei Änderungsbedarf übertragen werden (Events, vgl. MIDI) und/oder mit zu geringer Auflösung des Werts übertragen werden (z.B. 0 bis 127 bei einfachen MIDI-Controllern). Filterung nötig. Am einfachsten mit linearer Interpolation. Daraus resultiert aber immer eine Verzögerung.

Nyquist

Nyquist (Roger Dannenberg, seit 1989) ist eine Musik-/Audio-Programmiersprache im Stil von Lisp, also mit der Schreibweise (+ a b) statt a + b und (f 1 2 3) statt f(1, 2, 3). Seit einigen Jahren gibt es auch eine Entwicklungsumgebung und eine alternative Eingabesprache namens SAL.

Nyquist ist eher zur interaktiven Eingabe von Befehlen gedacht, nicht zum Compilieren und nicht für Echtzeitanwendungen.

Wesentlicher Fundort: Plug-ins für Audacity. Ein paar Blicke in den Code der Plug-ins dort.

Beispiele am Nyquist-Prompt von Audacity:

(mult s 0.5)

(mult s (pwl 0.1 1.0 0.2 0.1 0.5))

(lp s (pwl 0.2 2000.0 0.4 1000.0 1.0))

Dokumentation

ChucK

ChucK (Ge Wang, seit 2003) ist eine Sprache für Live-Performances (MIDI, OSC). Wesentliche Kennzeichen:

Beispiel siehe .ck-Datei. Diskussion weiterer Beispiele in miniAudicle