400 музыкальных инструментов для Javascript
На данный момент позволяет использовать 400 (четыре сотни) музыкальных инструментов для воспроизведения звука или сгенерированной музыки.
По сути, WebAudioFont это набор файлов Javascript, которые содержат массив аудиоданных и описание правил синтеза (AHDSR, частоту и пр.).
Для воспроизведения используется плеер на основе Web Audio API.
Все возможности Web Audio API доступны для используемых инструментов — можно подключать фильтры, плавно менять громкость и частоту, добавлять эхо и пр.
Синтез звука производится по принципу Wavetable.
Hello world
Минимальный код для воспроизведения звука
Получится примерно такая страница.
Подробнее о коде:
— подключаем плеер WebAudioFontPlayer.js
— подключаем выбранный инструмент из файла 32.0.Accoustic_32Bsaccousticbs_461_460_45127.js
click!
— по клику на ссылку вызываем проигрывание ноты.
queueWaveTable (audioContext, target, preset, when, pitch, duration, continuous) это основная (да и, скорей всего, единственная необходимая) функция плеера. Её параметры подробней:
- audioContext — текущий AudioContext из Web Audio API
- target — узел через который будет воспроизводиться звук, в простейшем случае это audioContext.destination
- preset — переменная содержащая пресет (в примере это _tone_Accoustic_32Bsaccousticbs_461_460_45127)
- when — время начала воспроизведения в секундах относительно audioContext.currentTime
- pitch — высота ноты
- duration — длительность ноты в секундах
- continuous — true если нужно игнорировать AHDSR
Исходный код и дополнительную информацию с примерами можно посмотреть на сайте проекта WebAudioFont.
Для каких приложений можно использовать WebAudioFont?
Основное назначение WebAudioFont — виртуальные инструменты, звуковые эффекты в немузыкальных приложениях, генерация и воспроизведение музыки в рилтайме.
На сайте проекта есть дополнительные примеры по областям применения:
- виртуальные инструменты: ударник, пианино, флейта
- звуковые эффекты: пример звука автомобиля
- воспроизведение сгенерированной музыки: один рифф с переключением по двум вариантам
Отличие от других библиотек
WebAudioFont не является библиотекой или фреймворком, хотя и состоит их кода Javascript. Это большой набор музыкальных инструментов которые вы можете использовать в своих приложениях подключив парой строчек:
— в каталоге всего 170 инструментов с разыми вариантами звучания (по 2–3 на каждый инструмент).