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.
Voici donc l'html associé, le lecteur recoit la requête PHP, aucun soucis dans la diffusion.
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>
Donc là techniquement j'en suis ici (j'ai essayé d'autres choses mais rien n'y fait).
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); }
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 typemais j'obtiens un tableau de 1024 cases 0 au lieu d'une alternance 0/1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 var array = new Uint8Array(analyser.frequencyBinCount); analyser.getByteFrequencyData(array);
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 !
Partager