P5js > La visualisation du son

1.  Source principale

2.  Tutoriels vidéos

3.  Historique de l'Audio Internet

4.  Des exemples historiques

5.  Ce qui peut être visualisé avec p5.js

6.  Exemples avec p5.js

6.1  Fonctions d'analyse d'un fichier

Variables globales :

var fichier;

var amplitude;

var fft;

À ajouter dans preload() { } :

fichier = loadSound("Dead_Combo_-_01_-_Povo_Que_Cas_Descalo.mp3");

À ajouter dans setup() { } :

amplitude = new p5.Amplitude();
amplitude.smooth(0.5); // Assouplissement de l'analyse
amplitude.setInput(fichier); // Analyser le fichier

var fftSmoothing = 0.6;
var fftBins = 1024;
fft = new p5.FFT(fftSmoothing , fftBins );
fft.setInput(fichier);

fichier.loop();

À ajouter dans draw(){ } :

var level = amplitude.getLevel();

var spectrum = fft.analyze();
var bands = fft.logAverages(fft.getOctaveBands());

6.2  Détection de pics

À ajouter dans les variables globales:

var seuilOn = 500;
var seuilOff = 300;
var seuilActif = false;

À ajouter dans draw(){ } :

// DETECTER L'ACTIVITE DU SEUIL ET LES PICS
if ( donnee >  seuilOn && seuilActif == false ) {
        // UN PIC EST DETECTE
        seuilActif = true;
        // ... ajouter votre propre code ici qui est declenche
        // par la detection d'un pic

} else if ( donnee < seuilOff ) {
        seuilActif = false;
}

6.3  Sauter dans un fichier avec les touches du clavier

À ajouter dans keyTyped(){ } :

if ( key == '1' ) {
        fichier.jump ( 0 );
} else if ( key == '2' ) {
        fichier.jump ( fichier.duration() * .1 );
} else if ( key == '3' ) {
        fichier.jump ( fichier.duration() * .2 );
} else if ( key == '4' ) {
        fichier.jump ( fichier.duration() * .3 );
} else if ( key == '5' ) {
        fichier.jump ( fichier.duration() * .4 );
} else if ( key == '6' ) {
        fichier.jump ( fichier.duration() * .5 );
} else if ( key == '7' ) {
        fichier.jump ( fichier.duration() * .6 );
} else if ( key == '8' ) {
        fichier.jump ( fichier.duration() * .7 );
} else if ( key == '9' ) {
        fichier.jump ( fichier.duration() * .8 );
} else if ( key == '0' ) {
        fichier.jump ( fichier.duration() * .9 );
}

6.4  Fonction logMap()

function logMap(val, inMin, inMax, outMin, outMax) {
        var offset = 0;
        if (inMax === 0 || inMin === 0) {
                offset = 1;
                inMin += offset;
                inMax += offset;
        }
        var a = (outMin - outMax) / Math.log10(inMin / inMax);
        var b = outMin - a * Math.log10(inMin);
        return a * Math.log10(val + offset) + b;
}

7.  Exercice

7.1  Visualiser l'amplitude sonore en tant qu'aiguille de VU