Sema — это игровая площадка, где вы можете быстро создавать прототипы живых мини-языков кодирования для синтеза сигналов, машинного обучения и машинного прослушивания.
Sema стремится предоставить интегрированную онлайн-среду для разработки как абстрактных языков высокого уровня, так и более мощных языков низкого уровня.
Sema реализует набор основных принципов проектирования:
Интегрированный механизм обработки сигналов. С точки зрения интеграции языка и механизма обработки сигналов концептуального разделения нет. Все является сигналом. Однако в целях модульности, возможности повторного использования и надежной архитектуры механизм сигналов Sema реализован с помощью библиотеки sema-engine.
Обработка сигнала с одной выборкой — обработка звука для каждой выборки для поддержки методов, использующих петли обратной связи, таких как физическое моделирование, реверберация и БИХ-фильтрация.
Преобразование частоты дискретизации. Обработку сигнала проще выполнять с одной основной частотой дискретизации — частотой звука. Различные требования к частоте дискретизации зависимых объектов могут быть решены путем повышения и понижения дискретизации с использованием преобразователя. Концепция преобразователя позволяет нам реализовать различные процессы с различной частотой дискретизации (видео, спектральная частота, датчики, вывод модели машинного обучения) в рамках одного механизма.
Минимальные абстракции. В нашем сигнальном движке нет абстракций высокого уровня, таких как шины, синтезаторы, узлы, серверы или какие-либо языковые каркасы. Такие абстракции находятся в пространстве проектирования языка конечного пользователя.
Sema требует установки следующих зависимостей:
Для запуска Sema необходимо подключиться к серверной части Supabase с помощью URL-адреса проекта и ключа API.
Если вы решите использовать npm
для сборки SEMA, вы можете выполнить следующий список команд:
$ cd sema
$ npm install
$ npm run build
$ npm run dev
Если вы решите вместо этого использовать менеджер пакетов Yarn, вы можете использовать следующий список команд:
Чтобы использовать Пряжу:
$ cd sema
$ yarn
$ yarn build
$ yarn dev
Если у вас есть Sema, работающая как приложение узла, вы можете загрузить ее в свой браузер по следующим портам.
Аппаратное ускорение окажет существенное влияние на скорость обучения модели Tensorflow.js.
Чтобы включить его в Chrome:
Чтобы включить в Firefox:
about:preferences
Sema использует аудио-рабочие программы Web Audio API. Их производительность кажется очень чувствительной к масштабированию мощности процессора. Если у вас возникли проблемы с качеством звука, попробуйте перевести регулятор ЦП в режим производительности . например, в Ubuntu,
$ cpupower frequency-set --governor performance
Внутренняя документация Sema направлена на поддержку опыта обучения пользователей. Он интегрирован в приложение и состоит из следующих разделов:
Начиная
Детская площадка
Живое кодирование
Машинное обучение
Создание языка
Wiki-документация Sema направлена на поддержку вкладов. Основное внимание уделяется тому, как Sema спроектирована и построена:
Какова архитектура Семы?
Как Sema реализует и использует веб-сервисы
Как настроить Sema на моем собственном веб-сервере?
Как добавить новую библиотеку ML в Sema?
Как создать и добавить новый виджет в Sema?
Как добавить в Sema собственную документацию?
Как работают магазины Svelte в Семе?
Sema — это проект с открытым исходным кодом, и мы надеемся, что лежащее в его основе видение, цели и структура побудят вас внести в него свой вклад. Проверьте следующее:
Как я могу внести свой вклад в Sema?
CONTRIBUTING.md
Настраиваемся на разработку
Отладка Sema
Руководство по проектированию
Бернардо Ф., Кифер К., Магнуссон Т. (2021). Оценка поддержки творчества на игровой площадке для машинного обучения в реальном времени, В: Баалсруд Хауге Дж., К.С. Кардосо Дж., Роке Л., Гонсалес-Калеро П.А. (ред.) Развлечения вычисления – ICEC 2021. ICEC 2021. Конспекты лекций по компьютеру Science, том 13056. Springer, Cham. https://doi.org/10.1007/978-3-030-89394-1_38
Бернардо Ф., Кифер К., Магнуссон Т. (2020). Сигнальный механизм для живой экосистемы языков кодирования, J. Audio Eng. Соц., вып. 68, нет. 10, стр. 756-766. дои: https://doi.org/10.17743/jaes.2020.0016
Бернардо Ф., Кифер К., Магнуссон Т. (2020). Проектирование плюралистической и удобной для пользователя экосистемы языка живого кода с помощью Sema. 5-я Международная конференция по живому программированию, Университет Лимерика, Лимерик, Ирландия
Бернардо Ф., Кифер К., Магнуссон Т. (2019). Механизм сигналов на основе AudioWorklet для экосистемы живого языка кодирования. В материалах конференции Web Audio 2019, Норвежский университет науки и технологий (NTNU), Тронхейм, Норвегия (награда за лучшую статью на конференции Web Audio 2019)