JavaScript:Библиотеки/p5.sound/Класс p5.Signal: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 18: | Строка 18: | ||
Чтобы использовать этот класс, нужно подключить библиотеку p5.sound. Для этого в заголовок своего файла «index.html» впишите следующее: | Чтобы использовать этот класс, нужно подключить библиотеку p5.sound. Для этого в заголовок своего файла «index.html» впишите следующее: | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
<script language="javascript" type="text/javascript" src="path/to/p5.sound.js"></script> | <script language="javascript" type="text/javascript" src="path/to/p5.sound.js"></script> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 24: | Строка 24: | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
new p5.Signal() | new p5.Signal() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 30: | Строка 30: | ||
==Параметры== | ==Параметры== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
void | void | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 36: | Строка 36: | ||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
Объект Tone.Signal из библиотеки Tone.js. | Объект Tone.Signal из библиотеки Tone.js. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 52: | Строка 52: | ||
===№1=== | ===№1=== | ||
<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
function setup() { | function setup() { | ||
carrier = new p5.Oscillator('sine'); | carrier = new p5.Oscillator('sine'); | ||
Строка 76: | Строка 76: | ||
===№2=== | ===№2=== | ||
<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 82: | Строка 82: | ||
===№3=== | ===№3=== | ||
<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS | <syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"> | ||
</syntaxhighlight> | </syntaxhighlight> |
Текущая версия от 18:16, 14 мая 2023
Черновик |
Класс 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) );
}