Sema es un campo de juego donde puedes crear rápidamente prototipos de minilenguajes de codificación en vivo para síntesis de señales, aprendizaje automático y escucha automática.
Sema tiene como objetivo proporcionar un entorno integrado en línea para diseñar lenguajes abstractos de alto nivel y lenguajes de bajo nivel más potentes.
Sema implementa un conjunto de principios de diseño básicos:
Motor de señales integrado: en términos de lenguaje e integración del motor de señales, no existe una división conceptual. Todo es una señal. Sin embargo, en aras de la modularidad, la reutilización y una arquitectura sólida, el motor de señales de sema se implementa mediante la biblioteca sema-engine.
Procesamiento de señal de muestra única: procesamiento de sonido por muestra para técnicas de soporte que utilizan bucles de retroalimentación, como modelado físico, reverberación y filtrado IIR.
Transducción de frecuencia de muestreo: es más sencillo realizar el procesamiento de señales con una frecuencia de muestreo principal, la frecuencia de audio. Se pueden resolver diferentes requisitos de frecuencia de muestreo de objetos dependientes mediante un muestreo ascendente y descendente, utilizando un transductor. El concepto de transductor nos permite acomodar una variedad de procesos con diferentes velocidades de muestreo (video, velocidad espectral, sensores, inferencia de modelos ML) dentro de un solo motor.
Abstracciones mínimas: no hay abstracciones de alto nivel, como buses, sintetizadores, nodos, servidores ni ningún andamio de lenguaje en nuestro motor de señales. Estas abstracciones se encuentran dentro del espacio de diseño del lenguaje del usuario final.
Sema requiere que se instalen las siguientes dependencias:
Para poder ejecutarse, Sema debe conectarse con una URL del proyecto y una clave API a un backend de Supabase .
Si decide utilizar npm
para compilar sema, puede seguir esta lista de comandos:
$ cd sema
$ npm install
$ npm run build
$ npm run dev
Si decide utilizar el administrador de paquetes Yarn, puede usar la siguiente lista de comandos:
Para usar hilo:
$ cd sema
$ yarn
$ yarn build
$ yarn dev
Una vez que tenga sema ejecutándose como una aplicación de nodo, puede cargarlo en su navegador en los siguientes puertos
La aceleración del hardware tendrá un efecto drástico en la velocidad de entrenamiento del modelo Tensorflow.js.
Para habilitarlo en Chrome:
Para habilitar en Firefox:
about:preferences
Sema utiliza Web Audio API Audio Worklets. Su rendimiento parece muy sensible al aumento de potencia de la CPU. Si tiene problemas con la calidad del sonido, intente configurar el regulador de la CPU en modo de rendimiento . por ejemplo, en Ubuntu,
$ cpupower frequency-set --governor performance
La documentación interna de Sema tiene como objetivo respaldar la experiencia de aprendizaje de los usuarios. Está integrado dentro de la aplicación y consta de las siguientes secciones:
Empezando
Patio de juegos
Codificación en vivo
Aprendizaje automático
Creación de lenguaje
La documentación Wiki de Sema tiene como objetivo apoyar las contribuciones. Se centra en cómo se diseña y construye Sema:
¿Cuál es la arquitectura de Sema?
¿Cómo implementa y utiliza Sema los servicios web?
¿Cómo configurar Sema en mi propio servidor web?
¿Cómo agrego una nueva biblioteca ML a Sema?
¿Cómo creo y agrego un nuevo widget a Sema?
¿Cómo agrego mi propia documentación a Sema?
¿Cómo funcionan las tiendas Svelte en Sema?
Sema es un proyecto de código abierto y, con suerte, la visión, los objetivos y la estructura subyacentes lo motivarán a contribuir en él. Verifique lo siguiente:
¿Cómo contribuyo a Sema?
CONTRIBUYENDO.md
Preparándose para el desarrollo
Sema de depuración
Guía de diseño
Bernardo, F., Kiefer, C., Magnusson, T. (2021). Evaluación del apoyo a la creatividad de un patio de juegos para el aprendizaje automático con codificación en vivo, en: Baalsrud Hauge J., CS Cardoso J., Roque L., González-Calero PA (eds) Entertainment Computing – ICEC 2021. ICEC 2021. Apuntes de conferencias sobre informática Ciencia, vol 13056. Springer, Cham. https://doi.org/10.1007/978-3-030-89394-1_38
Bernardo, F., Kiefer, C., Magnusson, T. (2020). Un motor de señales para un ecosistema de lenguaje de codificación en vivo, J. Audio Eng. Soc., vol. 68, núm. 10, págs. 756-766. doi: https://doi.org/10.17743/jaes.2020.0016
Bernardo, F., Kiefer, C., Magnusson, T. (2020). Diseño de un ecosistema de lenguaje de código en vivo pluralista y fácil de usar con Sema. Quinta Conferencia Internacional sobre Live Coding, Universidad de Limerick, Limerick, Irlanda
Bernardo, F., Kiefer, C., Magnusson, T. (2019). Un motor de señales basado en AudioWorklet para un ecosistema de lenguaje de codificación en vivo. En las actas de la Web Audio Conference 2019, Universidad Noruega de Ciencia y Tecnología (NTNU), Trondheim, Noruega (Premio al mejor artículo en la Web Audio Conference 2019)