Sema é um playground onde você pode criar rapidamente protótipos de minilinguagens de codificação ao vivo para síntese de sinais, aprendizado de máquina e escuta de máquina.
A Sema tem como objetivo fornecer um ambiente on-line integrado para projetar linguagens abstratas de alto nível e linguagens de baixo nível mais poderosas.
A Sema implementa um conjunto de princípios básicos de design:
Motor de sinal integrado – Em termos de integração de linguagem e motor de sinal, não há divisão conceitual. Tudo é um sinal. No entanto, por uma questão de modularidade, reutilização e arquitetura sólida, o mecanismo de sinal do sema é implementado pela biblioteca sema-engine.
Processamento de sinal de amostra única – Processamento de som por amostra para suportar técnicas que usam loops de feedback, como modelagem física, reverberação e filtragem IIR.
Transdução de taxa de amostragem – É mais simples fazer o processamento de sinal com uma taxa de amostragem principal, a taxa de áudio. Diferentes requisitos de taxa de amostragem de objetos dependentes podem ser resolvidos aumentando e diminuindo a resolução, usando um transdutor. O conceito de transdutor nos permite acomodar uma variedade de processos com taxas de amostragem variadas (vídeo, taxa espectral, sensores, inferência de modelo de ML) em um único mecanismo.
Abstrações mínimas – Não há abstrações de alto nível, como barramentos, sintetizadores, nós, servidores ou qualquer estrutura de linguagem em nosso mecanismo de sinal. Essas abstrações ficam dentro do espaço de design da linguagem do usuário final.
Sema requer que as seguintes dependências sejam instaladas:
Para funcionar, o Sema deve se conectar com um URL de projeto e uma chave de API a um backend Supabase .
Se você decidir usar npm
para construir sema, você pode seguir esta lista de comandos:
$ cd sema
$ npm install
$ npm run build
$ npm run dev
Se você decidir usar o gerenciador de pacotes Yarn, poderá usar a seguinte lista de comandos:
Para usar o fio:
$ cd sema
$ yarn
$ yarn build
$ yarn dev
Depois de executar o sema como um aplicativo de nó, você pode carregá-lo em seu navegador nas seguintes portas
A aceleração de hardware terá um efeito drástico na velocidade de treinamento do modelo Tensorflow.js.
Para habilitá-lo no Chrome:
Para ativar no Firefox:
about:preferences
Sema usa Worklets de áudio da API de áudio da Web. Seu desempenho parece muito sensível ao dimensionamento de energia da CPU. Se você estiver enfrentando problemas de qualidade de som, tente configurar o governador da CPU para o modo de desempenho . por exemplo, no Ubuntu,
$ cpupower frequency-set --governor performance
A documentação interna da Sema visa apoiar a experiência de aprendizagem dos usuários. Está integrado ao aplicativo e compreende as seguintes seções:
Começando
Parque infantil
Codificação ao vivo
Aprendizado de máquina
Criação de linguagem
A documentação Wiki da Sema visa apoiar contribuições. Ele se concentra em como o Sema é projetado e construído:
Qual é a arquitetura da Sema?
Como a Sema implementa e utiliza serviços web
Como configurar o Sema no meu próprio servidor web?
Como adiciono uma nova biblioteca de ML ao Sema?
Como faço para criar e adicionar um novo widget ao Sema?
Como adiciono minha própria documentação na Sema?
Como funcionam as lojas Svelte na Sema?
Sema é um projeto de código aberto e esperamos que a visão, os objetivos e a estrutura subjacentes o motivem a contribuir para ele. Verifique o seguinte:
Como posso contribuir para a Sema?
CONTRIBUINDO.md
Preparando-se para o desenvolvimento
Depurando Sema
Guia de projeto
Bernardo, F., Kiefer, C., Magnusson, T. (2021). Avaliando o suporte para a criatividade de um playground para aprendizado de máquina de codificação ao vivo, em: Baalsrud Hauge J., CS Cardoso J., Roque L., Gonzalez-Calero PA (eds) Entertainment Computing – ICEC 2021. ICEC 2021. Notas de aula em computador Ciência, vol 13056. Springer, Cham. https://doi.org/10.1007/978-3-030-89394-1_38
Bernardo, F., Kiefer, C., Magnusson, T. (2020). Um mecanismo de sinal para um ecossistema de linguagem de codificação ao vivo, J. Audio Eng. Soc., vol. 68, não. 10, páginas 756-766. faça: https://doi.org/10.17743/jaes.2020.0016
Bernardo, F., Kiefer, C., Magnusson, T. (2020). Projetando um ecossistema de linguagem de código ativo pluralista e fácil de usar com Sema. 5ª Conferência Internacional sobre Live Coding, Universidade de Limerick, Limerick, Irlanda
Bernardo, F., Kiefer, C., Magnusson, T. (2019). Um mecanismo de sinal baseado em AudioWorklet para um ecossistema de linguagem de codificação ao vivo. In Proceedings of Web Audio Conference 2019, Universidade Norueguesa de Ciência e Tecnologia (NTNU), Trondheim, Noruega (Prêmio de Melhor Artigo na Web Audio Conference 2019)