04 - Zvuk & FFT

Frekvenčná analýza

Prezentácia

Autor: Marty Müller

1. Úvod do zvuku

Zvuk je fenomén, ktorý vnímame ako vibrácie vzduchu alebo iných médií. V digitálnej podobe však môžeme zvuk uložiť ako množinu vzoriek (samples), čo nám umožňuje s ním programovo pracovať. Základnými vlastnosťami zvuku sú frekvencia (koľkokrát sa vlna opakuje za sekundu) a amplitúda (intenzita zvuku). Tieto vlastnosti môžeme digitálne manipulovať a analyzovať.

V tejto lekcii sa naučíme, ako pracovať so zvukom v p5.js prostredníctvom knižnice p5.sound. Táto knižnica nám umožní načítať zvukové súbory, prehrávať ich, meniť ich vlastnosti a vytvárať zvukové efekty. Zároveň si ukážeme, ako môžeme tieto zvuky vizualizovať a prepojiť ich s interaktívnymi prvkami.

p5.sound.js

Knižnica p5.sound nám poskytuje jednoduché nástroje na manipuláciu so zvukom v našich projektoch. Prvý krok je naučiť sa, ako načítať a prehrávať zvukové súbory. Na to použijeme funkciu loadSound(), ktorú zavoláme v metóde preload(), aby sme sa uistili, že zvuk bude pripravený predtým, než spustíme náš program.

preload() sa volá ešte pred samotným setup(). A obvykle vždy, keď sa stretneš s metódou, ktorá začína s load.... tak ju treba umiestniť do metódy preload.

repozitár knižnice
A collection of p5.sound sketches that demonstrate the library.

Load sound

Nahraj audiosúbor
let sound;

function preload() {
  sound = loadSound('doorbell.mp3');
}

function setup() {
// @todo
}

function draw() {
// @todo
}

loadSound() reference

Kam umiestniť sound.play()?

Soundfile:

Amplitude Get Level

amplitude.getLevel();

FFT

FFT (Fast Fourier Transform) je matematický nástroj, ktorý dokáže rozložiť zložitý signál, napríklad zvuk, na jednotlivé frekvencie, ktoré ho tvoria. V kontexte analýzy a vizualizácie zvuku pre študentov výtvarného a digitálneho umenia môže FFT slúžiť na pochopenie toho, ako zvuk pozostáva z rôznych tónov a harmonických prvkov.

Ako to funguje:

  1. Zvuk ako vlna: Každý zvuk, ktorý počujeme, je tvorený vlnami. Tieto vlny majú rôznu frekvenciu (koľkokrát za sekundu sa vlna opakuje) a amplitúdu (silnú alebo slabú intenzitu).

  2. Rozklad zvuku: FFT rozkladá túto komplexnú vlnu na základné frekvencie. Predstav si to, ako keby si sa pozeral na jeden akord zahraný na klavíri. FFT ti povie, aké jednotlivé tóny v tomto akorde sú, a koľko z každej frekvencie obsahuje.

  3. Vizualizácia: Výsledky FFT môžeme zobraziť ako spektrogram, čo je graf, kde os X predstavuje čas, os Y frekvencie, a farba alebo intenzita ukazuje, aké silné sú jednotlivé frekvencie v danom momente.

FFT sa v MP3 kompresii používa na rozklad zvukového signálu do frekvenčného spektra. Tento proces umožňuje analyzovať, ktoré frekvencie sú pre ľudské ucho dôležité a ktoré môžu byť odstránené vďaka psychoakustickému modelu. Nepočuteľné alebo maskované frekvencie sú eliminované, čím sa zmenší veľkosť zvukového súboru. FFT tak hrá kľúčovú úlohu pri znížení dátového objemu, pričom zachováva prijateľnú kvalitu zvuku.

let fft;
function setup() {
  fft = new p5.FFT();
}
function draw() {
  let spectrum = fft.analyze();
  noFill();
  beginShape();
  for (let i = 0; i < spectrum.length; i++) {
    vertex(i, map(spectrum[i], 0, 255, height, 0));
  }
  endShape();
}

Materiály

Step by step

Last updated