(Live) Coding Music (and Visuals) [Update 9.Nov]

Lange war Coding etwas, was Nerds irgendwie im Stillen gemacht haben. Der Grund dafür ist nicht nur kulturell. Source-Code musste oft kompilliert werden, ein teilweise mehrere Minuten langer Prozess über mehrere Schritte um eine Exe/App zu erhalten, die nur so in Echtzeit dann schnell genug lief.

Schnellere Computer und virtual Maschines (VM)

Diese Zeiten sind mehrheitlich vorbei – die Computer, die Optimierungen und auch spezielle Sprachen machen es möglich: Heute laufen viele Apps sogar jenseits systemnaher Programmierung in Browsern auf VirtualMaschines extrem schnell. Sogar in Sprachen wie Javascript. Der erste MP3-Player rein geschrieben in Javascript markierte hier eine Wende – zuvor war dies nur in Anwendungen mglich. Sogar die Demo-Scene bietet heute Live-Coding-Battles – nicht ganz zur Freude der ganzen Scene.

Motto: „MAKING MUSIC WITH TEXT (URE)

Vielleicht kann das Motto von Live Coding auch in Alex McLeans Claim zusammengefasst werden:

Was er darunter versteht macht er auch gleich im folgenden Video klar (aus dem ein Teil der Links stammen):

Es geht also um die Magie des Source Codes, der aus Text alles machen. Es kommt allein auf die Interpretation drauf an. Cyberspace ist die Regelwelt von Interaktion über Raum bis Music. Und hier interpretieren nicht mehr nur Menschen sondern eben auch Maschinen. Wobei das natürlich nicht ganz korrekt ist: In den Liveperformances kann man mitverfolgen, wie sich der Text aufbaut, was was bedeuten könnte, wie der Code ‚klingt‘ oder eben was er zeichnet. Es ist eine Art zuschauen und teilweise mitverfolgen des Akt des Codens. Anders als sonst, wird es allerdings hier sicht- bzw. hörbar. Hier etwa eindrücklich beim BYTE BATTLE. Erstelle eine Demo zu einem Thema in 25 Minuten in 256 bytes. Performance garantiert.

Im Lauf der Zeit

Schaut man sich die verschiedenen Einträge und Tools (und auch die eigene Beschäftigung damit) an, so hat man den Eindruck, dass die Szene sehr aktiv war um 1990+ (vorallem universitär?) auf Betriebssystemebene, 2000, um 2010 stark gewachsen ist und anschliessend sowohl weniger Tools, weniger Events hatte (etwa auch sichtbar an der Timeline der Auftritte von McLean – inzwischen reicht es auch wieder für Text in der New York Times) und jetzt wieder zurück ist mit vielen neuen Tools, die nun auch im Browser laufen und damit eine ganz andere Reichweite haben, zudem kommen andere Arten von Events hinzu.

Live Visual Coding

Um es vorwegzuschicken: Es gibt viel Tools, viele die kommen interessant sind und wieder verblassen. Hier sei eines vorgestellt, dass auch in Music Coding Tools eingebettet werden kann: Hydra – einem Live-Webtool von Olivia Jack (Interview).
https://ojack.xyz/articles/hydra/index.html

Der interessante Mix zeigt sich hier schon auf der Oberfläche des Tools. Code und Resultat sind gleichgestellt bzw. überblendet und nicht eingesperrt in verschiedene Fenster. Der Coder* kann schreiben und per Play den Code ausführen lassen, der dann im Hintergrund weiterläuft, bis zur nächsten gewollten Aktualisierung. Ein Stop und Go wie in klassischem Development entfällt. Der Coder* wird mit dem letzten laufenden Code belohnt.

Das Tool ist also schon in seiner Konstruktion auf Code to Visuals ausgerichtet. Die Generierung arbeitet mit Oszillatoren, die man Modifizieren kann osc().rotate().out(). Dies alles garantiert auch immer schon ein visuelles Resultat. Das Resultat kann dann verändert, es kann damit experimentiert werden. Und so verwundert es nicht, dass diverse Inputs wie Kamera einfach integriert werden können. Es ist letztlich eine Art Jam-Prozess wie in den meisten dieser Tools – ein Tryout-SelectionsProzess ohne vordefiniertes Ziel. Wie in der Demoscene geht es um etwas möglichst Interessantes.

Live Coding Music (Instruments)

Music ist am Ende ja eigentlich wie Grafik auch immer Coding. So waren die ersten Musiker* auf 8Bit-Computer immer beides Coder* und Musiker*. Dies hat sich letztlich erst mit der Einführung der Tracker oder anders gesagt Synthies verändert (siehe die Schweizer Game Design Szene und ihre Tools).

Wichtig war sicherlich am Anfang dieser Entwicklung die Erfindung der DSP. Also der Digital Signalprozessoren, die dies Hardwaretechnisch überhaupt möglich machten in den 70/80er Jahren und ihre Verbreitung in den 90er Jahren. Siehe dazu auch Wikipedia/DSP.

Diese alte Zeit kehrt nun zurück in den Live-Music-Coding-Ansätzen. Dabei gibt es (meiner Ansicht nach) verschiedene Ansätze bei der Unmenge von Tools, die es inzwischen gibt. Die einen orientieren sich eher an der Technik (MaxMSP 1980+ > IRCAM und Co) hinter Music also an Oszillatoren (DSPs) und Co und eine Richtung, die mehr von den Patterns und klassischer Musik her kommt (programmierbare Tracker). Aber vielleicht ist dieser Unterschied letztlich marginal, da beide Richtungen am Ende Music/Sound eher Zusammenwachsen als sich voneinander trennen.

Beiden gemein ist allerdings nach wie vor, mit Algorithmen „Music“ zu erstellen, das heisst also die „Music“/Klangerlebenisse per Text zu erstellen. Hier stellt sich selbstverständlich immer die Frage, was passt zu einem selber, wo arbeitet und wie arbeitet man lieber.

Anders als man anfangs denkt, reichen viele der Programme bis in die 90er oder gar in die 80er Jahre hinein. Und es fehlt auch hier sicher die Aufarbeitung, der Möglichkeiten die etwa in Systemen wie Plato Systems stecken, die selbst schon musikalische Programmiert werden konnten.

Synthetischer Ansatz

Die Wurzeln von synthetischem MusicDesign sind deswegen alt angefangen bei Max (1980), PureData (1996+) – wobei diese vor allem mit Patching/FlowDiagammen arbeiten. Als Beispiel für den Coding-Ansatz gilt sicher unter anderen SuperCollider.

> SuperCollider 1996+

Ist ein Tool/Instrument zur Generierung (Synthesis) von Sound/Music durch Algorithmen. https://supercollider.github.io

Ein Beispiel wird hier vorgeführt:

Und so sieht der Code auch dementsprechend aus. Es werden dabei keine vorhandenen Hüllkurven benutzt sondern, der Sound wird direkt „programmiert“.

// modulate a sine frequency and a noise amplitude with another sine
// whose frequency depends on the horizontal mouse pointer position
{
        var x = SinOsc.ar(MouseX.kr(1, 100));
        SinOsc.ar(300 * x + 800, 0, 0.1)
        +
        PinkNoise.ar(0.1 * x + 0.1)
}.play;

Selbstverständlich gibt es auch hier Ansätze, die sich von Plattformen emanzipiert haben und nun auch auf einem Browser laufen.

> gibber (2014?)
Ist ein WebBrowser-Tool. Der Fokus liegt hier nicht nur auf der Möglichkeit Sound/Music zu generieren sondern auch das ganze visuell abzubilden.
https://gibber.cc

In Aktion kommt dieses Tool dann auch einer Medienkunst-Musik-Performance recht nahe.

Weitere Tools in diesem Bereich sind etwa Sonic Pi. Mehr dazu findet man hier >

Pattern-Ansatz

Näher am klassischen Musikverständnis – zumindests meiner Ansicht nach – sind die nachfolgenden Ansätze. Sie basieren weit mehr auf klassichen Notensystemen und kontrollierbaren algorithmischen Trackersystemen.

> CSound 1986+

CSound entstand als eine Art Sprache für Music. Was auch auf der Startseite von https://csound.com zu finden ist und auch auf Wikipedia:

"Csound is a domain-specific computer programming language for audio programming. It is called Csound because it is written in C, as opposed to some of its predecessors." (Wikipedia)

Das System kam anfangs ohne Frontend und hat erst nach und nach eine ganze Menge von Frontes bekommen.

Ein Codebeispiel sieht etwa so aus:

<CsoundSynthesizer>
  
  <CsOptions>
    csound -W -d -o tone.wav
  </CsOptions>
  
  <CsInstruments>
    sr     = 96000           ; Sample rate.
    kr     = 9600            ; Control signal rate.
    ksmps  = 10              ; Samples per control signal.
    nchnls = 1               ; Number of output channels.

    instr 1
    a1     oscil p4, p5, 1   ; Oscillator: p4 and p5 are the arguments from the score, 1 is the table number.
    out a1                   ; Output.
    endin
  </CsInstruments>

  <CsScore>
    f1 0 8192 10 1           ; Table containing a sine wave. Built-in generator 10 produces a sum of sinusoids, here only one.
    i1 0 1 20000 1000        ; Play one second of one kHz at amplitude 20000.
    e
  </CsScore>

</CsoundSynthesizer>

Ein Beispiel eines Frontends wäre: Cabbageaudio (https://cabbageaudio.com/tutorials/)

> Tidal Cycles.

stammt unter anderem von Alex McLean und der Claim hier: „Live coding music with Algorithmic patterns“. Hier ist der Fokus ebenfalls auf live music. Es basiert auf SuperCollider zur Generierung des Sounds.
https://tidalcycles.org

Dabei hat Tidal schon sehr viele Instrumente included und man generiert die Musik in Loops.

Wobei fast alle MusikCodingTools auf minimale Abkürzungen stehen und sich des öftern mehr wie Perl also kryptisch lesen, als einfach verstehbar.

Eine Einführung findet sich hier:

> ORCA (Update-AddOn nach einem Hint eines ORCA-Laser-Fans)

Orca hingegen geht in die Fläche (2D) und nimmt die „Verflächung“ von Trackern wieder auf, wie das etwa Isle of Tune vor Jahren vorgemacht hat und kombiniert sie mit der Cryptic der obigen Tools und DwarfFortress. Dabei ist ORCA ebenfalls ein live coding tool für music. Die Selbstbeschreibung lautet nicht ganz unseriös:

„Orca is an esoteric programming language designed to quickly create procedural sequencers“

Willkommen in der Welt die aus Operatoren besteht aus den 26 Buchstaben. Man findet das Projekt here: https://github.com/hundredrabbits/Orca – auch die Entstehungsgeschichte ist wie bei vielen anderen Tools einen Click wert: https://100r.co/site/orca.html. Wichtig bei der Installation – es braucht natürlich etwa einen MidiOutput-Umsetzer/Instrument (Mac: Die Webversion lief auch in Chrome bei mir nicht (uninstallierbares midiWeb), besser lief die Installation der App mit https://github.com/cawlin/orca-simple-mac-setup und https://asb2m10.github.io/dexed/).

Hier ein einfaches Drum Beispiel: D triggert einen Takt, dann wird mit : eine Ton abgespielt.

Auch rechnen lässt sich hier. Etwa wie folgt: Addiere 2 + 4, addiere dazu wiederum 1 und dann sind wir beim Resultat.

Aber auch Bewegung ist potentiell mit dabei.

Eine Einführung bietet folgende Seite und diverse Youtube-Videos und so sieht ein klassicher Tracker in ORCA aus:

https://metasyn.github.io/learn-orca/

Die Instrumente und ihre je eigener Zugang

Das Ganze entpuppt sich bei ORCA als interessanter Ansatz, zeigt aber auch auf – wie viele andere Live-Coding-Tools – dass es sich letztlich auch um eine Art Instrumente handelt für eine Performance. In diesen lassen sich gewisse Dinge schnell und einfach realisieren und andere Dinge sind unendlich kompliziert. Aber darin liegt ja der Witz dieser Instrumente. Sie zwingen zum Spiel mit den Instrumenten und lassen einem neue interessante Wege gehen. Und raus kommt, jeweils eine je eigener Stil bzw. Music oder Klangteppich.

Communities

Nicht zu vergessen sind hier natürlich auch die verschiedenen Communities. Sowohl der Online-Communities rund um die Tools/Instrumente, wie auch von Musik-Codern und deren Events. Es lohnt sich auf jeden Fall einen Live-Event auch mal selber zu besuchen, denn das ‚fühlt‘ sich dann eher wie eine Jam-Session an – Ausgang offen.

Dieser Beitrag wurde unter Uncategorized veröffentlicht. Setze ein Lesezeichen auf den Permalink.