JavaScript:Библиотеки/p5.sound/Класс p5.FFT/getCentroid()

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Pixel Art Mini Meow Animated.gif Черновик


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

 1 function setup(){
 2 cnv = createCanvas(800,400);
 3 sound = new p5.AudioIn();
 4 sound.start();
 5 fft = new p5.FFT();
 6 sound.connect(fft);
 7 }
 8 
 9 
10 function draw(){
11 
12 var centroidplot = 0.0;
13 var spectralCentroid = 0;
14 
15 
16 background(0);
17 stroke(0,255,0);
18 var spectrum = fft.analyze();
19 fill(0,255,0); // частоты будут зеленого цвета
20 
21 // рисуем частоты:
22 
23 for (var i = 0; i< spectrum.length; i++){
24   var x = map(log(i), 0, log(spectrum.length), 0, width);
25   var h = map(spectrum[i], 0, 255, 0, height);
26   var rectangle_width = (log(i+1)-log(i))*(width/log(spectrum.length));
27   rect(x, height, rectangle_width, -h )
28 }
29 
30 var nyquist = 22050;
31 
32 // вычисляем центроид:
33 spectralCentroid = fft.getCentroid();
34 
35 // переменная «mean_freq_index» используется для отрисовки на экране:
36 var mean_freq_index = spectralCentroid/(nyquist/spectrum.length);
37 
38 centroidplot = map(log(mean_freq_index), 0, log(spectrum.length), 0, width);
39 
40 
41 stroke(255,0,0); // линия, показывающая расположение центроида,
42                  // будет красного цвета
43 
44 rect(centroidplot, 0, width / spectrum.length, height)
45 noStroke();
46 fill(255,255,255);  // текст – белого цвета
47 textSize(40);
48 text("centroid: "+round(spectralCentroid)+" Hz", 10, 40);
49 }

№2

№3

См.также

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