JavaScript:Библиотеки/p5.sound/Класс p5.EQ: различия между версиями
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.EQ([_eqsize]) | new p5.EQ([_eqsize]) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 30: | Строка 30: | ||
==Параметры== | ==Параметры== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
_eqsize – количество полос. Возможные значения: «3» и «8». Значение по умолчанию – «3». Тип данных – number | _eqsize – количество полос. Возможные значения: «3» и «8». Значение по умолчанию – «3». Тип данных – number | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Строка 36: | Строка 36: | ||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
Тип данных – объект p5.EQ. | Тип данных – объект p5.EQ. | ||
</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"> | ||
var eq; | var eq; | ||
var band_names; | var band_names; | ||
| Строка 116: | Строка 116: | ||
===№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> | ||
| Строка 122: | Строка 122: | ||
===№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> | ||
Версия от 20:04, 23 мая 2023
| Черновик |
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();
}
}