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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

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



p5.EQ [1]

Описание

Этот класс – это звуковой эффект, выполняющий функцию многополосного аудио-эквалайзера. Эквалайзеры используются для настройки баланса между частотными компонентами аудиосигнала. Эта техника часто используется при создании и записи звука, чтобы изменить волну аудиосигнала до того, как он достигнет устройства вывода аудиоданных. Класс p5.EQ можно использовать как звуковой эффект для создания интересных искажений, отфильтровывая определенные части спектра частот.

Класс p5.EQ создан при помощи цепочки интерфейсов BiquadFilterNode из Web Audio API, и его можно создать с 3 или 8 полосами частот. Полосы частот можно удалять и добавлять из объекта p5.EQ, напрямую модифицируя его поле «bands» (это массив, хранящий фильтры).

Класс p5.EQ является расширением класса p5.Effect, поэтому для него также доступны методы amp(), chain(), drywet(), connect() и disconnect().

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

<script language="javascript" type="text/javascript" src="path/to/p5.sound.js"></script>

Синтаксис

new p5.EQ([_eqsize])

Параметры

_eqsize  количество полос. Возможные значения: «3» и «8». Значение по умолчанию  «3». Тип данных  number

Возвращаемое значение

Тип данных  объект p5.EQ.

Поля

  • bands – класс p5.EQ создан при помощи объектов p5.Filter. Чтобы модифицировать какие-либо полосы частот, используйте методы класса p5.Filter – особенно gain() и freq(). Полосы частот хранятся в массиве, и позиции в нем могут быть либо «0-3», либо «0-7».

Методы

  • process() – обрабатывает входной аудиосигнал, подключая его к объекту p5.EQ

Пример

№1

var eq;
var band_names;
var band_index;

var soundFile, play;

function preload() {
  soundFormats('mp3', 'ogg');
  soundFile = loadSound('assets/beat');
}

function setup() {
  eq = new p5.EQ(3);
  soundFile.disconnect();
  eq.process(soundFile);

  band_names = ['lows','mids','highs']; 
            //  'нижние', 'средние', 'высокие' (частоты)
  band_index = 0;
  play = false;
  textAlign(CENTER);
}

function draw() {
  background(30);
  noStroke();
  fill(255);
  text('click to kill',50,25);
   //  'кликните, чтобы игнорировать'

  fill(255, 40, 255);
  textSize(26);
  text(band_names[band_index],50,55);

  fill(255);
  textSize(9);
  text('space = play/pause',50,80);
   //  'пробел = проигрывание/пауза'
}

// если курсор мыши над холстом, кликните, 
// чтобы поменять, какой диапазон частот будет игнорироваться:
function mouseClicked() {
  for (var i = 0; i < eq.bands.length; i++) {
    eq.bands[i].gain(0);
  }
  eq.bands[band_index].gain(-40);
  if (mouseX > 0 && mouseX < width && mouseY < height && mouseY > 0) {
    band_index === 2 ? band_index = 0 : band_index++;
  }
}

// используйте пробел для включения/выключения музыки:
function keyPressed() {
  if (key===' ') {
    play = !play
    play ? soundFile.loop() : soundFile.pause();
  }
}

№2

№3

См.также

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