Dancer.js — высокуровневый аудио API, пригодный для использования, как в Mozilla Audio Data API, так и в Webkit Web Audio API с обратной поддержкой Flash.
Можно использовать в режиме реального времени для визуализации аудио-данных и данных частот сигнала
Dancer может получать аудио с любого существующего источника звука
Автоматическое обнаружение ударов в визуализации
Простые обратные вызовы и события на любой части мелодии
Поддержка Web Audio (webkit), Audio Data (mozilla) и Flash (v9+)
Расширяемый фреймворк, поддерживающий плагины
Методы Dancer
Установка
load( source ) определяет источник аудио для экземпляра dancer. source может быть аудио-элементом или объектом со свойством src и массивом codecs. Примеры ввода:
getVolume() — возвращает нормализованное значение (от 0 до 1) текущей громкости.
getTime() — возвращает текущее время.
getProgress() — возвращает значение загрузки аудио от 0 до 1.
getWaveform() — возвращает массив данных осциллограммы (Float32Array (1024))
getSpectrum() — возвращает массив данных частот (Float32Array (512)).
getFrequency( freq [, endFreq ] ) — возвращает величину частоты или среднее по диапазону частот.
isLoaded() — возвращает логическое значения загрузки экземпляра dancer.
isPlaying() — возвращает логическое значение текущего состояния проигрывания экземпляра dancer.
Разделы
Все методы, в том числе обратные вызовы, возвращают this.
after( t, callback ) — инициирует обратный вызов на каждом кадре после времени t.
before( t, callback ) — инициирует обратный вызов на каждом кадре перед временем t.
between( t0, t1, callback ) — инициирует обратный вызов на каждом кадре между временем t0 и t1.
onceAt( t, callback ) — инициирует единичный обратный вызов на времени t.
Привязка
Основные публикации связываются в экземпляре dancer. update и loaded являются предопределенными событиями, которые вызываются фреймворком и доступны на каждом кадре/фрейме (update) и при загрузке аудио-файла (loaded).
bind( name, callback ) — привязка обратного вызова с именем name. Этот метод можно вызывать несколько раз, чтобы привязать несколько обратных вызовов одного и того же имени.
unbind( name ) — отвязка всех обратных вызовов с именем name.
trigger( name ) — запускает все обратные вызовы с именем name.
Импульс
Импульсы появляются тогда, когда амплитуда (нормализованные значения между 0 и 1) указанной частоты или амплитуда на указанном диапазоне больше, чем минимальный порог или амплитуда, зарегистрированная ранее.
createKick( options ) — создает новый экземпляр импульса, связанный с экземпляром dancer. Опции представлены ниже.
frequency — частота (элемент спектра) для проверки шипа. Может быть единичным числом (number) или диапазоном (двумерный массив). По умолчанию: [ 0, 10 ]
threshold — Минимальная амплитуда частотного диапазона для определения амплитуды. По умолчанию: 0.3
decay — скорость, с которой амплитуда ранее зарегистрированного импульса уменьшается на каждом фрейме. По умолчанию: 0.02
onKick — обратный вызов, запускаемый при обнаружении импульса.
offKick — вызывается, когда нет импульса на текущем фрейме.
Статические методы Dancer
addPlugin( name, fn ) — добавляет плагин с именем name с инициализируемой функцией fn
isSupported() — возвращает строку с webaudio, audiodata или flash. Возвращает пустую строку, если браузер не поддерживает какой-либо из методов. Возвращает null, если браузер не поддерживает типизированные массивы.
canPlay( type ) — возвращает true или false, определяя, может ли браузер воспроизводить аудио-файлы указанного типа type, который может быть 'mp3', 'ogg', 'wav' или 'aac'.
setOptions( options ) — принимает набор пар «ключ-значение» для установки параметров.
version — свойство объекта Dancer, которое возвращает строку текущей версии Dancer.
Параметры Dancer
flashSWF — путь к soundmanager2.swf. Требуется поддержка flash.
flashJS — путь к soundmanager2.js. Требуется поддержка flash.
Методы экземпляра импульс
Эти методы могут быть вызваны на экземпляре импульса для запуска обратных вызовов.
on() — включает обратные вызовы на экземпляре импульса
off() — выключает обратные вызовы
set( options ) — установка параметров
Пример
Чтобы увидеть результаты работы плагина, посмотрите папку examples/.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Dancer.setOptions({
flashJS:'../../lib/soundmanager2.js',
flashSWF:'../../lib/soundmanager2.swf'
});
var
audio=document.getElementsByTagName('audio')[0],
dancer=newDancer(),
kick=dancer.createKick({
onKick:function(mag){
console.log('Kick!');
},
offKick:function(mag){
console.log('no kick :(');
}
});
kick.on();
dancer.onceAt(10,function(){
// Активация каждые 10 секунд
}).between(10,60,function(){
// После 10 сек., выполняем что-нибудь первую минуту на каждом фрейме
}).after(60,function(){
// После 60 сек., забираем карту частот позиции объекта
object.y=this.getFrequency(400);
}).onceAt(120,function(){
// После 120 сек.
kick.off();
}).load(audio);// И в конце, загружаем аудио-файл
dancer.play();
Требования
HTML5 с Web Audio или Audio Data поддерживаются браузерами Chrome и Firefox. Для остальных браузеров функционал реализован через flash технологию.
Чтобы включить flash, вам необходимо указать для flashSWF путь к soundmanager2.swf и для flashJS путь к soundmanager2.js. Оба файла в папке lib/.
Зависимости
dsp.js — подмножество dsp.js (fft), используется для быстрого преобразования Фурье (Включено в Dancer)
flash_detect — определение поддержки flash (Включено в Dancer)
soundmanager2 — soundmanager2 используется для обратной поддержки flash (в lib/)