[Autonomie] Faust WS
martin schitter
ms at mur.at
Sun Apr 12 22:30:38 CEST 2020
Am 12.04.20 um 11:52 schrieb Gernot Tutner:
> Ich möchte mich im Moment gar nicht zu sehr in FAUST vertiefen. Wir
> haben am Donnerstag beschlossen, an einem Proof Of Concept für ein WebUI
> zum Verbinden zweier FAUST-Soundmodule (Generator + Effekt) zu arbeiten.
lieber gernot!
wunderbar, dass du dich offenbar gleich in die praktische arbeit stürzt!
was faust im speziellen betrifft, ist deine zurückhaltung natürlich
durchaus angebracht. ich empfehle es zwar immer wieder, weil es in den
low-level gestaltungsmöglichkeiten und der effizienz der resultate weit5
über das hinausgeht, was andere einfacher zu bedienende modulare
fertiglösungen bieten bzw. eben wirklich sehr vielfältig nutzbar ist.
im wesentlichen ist aber in unserem fall wichtiger, dass ich die
gewählten mittel sauber in den kontext der "webaudio"-vorgaben fügen.
dazu gibt's mittlerweile bereits eine ganze menge:
https://github.com/notthetup/awesome-webaudio
es gibt auch seit einigen jahren eine jährliche konferenz, wo viele
dieser werkzeuge und damit realisierter gestalterischer projekte
vorgestellt werden bzw. auch in form von videofzeichnungen der vorträge
und veröffentlichten papers zugänglich ist:
https://webaudioconf.com/
im prinzip gibt es da ohnehein bereits eine ganze menge an fertigen
lösungen die sich realativ einfach nutzen lässt:
https://tonejs.github.io/
https://flockingjs.org/
http://webaudioplayground.appspot.com/
https://tai2.net/docs/webaudiocomposer/
https://eternal.robcheung.com/
https://github.com/gridsound/daw
https://web-audio-api.firebaseapp.com/
https://github.com/ISNIT0/webaudio-generator
https://github.com/google/audion
usw.
das alles lässt sich ganz ähnlich wie jeglicher anderer inhalt in einer
webpage ziemlich einfach mit java script bzw. heute natürlich besser
typescript (https://www.typescriptlang.org/) od. assembly script
(https://docs.assemblyscript.org/) nutzen.
im prinzip ist diese high-level ebene geradezu unverzichtbar, wenn man
bspw. auch samples an hand von URLs irgendwoe im netz einbeziehen will,
was ja zb. faust von sich aus nicht kann etc.
ich finde es nur wichtig, dass das zeug sich tatsächlich in möglichst
offener weise mit anderem kombinieren bzw. einbetten lässt, statt zu
große eigene vorgaben und sperrige erweiterungsmöglichkeiten mit sich zu
bringen. das erscheint mir vor allen dingen auch deshalb wichtig, weil
ja vieler dieser einfacheren mittel gleich einmal wie in
casio-taschensynthesizer klingen bzw. einen leicht dazu verführen sich
in vorgegebenen bahnen der klanggestalt zu verlieren.
ein wichtiges technisches detail, dass ich hier nur einwerfe, weil es
dir vermutlich durchprobieren der entsprechenden lösungen ohnehin
unvermeidlich unterkommen wird, betrifft das stichwort: "audioworklet".
dabei handelt es sich um eine erweiterung der webaudio schnittstelle,
die einige ganz wichtige performance-vorteile bzw. unterschiede
gegenüber der ursprünglichen standard bzw. der dort üblichen
prozessierung nutzt. leider basiert das ganze auf einem google
erweiterungsvorschlag, der bisher nur im chromium zur verfügung steht.
es gibt zwar einige polyfills, also kompatibilitätslösungen, die das
ganze ein klein wenig browserübergreifend nutzbar machen, trotzdem
funktioniert das leider nur bis zu einem gewissen maß. bspw. die viel
geringere latency und störungsunanfälligkeit gegenüber anderen tasks im
browser kann man einfach nicht ohne weiters mit den alten mitteln
bewerkstelligen od. emulieren. aber, wie gesagt, dass ist nur ein
technisches detail, über das man fast unweigerlich stolpert, weil
natürlich alle avanciertern lösungen sich gerne dieser inkompatiblen
variante bedienen.
aber abgesehen von diesem punkt ist webaudio mittlerweile wirklich in
allen browsern super unterstütz und verfügbar.
ich würde auch bei der entwicklung auch ganz bewusst von den browsern
als orientierung und kleinsten gemeinsamen nenner ausgehen, und die
adaption für handys nur als abschließenden weiteren schritt im
hinterkopf behalten.
im prinzip sollte man ja heute ohnehin mehr oder weniger beliebigen
webcontent ohne großen aufwand in PWAs
(https://en.wikipedia.org/wiki/Progressive_web_application) packen
können, aber ganz so perfekt funktioniert das in der praxis leider noch
immer nicht mit allen webbrowsern und endgeräten.
erst falls wir tatsächlich auch bspw. div. sensoren von handies nutzen
wollen od.ä., wäre es tatsächlich fast unumgänglich, dafür vorgesehene
spezialisierte frameworks zu nutzen. in dem fall würde ich am ehesten zu
"native script" (https://www.nativescript.org/) greifen, weil das am
fließendsten einen übergang zu web typischen zugängen erlaubt.
der gestalterisch wichtigste punkt betrifft aber eine frage, der von
deiner deiner historischen skizze doch signifikant abweicht:
es ist zwar absolut naheliegend, dass man in diesem zusammenhang einfach
die zugänge aus bekannten audioprogrammen auf eine mögliche
nutzbarmachung im netz überträgt, trotzdem ist das der punkt, wo ich die
umkehrte herangehnsweise -- also eine übertragung typischer
datenorganisationsformen der heutigen netzwerk und cloud service
organisation in die andere richtung -- als ausgangsbasis der
inhaltlichen gestalt vorschlagen würde. mit anderen worten: kein
netzwerk von musikprogrammen, die mit OSC u.ä. verknüpft sind, oder
pipelines von audio strömen, die die man sich gegenseitig zuschickt od.
zwischendurch auch irgendwo einmal auf einem server zwischendurch parkt,
sondern eben wirklich eine apparatur, die vielmehr als gesamtsystem
einen geteilten systemzustand zugänglich macht bzw. zum thema hat. erst
in den den endgeräten soll diese weitestgehend abstrakte repäsentation
schließlich wieder in unterschiedlicher weise -- also quasi
"perspektivisch" -- unabhängig interpretiert werden bzw. in form von
mehreren nebeneinander laufen subsystemen im rahmen der ECS architektur
in klang od. visuelle oberfläche übersetzt werden.
das ist eine herangehensweise, über die du vielleicht den kopf schütteln
wirst, weil sie natürlich auf den ersten blick völlig unzweckmäßig und
an den haaren herbeigezogen wirkt, trotzdem ist das wirklich einer der
punkte, der mit konzeptuell besonders wichtig und bedeutsam erscheint.
in der praxis ist angedacht, dafür eine verteilte datenbank bzw.
replizierungsmechanismen zu verwenden, die relativ einfach zu handhaben
sind -- konkret rxdb (https://rxdb.info/). damit kann man dann auch via
GraphQL sehr gezielt bzw bandbreitensparend relevante bereiche im
datenbestand auslesen und sogar subskribieren, so dass man automatisch
verständigt wird, sobald sich dort irgendwas ändert. man kann damit also
in einer weise "reaktiv" umgehen, wie das heute in der
web-programmierung als stand der technik gilt.
im übrigen hat dieses ungewöhnliche konzeption den vorzug, dass wir ja
auch die funktionalität jener lokalen systeme, die die daten zur
laufzeit in sound oder grafische repräsentationen übersetzten, nicht
"hardcoded" in den client einbetten müssen, sondern dieses module auch
über die datenbank austauschen und teilen können -- schließlich sind es
ja nur ein paar zeilen javascript od. im extremfall webassembly module,
die überall die gleichen voraussetzzungen für die ausführung vorfinden!
der client bietet also vielmehr nur ein grundgerüst an, in dem dann
diese konkreten sound-, visualisierungs oder systemsteuerungsmodule
heruntergeladen und nebeneinander ausgeführt werden können.
theoretisch könnte man die für die datenbank auch eine völlig
dezentralisierte umsetzung heranziehen (bspw. https://gun.eco/), aber
ich fürchte, dass wir in dem punkt besser zugeständnise an die
stabilität und ausgereiftheit der mittel machen sollten, damit ddas
ganze wirklich zuverlässig funktioniert.
eine konsequenz, die sich aus diesem skizzierten zugang ergibt, besteht
übrigens darin, dass die zeitliche dimension der organisation ziemlich
weit in den hintergrund gedrängt wird, und man statt dessen vielmehr mit
einem gerade vorliegenden zeitlich punktuellen und doch komplexen
"ist-zustand" im system operiert. dass dürfte einiges umdenken
erfordern, wenn man über dafür geeignete akustische
umsetzungsmöglichkeiten nachdenkt, berührt aber auch die frage, wie man
in eine derartige apparatur dann überhaupt bewegung/dynamik/leben
einhauchen kann? ich hab das ohnehin schon im meinem letzten schreiben
angesprochen.
eine andere eigenheit besteht darin, dass jeder client im prinzip alle
möglichkeiten besitzt, dass gesamtsystem auch aktiv zu verändern bzw. zu
erweitern, da eben die wesentliche teile der akustischen und visuellen
umsetzung nicht hart in die software eingeschrieben sind, sondern in
modularen weise zur laufzeit aus dem netz nachgeladen oder eben auch in
die andere richtung hochgeladen werden können. die laufen schließlich
nebeneinader und in unterschiedlichen kombinationen am client. fabien
hat den diesbezüglichen eingriffs und nachvollzugsmöglichkeiten in
seiner GUI skizze ohnehein bereits mit dem "code"-symbol unten rechts
angedeutet. mir persönlich wäre es in diesem zusammenhang nur sehr
wichtig, das wir die form des aktiven eingriffs ganz generell so
gestalten, dass sie weniger als aufruf oder möglichkeit einfacher
interaktivität verstanden wird, sondern eben tatsächlich nur die
mitgestaltung neuer module erlaubt, aber die apparatur in ihrem
tatsächlichen ablauf weitestegehend selbstständig vor sich hin läuft
ohne irgendwelche dirigenten zu benötigen.
in vielen aspekten orientierte ich mich in dieser beschreibung an
organisationsschemata, wie man sie aus der computerspielentwicklung von
den entity component systems (ECS) her kennt. in dem punkt nenn ich aber
gleich gar keine konkrete software, die wir dafür heranziehen könnten,
sondern versuche vielmehr aus den entsprechenden grundsätzlichen
konzepten das heruaszuheben, was für uns hier nützlich sein könnte. es
ist ohnehin immer ein bisserl mühsam beim studium der entsprechenden
literatur und software mitzubedenken, dass wir eben kein spiel
entwickeln wollen, sondern vielmehr eine mediale skulptur.
das ist jetzt alles natürlich ein bisserl viel auf einmal, aber es
handelt sich ja auch nicht unbedingt um ein völlig ganz triviales
vorhaben. zumindest sind damit wenigstens wieder ein paar wesentliche
punkte angesprochen und festgehalten, die wir in den bisherigen treffen
oft in relativ kleinem kreis diskutiert haben bzw. die ich im lauf der
letzten monate wenigstens zu evaluieren und im hinblick auf ihre
praktische nutzbarkeit hin zusammenzutragen versucht habe.
natürlich müssen wir uns trotzdem in ganz kleinen schritten und ersten
praktischen versuchen an die ganze geschgichte annähern, aber zumindest
als fernziel oder vagen traum möchte ich eben durchaus den blick auf das
größere ganze auch nicht völlig aus den augen verlieren.
ich hoffe, du kannst irgendwas damit anfangen.
liebe grüße!
martin
More information about the Autonomie
mailing list