JavaScript:Библиотеки/p5.sound/Класс p5.Signal: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
 
Нет описания правки
 
Строка 18: Строка 18:
Чтобы использовать этот класс, нужно подключить библиотеку p5.sound. Для этого в заголовок своего файла «index.html» впишите следующее:
Чтобы использовать этот класс, нужно подключить библиотеку p5.sound. Для этого в заголовок своего файла «index.html» впишите следующее:


<syntaxhighlight lang="javascript" enclose="div">
<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" enclose="div">
<syntaxhighlight lang="javascript">
new p5.Signal()
new p5.Signal()
</syntaxhighlight>
</syntaxhighlight>
Строка 30: Строка 30:
==Параметры==
==Параметры==


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
void
void
</syntaxhighlight>
</syntaxhighlight>
Строка 36: Строка 36:
==Возвращаемое значение==
==Возвращаемое значение==


<syntaxhighlight lang="javascript" enclose="div">
<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" enclose="div">
<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" enclose="div">
<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" enclose="div">
<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) );
}

№2

№3

См.также

Внешние ссылки