Bonsoir à tous, j'ai déjà vu pas mal de sujets sur différents forums à propos de ça, mais honnêtement impossible de m'en sortir.
J'aimerais récuperer la fréquence d'un musique que je récupere via l'API de deezer pour l'adapter dans des jeux (il s'agit d'un projet de fin d'année).
Mais je suis coincé au début : Obtenir la fréquence. Je précise que je débute complètement dans cette utilisation de l'API et que je n'ai eu aucun cours dessus, donc il est possible que certaines choses soient aberrantes.

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
 
<script type="text/javascript"></script>
<script type="text/javascript" src="./JS/jquery.js"></script>
 
</head>
 
<body>
 
    <audio controls autoplay id="player" crossorigin="anonymous">
        <source src="<?php  echo ($resultat[" data "][0]["preview "]); ?>" type="audio/mpeg">
    </audio>
    <div>
        <input id="slider" type="range" min="100" max="22000" value="100" />
        <div id="freq-display">100</div>
    </div>
 
</body>
 
</html>
Voici donc l'html associé, le lecteur recoit la requête PHP, aucun soucis dans la diffusion.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var ctx = new (window.AudioContext || window.webkitAudioContext)();   
var audioEl = document.getElementById("player");
var elSource = ctx.createMediaElementSource(audioEl); 
elSource.connect(ctx.destination);
var analyser = ctx.createAnalyser();
 
var array =  new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(array);
 
window.setTimeout("printHz()",1000);
 
function printHz(evt){
	console.log(analyser)
	console.log(array);
	window.setTimeout("printHz()",1000);
}
Donc là techniquement j'en suis ici (j'ai essayé d'autres choses mais rien n'y fait).
le console.log(elSource) m'affiche bien les caractéristiques du lecteur, si je console.log(analyser) de même, j'obtiens des informations. Seulement voilà, cela ne me permet pas de déterminer la fréquence
je vois qu'il faut utiliser quelque chose du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
var array =  new Uint8Array(analyser.frequencyBinCount);
        analyser.getByteFrequencyData(array);
mais j'obtiens un tableau de 1024 cases 0 au lieu d'une alternance 0/1.


Donc voilà, je ne sais pas si c'est très clair (ça ne l'est pas beaucoup pour moi) mais merci d'avance si quelqu'un qui maîtrise veut bien se pencher dessus !