JavaScript:Библиотеки/p5.sound/Класс p5.FFT/getCentroid()
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
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);
}