JavaScript:Библиотеки/p5.sound/Класс p5.Signal
Черновик |
Класс p5.Signal [1]
Описание
Это класс для создания постоянного сигнала с частотой, соответствующей частоте аудиосигналов. Он используется объектами p5.Oscillator и p5.Envelope для расчета модуляции сигнала.
Это необходимо, потому что задачи Web Audio API обрабатываются при помощи отдельного таймера. К примеру, блок draw() в p5 повторяется около 60 раз в секунду. Но аудио-таймер должен обрабатывать отсчеты 44100 раз в секунду. Таким образом, если мы хотим работать со всеми этими отсчетами, мы не можем сделать это в цикле draw(), но мы можем сделать это, используя постоянный сигнал с частотой как у аудиосигналов.
Класс p5.Signal в основном функционирует «за кулисами» библиотеки p5.sound и возвращает объект Tone.Signal из библиотеки Tone.js, разработанной Йотамом Манном. Если вы хотите работать с аудиосигналами напрямую (например, для модульного синтеза звука), рекомендуем заглянуть на GitHub-репозиторий этой библиотеки.
Чтобы использовать этот класс, нужно подключить библиотеку p5.sound. Для этого в заголовок своего файла «index.html» впишите следующее:
<script language="javascript" type="text/javascript" src="path/to/p5.sound.js"></script>
Синтаксис
new p5.Signal()
Параметры
void
Возвращаемое значение
Объект Tone.Signal из библиотеки Tone.js.
Методы
- fade() – выполняет затухание значения (для плавных переходов)
- setInput() – подключает объект библиотеки p5.sound или узел Web Audio API к текущему объекту p5.Signal, чтобы мы могли модифицировать его значения
- add() – добавляет текущему аудиосигналу постоянное значение и возвращает получившийся в результате аудиосигнал. Не меняет значение исходного сигнала, возвращая новый объект p5.SignalAdd
- mult() – умножает текущий аудиосигнал на постоянное значение и возвращает получившийся в результате аудиосигнал. Не меняет значение исходного сигнала, возвращая новый объект p5.SignalMult
- scale() – масштабирует значения текущего сигнала к заданному диапазону и возвращает получившийся в результате аудиосигнал. Не меняет значение исходного сигнала, возвращая новый объект p5.SignalScale
Пример
№1
function setup() {
carrier = new p5.Oscillator('sine');
carrier.amp(1); // задаем громкость
carrier.freq(220); // задаем частоту
carrier.start(); // запускаем генерирование колебаний
modulator = new p5.Oscillator('sawtooth');
modulator.disconnect();
modulator.amp(1);
modulator.freq(4);
modulator.start();
// По умолчанию диапазон амплитудных значений
// объекта «modulator» составляет от «-1» до «1».
// Умножаем эти значения на «-200»,
// чтобы получить диапазон от «-200» до «200»,
// а потом прибавляем к ним «220», чтобы получить от «20» до «420»:
carrier.freq( modulator.mult(-200).add(220) );
}