JavaScript:Библиотеки/p5.sound/Класс p5.Signal

Материал из Онлайн справочника
Версия от 18:16, 14 мая 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Класс 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

См.также

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