JavaScript:Библиотеки/p5.sound/Класс p5.FFT/analyze(): различия между версиями

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


<syntaxhighlight lang="javascript" enclose="div">
<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>
Строка 20: Строка 20:
==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
analyze([bins], [scale])
analyze([bins], [scale])
</syntaxhighlight>
</syntaxhighlight>
Строка 26: Строка 26:
==Параметры==
==Параметры==


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
bins – количество отсчетов (размер возвращаемого массива). Это значение должно быть в диапазоне между «16» и «16384» (по умолчанию – «1024»). Кроме того, оно должно быть степенью двойки. Тип данных – number
bins – количество отсчетов (размер возвращаемого массива). Это значение должно быть в диапазоне между «16» и «16384» (по умолчанию – «1024»). Кроме того, оно должно быть степенью двойки. Тип данных – number
scale – если указать здесь «dB», функция вернет значения в децибелах, и это будут значения с плавающей точкой в диапазоне между «-140» и «0» (макс.). В противном случае функция вернет значения в диапазоне между «0» и «255». Тип данных – number
scale – если указать здесь «dB», функция вернет значения в децибелах, и это будут значения с плавающей точкой в диапазоне между «-140» и «0» (макс.). В противном случае функция вернет значения в диапазоне между «0» и «255». Тип данных – number
Строка 33: Строка 33:
==Возвращаемое значение==
==Возвращаемое значение==


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
Массив со значениями, обозначающими распределение энергии сигнала по шкале частот. Наименьшая энергия – это «0» (тишина), а наибольшая – это «255». Тип данных – массив.
Массив со значениями, обозначающими распределение энергии сигнала по шкале частот. Наименьшая энергия – это «0» (тишина), а наибольшая – это «255». Тип данных – массив.
</syntaxhighlight>
</syntaxhighlight>
Строка 41: Строка 41:
===№1===
===№1===


<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
var osc;
var osc;
var fft;
var fft;
Строка 88: Строка 88:
===№2===
===№2===


<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">


</syntaxhighlight>
</syntaxhighlight>
Строка 94: Строка 94:
===№3===
===№3===


<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="javascript" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">


</syntaxhighlight>
</syntaxhighlight>

Версия от 18:15, 14 мая 2023

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


Черновик


analyze() [1]

Описание

Возвращает массив амплитудных значений (между «0» и «255») относительно шкалы частот. Размер этого массива равен количеству ПБФ-отсчетов (по умолчанию – «1024»), т.е. значению, заданному в параметре bins. Каждая позиция в массиве соответствует определенной частоте (т.е. высоте звука) – от самой высокой до самой низкой, слышимой человеческим ухом – и содержит значение, соответствующее этой частоте. Функцию analyze() нужно вызывать до getEnergy().

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

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

Синтаксис

analyze([bins], [scale])

Параметры

bins  количество отсчетов (размер возвращаемого массива). Это значение должно быть в диапазоне между «16» и «16384» (по умолчанию  «1024»). Кроме того, оно должно быть степенью двойки. Тип данных  number
scale  если указать здесь «dB», функция вернет значения в децибелах, и это будут значения с плавающей точкой в диапазоне между «-140» и «0» (макс.). В противном случае функция вернет значения в диапазоне между «0» и «255». Тип данных  number

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

Массив со значениями, обозначающими распределение энергии сигнала по шкале частот. Наименьшая энергия  это «0» (тишина), а наибольшая  это «255». Тип данных  массив.

Пример

№1

var osc;
var fft;

function setup(){
  createCanvas(100,100);
  osc = new p5.Oscillator();
  osc.amp(0);
  osc.start();
  fft = new p5.FFT();
}

function draw(){
  background(0);

  var freq = map(mouseX, 0, 800, 20, 15000);
  freq = constrain(freq, 1, 20000);
  osc.freq(freq);

  var spectrum = fft.analyze();
  noStroke();
  fill(0,255,0); // зеленым показано распределение частот
  for (var i = 0; i< spectrum.length; i++){
    var x = map(i, 0, spectrum.length, 0, width);
    var h = -height + map(spectrum[i], 0, 255, height, 0);
    rect(x, height, width / spectrum.length, h );
  }

  stroke(255);
  text('Freq: ' + round(freq)+'Hz', 10, 10);

  isMouseOverCanvas();
}

// проигрываем звук, только если курсор находится над холстом:
function isMouseOverCanvas() {
  var mX = mouseX, mY = mouseY;
  if (mX > 0 && mX < width && mY < height && mY > 0) {
    osc.amp(0.5, 0.2);
  } else {
    osc.amp(0, 0.2);
  }
}

№2

№3

См.также

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