Forma d'onda dell'intero brano
Si ricava leggendo una volta sola, all’avvio, tutti i campioni del file, e mostra in un colpo d’occhio i passaggi forti e deboli del brano.
Files
- CARTELLA-SKETCH
- index.html
- sketch.js
- style.css
- like_analogue.mp3
- liszt.mp3
Algoritmo
all'avvio: setup()
caricare il brano e leggerne tutti i campioni
dividere i campioni in tanti tratti quante sono le colonne
per ogni colonna: for()
trovare il campione più forte del suo tratto max()
disegnare una linea verticale, proporzionale al campione
a ogni clic: mousePressed()
avviare il brano, o fermarlo se è in esecuzione
Istruzioni
Restituisce tutti i campioni del primo canale, un array con un valore fra -1 e 1 per ogni campione: per un brano di due minuti, più di cinque milioni. La proprietà node non è documentata, quindi potrebbe cambiare nelle versioni successive della libreria.
Per la colonna x scorre i campioni del suo tratto, da x*passo al successivo escluso, e tiene il più forte. abs() restituisce il valore senza segno, perché un campione di -0.5 è forte quanto un campione di 0.5.
La linea parte dal centro della tela, a 100 pixel dal bordo superiore, e si allunga di h pixel verso l’alto e verso il basso: con un campione di 1, il valore massimo, toccherebbe i due bordi.
Variazioni
Con il secondo audio presente nella cartella dello sketch, un brano elettronico, la forma d’onda è più alta e più uniforme, senza le pause del brano di Liszt:
Note
La versione precedente di p5.sound.js aveva il metodo
getPeaks(), che restituiva gli stessi valori. Nella versione 0.4.1 non c’è più.