JavaScript:Библиотеки/p5.sound/Класс p5.FFT/getCentroid(): различия между версиями
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Myagkij (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 16: | Строка 16: | ||
Чтобы использовать эту функцию, нужно подключить библиотеку 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> | ||
Строка 22: | Строка 22: | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
getCentroid() | getCentroid() | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 28: | Строка 28: | ||
==Параметры== | ==Параметры== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
void | void | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 34: | Строка 34: | ||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
Частоту спектрального центроида (в Гц). Тип данных – number. | Частоту спектрального центроида (в Гц). Тип данных – number. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 42: | Строка 42: | ||
===№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(){ | ||
cnv = createCanvas(800,400); | cnv = createCanvas(800,400); | ||
Строка 96: | Строка 96: | ||
===№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> | ||
Строка 102: | Строка 102: | ||
===№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:15, 14 мая 2023
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Черновик |
getCentroid() [1]
Описание
Возвращает спектральный центроид входного сигнала.
Примечание: до getCentroid() нужно вызвать функцию analyze(). Она говорит объекту p5.FFT проанализировать частотные данные, а getCentroid() использует результаты, чтобы определить спектральный центроид.
Чтобы использовать эту функцию, нужно подключить библиотеку p5.sound. Для этого в заголовок своего файла «index.html» впишите следующее:
<script language="javascript" type="text/javascript" src="path/to/p5.sound.js"></script>
Синтаксис
getCentroid()
Параметры
void
Возвращаемое значение
Частоту спектрального центроида (в Гц). Тип данных – number.
Пример
№1
function setup(){
cnv = createCanvas(800,400);
sound = new p5.AudioIn();
sound.start();
fft = new p5.FFT();
sound.connect(fft);
}
function draw(){
var centroidplot = 0.0;
var spectralCentroid = 0;
background(0);
stroke(0,255,0);
var spectrum = fft.analyze();
fill(0,255,0); // частоты будут зеленого цвета
// рисуем частоты:
for (var i = 0; i< spectrum.length; i++){
var x = map(log(i), 0, log(spectrum.length), 0, width);
var h = map(spectrum[i], 0, 255, 0, height);
var rectangle_width = (log(i+1)-log(i))*(width/log(spectrum.length));
rect(x, height, rectangle_width, -h )
}
var nyquist = 22050;
// вычисляем центроид:
spectralCentroid = fft.getCentroid();
// переменная «mean_freq_index» используется для отрисовки на экране:
var mean_freq_index = spectralCentroid/(nyquist/spectrum.length);
centroidplot = map(log(mean_freq_index), 0, log(spectrum.length), 0, width);
stroke(255,0,0); // линия, показывающая расположение центроида,
// будет красного цвета
rect(centroidplot, 0, width / spectrum.length, height)
noStroke();
fill(255,255,255); // текст – белого цвета
textSize(40);
text("centroid: "+round(spectralCentroid)+" Hz", 10, 40);
}