По сути, HYPERBLAM декларативная обёртка над Web Audio API, которая использует Web Components. Вместо написания кода вроде:
const oscillator = audioContext.createOscillator();
const filter = audioContext.createBiquadFilter();
const gain = audioContext.createGain();
oscillator.connect(filter);
filter.connect(gain);
gain.connect(audioContext.destination);
Описываем через композицию примерно так:
<blam-sampler>
<blam-sequence>
...
</blam-sequence>
</blam-sampler>
То есть музыка становится частью разметки документа, примерно так же, как HTML описывает интерфейс страницы.
Во-первых, декларативность вместо программирования. Автор пытается перенести философию HTML на создание музыки. HTML теги хорошо подходят для описания того, что должно быть создано, а не как именно это создавать. HYPERBLAM использует тот же подход для аудио. Вместо создания графа узлов через JavaScript разработчик описывает структуру музыки через вложенные элементы.
Во-вторых, независимость от экосистемы. Проект не использует большие фреймворки и внешние зависимости. Это довольно типичная идея современного веба последних лет возвращение к платформенным API. Браузер уже умеет работать со звуком через Web Audio API, поэтому библиотека выступает лишь тонким слоем абстракции над ним.
В-третьих, композиция. Практически всё представлено в виде элементов, которые можно комбинировать между собой.
Отдельное направление проекта — генеративная музыка. Библиотека поддерживает работу со случайными последовательностями, полиритмией, случайными модуляциями параметров и различными способами генерации звуковых событий. Благодаря этому её можно использовать не только для написания музыкальных партий, но и для создания процедурного звука, например в играх или интерактивных веб-приложениях.
С точки зрения архитектуры фронтенда проект любопытен тем, что переносит идеи Web Components и декларативного UI в совершенно другую область. Если React описывает интерфейсы, то HYPERBLAM пытается описывать музыку. Его можно рассматривать не столько как музыкальную библиотеку, сколько как эксперимент по созданию языка описания звука поверх HTML и Web Audio API.