Sema ist ein Spielplatz, auf dem Sie schnell Prototypen von Live-Coding-Minisprachen für Signalsynthese, maschinelles Lernen und maschinelles Zuhören erstellen können.
Ziel von Sema ist es, eine integrierte Online-Umgebung zum Entwerfen sowohl abstrakter Hochsprachen als auch leistungsfähigerer Niedersprachen bereitzustellen.
Sema implementiert eine Reihe grundlegender Designprinzipien:
Integrierte Signal-Engine – In Bezug auf die Integration von Sprache und Signal-Engine gibt es keine konzeptionelle Trennung. Alles ist ein Signal. Aus Gründen der Modularität, Wiederverwendbarkeit und einer soliden Architektur wird die Signal-Engine von Sema jedoch durch die Sema-Engine-Bibliothek implementiert.
Signalverarbeitung einzelner Samples – Klangverarbeitung pro Sample zur Unterstützung von Techniken, die Rückkopplungsschleifen verwenden, wie z. B. physikalische Modellierung, Nachhall und IIR-Filterung.
Abtastratentransduktion – Es ist einfacher, die Signalverarbeitung mit einer Hauptabtastrate durchzuführen, der Audiorate. Unterschiedliche Anforderungen an die Abtastrate abhängiger Objekte können durch Upsampling und Downsampling mithilfe eines Wandlers gelöst werden. Das Transducer-Konzept ermöglicht es uns, eine Vielzahl von Prozessen mit unterschiedlichen Abtastraten (Video, Spektralrate, Sensoren, ML-Modellinferenz) in einer einzigen Engine unterzubringen.
Minimale Abstraktionen – In unserer Signal-Engine gibt es keine Abstraktionen auf hoher Ebene wie Busse, Synthesizer, Knoten, Server oder andere Sprachgerüste. Solche Abstraktionen liegen im Bereich des Endbenutzer-Sprachdesigns.
Sema erfordert die Installation der folgenden Abhängigkeiten:
Um auszuführen, muss Sema mit einer Projekt-URL und einem API-Schlüssel eine Verbindung zu einem Supabase-Backend herstellen.
Wenn Sie sich entscheiden, npm
zum Erstellen von Sema zu verwenden, können Sie dieser Befehlsliste folgen:
$ cd sema
$ npm install
$ npm run build
$ npm run dev
Wenn Sie sich stattdessen für den Yarn-Paketmanager entscheiden, können Sie die folgende Befehlsliste verwenden:
So verwenden Sie Garn:
$ cd sema
$ yarn
$ yarn build
$ yarn dev
Sobald Sema als Knotenanwendung ausgeführt wird, können Sie es über die folgenden Ports in Ihren Browser laden
Die Hardwarebeschleunigung wird sich drastisch auf die Trainingsgeschwindigkeit des Tensorflow.j-Modells auswirken.
So aktivieren Sie es in Chrome:
Zur Aktivierung in Firefox:
about:preferences
Sema verwendet Web-Audio-API-Audio-Worklets. Ihre Leistung scheint sehr empfindlich auf die Skalierung der CPU-Leistung zu reagieren. Wenn Sie Probleme mit der Tonqualität haben, versuchen Sie, den CPU-Governor in den Leistungsmodus zu versetzen. zB auf Ubuntu,
$ cpupower frequency-set --governor performance
Die interne Dokumentation von Sema zielt darauf ab, die Lernerfahrung der Benutzer zu unterstützen. Es ist in die Anwendung integriert und umfasst die folgenden Abschnitte:
Erste Schritte
Spielplatz
Live-Codierung
Maschinelles Lernen
Spracherstellung
Die Wiki-Dokumentation von Sema zielt darauf ab, Beiträge zu unterstützen. Es konzentriert sich darauf, wie Sema entworfen und gebaut wird:
Was ist die Architektur von Sema?
Wie implementiert und nutzt Sema Webdienste?
Wie richte ich Sema auf meinem eigenen Webserver ein?
Wie füge ich Sema eine neue ML-Bibliothek hinzu?
Wie erstelle und füge ich ein neues Widget zu Sema hinzu?
Wie füge ich meine eigene Dokumentation zu Sema hinzu?
Wie funktionieren die Svelte-Filialen in Sema?
Sema ist ein Open-Source-Projekt und wir hoffen, dass die zugrunde liegende Vision, die Ziele und die Struktur Sie dazu motivieren, dazu beizutragen. Überprüfen Sie Folgendes:
Wie kann ich zu Sema beitragen?
BEITRAG.md
Vorbereitungen für die Entwicklung
Debuggen von Sema
Design-Leitfaden
Bernardo, F., Kiefer, C., Magnusson, T. (2021). Bewertung der Unterstützung der Kreativität eines Spielplatzes für Live-Coding-Maschinenlernen, In: Baalsrud Hauge J., CS Cardoso J., Roque L., Gonzalez-Calero PA (Hrsg.) Entertainment Computing – ICEC 2021. ICEC 2021. Vorlesungsunterlagen in Computer Science, Bd. 13056. Springer, Cham. https://doi.org/10.1007/978-3-030-89394-1_38
Bernardo, F., Kiefer, C., Magnusson, T. (2020). Eine Signal-Engine für ein Live-Coding-Sprach-Ökosystem, J. Audio Eng. Soc., vol. 68, nein. 10, S. 756–766. doi: https://doi.org/10.17743/jaes.2020.0016
Bernardo, F., Kiefer, C., Magnusson, T. (2020). Entwerfen eines pluralistischen und benutzerfreundlichen Live-Code-Sprach-Ökosystems mit Sema. 5. Internationale Konferenz zu Live Coding, University of Limerick, Limerick, Irland
Bernardo, F., Kiefer, C., Magnusson, T. (2019). Eine AudioWorklet-basierte Signal-Engine für ein Live-Coding-Sprach-Ökosystem. In Proceedings of Web Audio Conference 2019, Norwegische Universität für Wissenschaft und Technologie (NTNU), Trondheim, Norwegen (Best Paper Award bei der Web Audio Conference 2019)