Sema est un terrain de jeu où vous pouvez rapidement prototyper des mini-langages de codage en direct pour la synthèse de signaux, l'apprentissage automatique et l'écoute automatique.
Sema vise à fournir un environnement intégré en ligne pour concevoir à la fois des langages abstraits de haut niveau et des langages de bas niveau plus puissants.
Sema met en œuvre un ensemble de principes de conception fondamentaux :
Moteur de signal intégré – En termes d’intégration du langage et du moteur de signal, il n’y a pas de division conceptuelle. Tout est signal. Cependant, dans un souci de modularité, de réutilisabilité et d'architecture solide, le moteur de signaux de sema est implémenté par la bibliothèque sema-engine.
Traitement du signal à échantillon unique – Traitement du son par échantillon pour prendre en charge les techniques utilisant des boucles de rétroaction, telles que la modélisation physique, la réverbération et le filtrage IIR.
Transduction de la fréquence d'échantillonnage – Il est plus simple d'effectuer un traitement du signal avec une fréquence d'échantillonnage principale, la fréquence audio. Différentes exigences de fréquence d'échantillonnage d'objets dépendants peuvent être résolues par suréchantillonnage et sous-échantillonnage, à l'aide d'un transducteur. Le concept de transducteur nous permet de prendre en charge une variété de processus avec des fréquences d'échantillonnage variables (vidéo, fréquence spectrale, capteurs, inférence de modèle ML) au sein d'un seul moteur.
Abstractions minimales – Il n'y a pas d'abstractions de haut niveau telles que des bus, des synthés, des nœuds, des serveurs ou tout autre échafaudage de langage dans notre moteur de signaux. De telles abstractions se situent dans l’espace de conception du langage de l’utilisateur final.
Sema nécessite l'installation des dépendances suivantes :
Pour fonctionner, Sema doit se connecter avec une URL de projet et une clé API à un backend Supabase .
Si vous décidez d'utiliser npm
pour créer sema, vous pouvez suivre cette liste de commandes :
$ cd sema
$ npm install
$ npm run build
$ npm run dev
Si vous décidez d'utiliser le gestionnaire de packages Yarn à la place, vous pouvez utiliser la liste de commandes suivante :
Pour utiliser le fil :
$ cd sema
$ yarn
$ yarn build
$ yarn dev
Une fois que Sema est exécuté en tant qu'application de nœud, vous pouvez le charger sur votre navigateur sur les ports suivants
L'accélération matérielle aura un effet drastique sur la vitesse de formation du modèle Tensorflow.js.
Pour l'activer dans Chrome :
Pour activer dans Firefox :
about:preferences
Sema utilise les worklets audio de l'API Web Audio. Leurs performances semblent très sensibles à l’évolution de la puissance du processeur. Si vous rencontrez des problèmes de qualité sonore, essayez de régler le gouverneur du processeur en mode performances . par exemple sur Ubuntu,
$ cpupower frequency-set --governor performance
La documentation interne de Sema vise à soutenir l'expérience d'apprentissage des utilisateurs. Il est intégré au sein de l'application et comprend les sections suivantes :
Commencer
Aire de jeux
Codage en direct
Apprentissage automatique
Création de langage
La documentation Wiki de Sema vise à soutenir les contributions. Il se concentre sur la façon dont Sema est conçu et construit :
Quelle est l’architecture de Sema ?
Comment Sema implémente et utilise les services Web
Comment configurer Sema sur mon propre serveur web ?
Comment ajouter une nouvelle bibliothèque ML à Sema ?
Comment créer et ajouter un nouveau widget à Sema ?
Comment ajouter ma propre documentation à Sema ?
Comment fonctionnent les magasins Svelte à Sema ?
Sema est un projet open source et nous espérons que la vision, les objectifs et la structure sous-jacents vous motiveront à y contribuer. Vérifiez les éléments suivants :
Comment puis-je contribuer à Sema ?
CONTRIBUER.md
Se préparer au développement
Débogage de Sema
Guide de conception
Bernardo, F., Kiefer, C., Magnusson, T. (2021). Évaluation du soutien à la créativité d'un terrain de jeu pour l'apprentissage automatique du codage en direct, dans : Baalsrud Hauge J., CS Cardoso J., Roque L., Gonzalez-Calero PA (eds) Entertainment Computing – ICEC 2021. ICEC 2021. Notes de cours en informatique Science, vol 13056. Springer, Cham. https://doi.org/10.1007/978-3-030-89394-1_38
Bernardo, F., Kiefer, C., Magnusson, T. (2020). Un moteur de signaux pour un écosystème de langage de codage en direct, J. Audio Eng. Soc., vol. 68, non. 10, pages 756-766. est ce que je: https://doi.org/10.17743/jaes.2020.0016
Bernardo, F., Kiefer, C., Magnusson, T. (2020). Concevoir un écosystème de langage Live Code pluraliste et convivial avec Sema. 5e Conférence internationale sur le codage en direct, Université de Limerick, Limerick, Irlande
Bernardo, F., Kiefer, C., Magnusson, T. (2019). Un moteur de signaux basé sur AudioWorklet pour un écosystème de langage de codage en direct. Dans Actes de la Web Audio Conference 2019, Université norvégienne des sciences et technologies (NTNU), Trondheim, Norvège (Prix du meilleur article à la Web Audio Conference 2019)