Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2020-01-08T13:45:46+01:00Les derniers messages parus sur le forum de Zeste de Savoir.Lancement d'un MOOC sur la spectroscopie !, message #2133872020-01-08T13:45:46+01:00Blackline/@Blacklinehttps://zestedesavoir.com/forums/sujet/13458/lancement-dun-mooc-sur-la-spectroscopie/?page=1#p213387<p>ça reste très sympa, j’aurais bien aimé commencer maintenant. Preuve qu’il y aura de l’interet pour ça j’en suis sur.</p>
<p>Félicitation pour la mise en <strong>UNE</strong> sur la page d’accueil. J’aimerais savoir si ces cours ne sont évalués que sous forme de QCM ? Et auquel cas, en tant qu’ingénieure pédagogique, pour une formation visant le niveau master, quel recul préconiseriez-vous sur de tels évaluations et leurs résultats ?</p>Lancement d'un MOOC sur la spectroscopie !, message #2133862020-01-08T13:35:15+01:00eloisehure/@eloisehurehttps://zestedesavoir.com/forums/sujet/13458/lancement-dun-mooc-sur-la-spectroscopie/?page=1#p213386<p>Oui c’est vrai mais par rapport à la plateforme d’hébergement on est obligé d’ouvrir les inscriptions minimum 3 mois avant le début du cours <img src="/static/smileys/smile.png" alt=":)" class="smiley"> </p>Lancement d'un MOOC sur la spectroscopie !, message #2133852020-01-08T13:13:30+01:00Blackline/@Blacklinehttps://zestedesavoir.com/forums/sujet/13458/lancement-dun-mooc-sur-la-spectroscopie/?page=1#p213385<p>Le cours ne commence qu’en avril <img src="/static/smileys/hihi.png" alt="^^" class="smiley"> </p>Lancement d'un MOOC sur la spectroscopie !, message #2133812020-01-08T11:02:56+01:00eloisehure/@eloisehurehttps://zestedesavoir.com/forums/sujet/13458/lancement-dun-mooc-sur-la-spectroscopie/?page=1#p213381<p>Bonjour à tous,</p>
<p>L’université d’Orléans en collaboration avec la délégation CNRS Centre Limousin Poitou-Charentes, lance un MOOC (Massive Open Online Courses) intitulé "Spectroscopie : fondamentaux et applications" sur la plateforme FUN MOOC. </p>
<p>Les inscriptions sont ouvertes depuis le lundi 06/01/2020 sur cette <a href="https://www.fun-mooc.fr/courses/course-v1:univ-orleans+178001+session01/about">page</a>.</p>
<p>Sur la page des inscriptions vous aurez accès à toutes les informations concernant le Mooc ! N’hésitez pas à partager autour de vous !</p>
<p>Merci ! <img src="/static/smileys/smile.png" alt=":)" class="smiley"> </p>Reconnaissance de note de musique (guitare), message #1977732019-01-20T22:58:12+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p197773<p>Ah. C’est peut-être pour ça que j’avais du mal à distinguer certaine note. :/</p>
<p>Je vais essayer de faire ça en JavaScript ou Python sans Unity3D (je doute que j’ai mes PC de voyage soit suffisamment performant), je vais chercher une lib python.</p>
<p>Mon plus gros problème c’est que je n’ai pas vraiment de base théorique sur le son pour identifier et mesurer ces courbes.</p>Reconnaissance de note de musique (guitare), message #1977712019-01-20T22:38:52+01:00QuentinC/@QuentinChttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p197771<blockquote>
<p>Au final j’ai jamais réussi à faire mon application qui détecte les notes. </p>
</blockquote>
<p>Ca pourrait être intéressant de savoir où tu es resté bloqué.</p>
<p>A priori ça ne me parait pas être parti si faux pourtant.
Il y a juste un truc qui me turlupine un petit peu, tu dis relever le pic toutes les 20–30ms; donc j’en déduis que le FFT que tu utilise a une fenêtre de 1024 (je suppose un son échantillonné à 44100Hz).
Ca veut dire que tu es précis à 22050/1024=21.5Hz près et ensuite tu fais de l’interpolation linéaire ? Ca me parait assez faible en fait… 21.5Hz c’est ce qui sépare à peu près le la 440 du la#.
Donc pour détecter des notes à 110Hz ça me semble carrément insuffisant.
Passer à une fenêtre de taille 2048 ou 4096 changerait peut-être des choses.</p>Reconnaissance de note de musique (guitare), message #1976842019-01-19T16:36:42+01:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p197684<p>Au final j’ai jamais réussi à faire mon application qui détecte les notes. <img src="/static/smileys/rire.gif" alt=":lol:" class="smiley"> Je voulais faire ma petite alternative gratuite à Yousician.</p>Reconnaissance de note de musique (guitare), message #1123522016-05-29T12:47:11+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p112352<p>Le passage qui explique les screens à disparu, j'ai du l'écraser lors de la rédaction de ma réponse.</p>
<p>Les notes sont représentées en rose, le graphique représente la fréquence atteinte. La ligne rouge plus basse c'est la fréquence 110 Hz et sur le deuxième screen la deuxième ligne c'est la fréquence 392 Hz.</p>
<p>Pour faire ce graph, j'ajoute à chaque itération (toutes les 20-30 ms) la valeur de la fréquence dans un tableau.</p>
<div class="spoiler">
<p><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="k">using</span> <span class="nn">UnityEngine</span><span class="p">;</span>
<span class="k">using</span> <span class="nn">System.Collections</span><span class="p">;</span>
<span class="k">public</span> <span class="k">class</span> <span class="nc">GraphSpectrum</span> <span class="p">:</span> <span class="n">MonoBehaviour</span> <span class="p">{</span>
<span class="n">AudioSource</span> <span class="n">audio</span><span class="p">;</span>
<span class="k">public</span> <span class="kt">float</span> <span class="n">frequency</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span>
<span class="kt">float</span><span class="p">[]</span> <span class="n">spectrum</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="m">256</span><span class="p">];</span>
<span class="n">ArrayList</span> <span class="n">graph</span> <span class="p">=</span> <span class="k">new</span> <span class="n">ArrayList</span><span class="p">();</span>
<span class="k">void</span> <span class="nf">Start</span><span class="p">()</span> <span class="p">{</span>
<span class="n">audio</span> <span class="p">=</span> <span class="n">GetComponent</span><span class="p"><</span><span class="n">AudioSource</span><span class="p">>();</span>
<span class="p">}</span>
<span class="k">void</span> <span class="nf">Update</span><span class="p">()</span> <span class="p">{</span>
<span class="n">audio</span><span class="p">.</span><span class="n">GetSpectrumData</span><span class="p">(</span><span class="n">spectrum</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="n">FFTWindow</span><span class="p">.</span><span class="n">BlackmanHarris</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="p">=</span> <span class="m">1</span><span class="p">;</span> <span class="n">i</span> <span class="p"><</span> <span class="n">spectrum</span><span class="p">.</span><span class="n">Length</span> <span class="p">-</span> <span class="m">1</span><span class="p">;</span> <span class="n">i</span><span class="p">++)</span> <span class="p">{</span>
<span class="n">Debug</span><span class="p">.</span><span class="n">DrawLine</span><span class="p">(</span><span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">,</span> <span class="n">Mathf</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="n">spectrum</span><span class="p">[</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">])</span> <span class="p">+</span> <span class="m">200</span><span class="p">,</span> <span class="m">2</span><span class="p">),</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">Mathf</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="n">spectrum</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="p">+</span> <span class="m">200</span><span class="p">,</span> <span class="m">2</span><span class="p">),</span> <span class="n">Color</span><span class="p">.</span><span class="n">cyan</span><span class="p">);</span>
<span class="n">Debug</span><span class="p">.</span><span class="n">DrawLine</span><span class="p">(</span><span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">Mathf</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">),</span> <span class="n">spectrum</span><span class="p">[</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">]</span> <span class="p">+</span> <span class="m">180</span><span class="p">,</span> <span class="m">1</span><span class="p">),</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">Mathf</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">spectrum</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">+</span> <span class="m">180</span><span class="p">,</span> <span class="m">1</span><span class="p">),</span> <span class="n">Color</span><span class="p">.</span><span class="n">green</span><span class="p">);</span>
<span class="n">Debug</span><span class="p">.</span><span class="n">DrawLine</span><span class="p">(</span><span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">Mathf</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">)</span> <span class="p">*</span> <span class="m">10</span><span class="p">,</span> <span class="n">Mathf</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="n">spectrum</span><span class="p">[</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">])</span> <span class="p">*</span> <span class="m">10</span> <span class="p">+</span> <span class="m">300</span><span class="p">,</span> <span class="m">3</span><span class="p">),</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">Mathf</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="p">*</span> <span class="m">10</span><span class="p">,</span> <span class="n">Mathf</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="n">spectrum</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="p">*</span> <span class="m">10</span> <span class="p">+</span> <span class="m">300</span><span class="p">,</span> <span class="m">3</span><span class="p">),</span> <span class="n">Color</span><span class="p">.</span><span class="n">yellow</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">graph</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="n">AudioMeasureCS</span><span class="p">.</span><span class="n">sPitchValue</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="n">graph</span><span class="p">.</span><span class="n">Count</span> <span class="p">>=</span> <span class="m">400</span><span class="p">)</span>
<span class="n">graph</span><span class="p">.</span><span class="n">RemoveAt</span><span class="p">(</span><span class="m">0</span><span class="p">);</span>
<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="p">=</span> <span class="m">1</span><span class="p">,</span> <span class="n">d</span> <span class="p">=</span> <span class="m">10</span><span class="p">;</span> <span class="n">i</span> <span class="p"><</span> <span class="n">graph</span><span class="p">.</span><span class="n">Count</span> <span class="p">-</span> <span class="m">1</span><span class="p">;</span> <span class="n">i</span><span class="p">++)</span> <span class="p">{</span>
<span class="n">Debug</span><span class="p">.</span><span class="n">DrawLine</span><span class="p">(</span><span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">graph</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">/</span> <span class="m">40</span> <span class="p">+</span> <span class="m">200</span><span class="p">,</span> <span class="m">1</span><span class="p">),</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="p">-(</span><span class="kt">float</span><span class="p">)</span><span class="n">graph</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">/</span> <span class="m">30</span> <span class="p">+</span> <span class="m">200</span><span class="p">),</span> <span class="n">Color</span><span class="p">.</span><span class="n">grey</span><span class="p">);</span>
<span class="n">Debug</span><span class="p">.</span><span class="n">DrawLine</span><span class="p">(</span><span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">,</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">graph</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">/</span> <span class="n">d</span> <span class="p">+</span> <span class="m">200</span><span class="p">,</span> <span class="m">0</span><span class="p">),</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">graph</span><span class="p">[</span><span class="n">i</span> <span class="p">+</span> <span class="m">1</span><span class="p">]</span> <span class="p">/</span> <span class="n">d</span> <span class="p">+</span> <span class="m">200</span><span class="p">,</span> <span class="m">0</span><span class="p">),</span> <span class="n">Color</span><span class="p">.</span><span class="n">magenta</span><span class="p">);</span>
<span class="n">Debug</span><span class="p">.</span><span class="n">DrawLine</span><span class="p">(</span><span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">,</span> <span class="m">200</span> <span class="p">+</span> <span class="m">110</span> <span class="p">/</span> <span class="n">d</span><span class="p">,</span> <span class="m">0</span><span class="p">),</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">graph</span><span class="p">.</span><span class="n">Count</span><span class="p">,</span> <span class="m">200</span> <span class="p">+</span> <span class="m">110</span> <span class="p">/</span> <span class="n">d</span><span class="p">,</span> <span class="m">0</span><span class="p">),</span> <span class="n">Color</span><span class="p">.</span><span class="n">red</span><span class="p">);</span>
<span class="n">Debug</span><span class="p">.</span><span class="n">DrawLine</span><span class="p">(</span><span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">i</span> <span class="p">-</span> <span class="m">1</span><span class="p">,</span> <span class="m">200</span> <span class="p">+</span> <span class="m">392</span> <span class="p">/</span> <span class="n">d</span><span class="p">,</span> <span class="m">0</span><span class="p">),</span> <span class="k">new</span> <span class="n">Vector3</span><span class="p">(</span><span class="n">graph</span><span class="p">.</span><span class="n">Count</span><span class="p">,</span> <span class="m">200</span> <span class="p">+</span> <span class="m">392</span> <span class="p">/</span> <span class="n">d</span><span class="p">,</span> <span class="m">0</span><span class="p">),</span> <span class="n">Color</span><span class="p">.</span><span class="n">red</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</td></tr></table>
</p>
</div>Reconnaissance de note de musique (guitare), message #1114592016-05-23T15:16:32+02:00lanfeust313/@lanfeust313https://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p111459<p>Ton <a href="http://www.phy.mtu.edu/%7Esuits/notefreqs.html">tableau de fréquences</a> te donne déjà les fréquences fondamentales (la plus basse harmonique = harmonique de premier rang != fréquence la plus basse)</p>
<p>Je sais pas ce qu'on est supposé voir sur les captures d'écran, mais je ne vois aucun signal qui ressemble de près ou de loin à une note de guitare.</p>
<blockquote>
<p>Je vais devoir faire ma propre emprunte des sons et intégrer la longueur d'onde pour détecter correctement les notes, sur une écoute continue du micro.</p>
</blockquote>
<p>J'ai pas compris.</p>Reconnaissance de note de musique (guitare), message #1112532016-05-21T22:19:00+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p111253<p>Je ne suis pas très satisfait d'Audacy, mais je pense que ça vient de moi.</p>
<p><strong>@Aabu:</strong> Au départ je pensais que c'était une coïncidence mais pour A<sub>2</sub>, j'ai bien un pique qui retombe à 110Hz.</p>
<p><strong>Pour A<sub>2</sub> :</strong></p>
<div class="spoiler">
<p><img alt="" src="http://i.imgur.com/PZ6sG6g.png"></p>
</div>
<p><strong>Pour G<sub>4</sub> :</strong></p>
<div class="spoiler">
<p><img alt="" src="http://i.imgur.com/HV2o3zr.png"></p>
</div>
<hr>
<p><strong>Après</strong> quelques recherches supplémentaire, j'ai trouvé la définition de "Fréquence fondamentale", ce qui me permet de comprendre le pique qui retombe à 110Hz…</p>
<blockquote>
<p>Fréquence fondamentale : fréquence <strong>la plus basse fournie</strong> par un système vibrant.</p>
<p><strong>Source : </strong> <a href="http://www.utc.fr/%7Emecagom4/MECAWEB/EXEMPLE/EX13/WEB/piano.htm#fonda">http://www.utc.fr/~mecagom4/MECAWEB/EXEMPLE/EX13/WEB/piano.htm#fonda</a></p>
</blockquote>
<p>Je vais donc chercher à obtenir la fréquence la plus basse, cependant, je pense que ça ne va pas me suffire. Je vais devoir faire ma propre emprunte des sons et intégrer la longueur d'onde pour détecter correctement les notes, sur une écoute continue du micro.</p>Reconnaissance de note de musique (guitare), message #1111632016-05-20T19:48:12+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p111163<p>Merci je vais regarder tout ça et je vous tiens au courant. <img alt=":)" src="/static/smileys/smile.png"></p>Reconnaissance de note de musique (guitare), message #1111162016-05-20T14:21:21+02:00lanfeust313/@lanfeust313https://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p111116<p>Pour analyser ton signal sans passer par Unity ou autre, tu peux utiliser Audacity (libre & gratuit). Tu y trouveras tous les outils et d'analyse dont tu as besoin pour comprendre les tenants et aboutissants des représentations spectrales du son.</p>
<p>Plusieurs features vont t'aider:</p>
<ul>
<li>
<p>Quand tu as ouvert une piste dans le coin haut gauche, il y a un menu déroulant. Les options <strong>Spectrogram</strong> et <strong>Spectrogram(logf)</strong> te permettent d'afficher le spectrogramme en échelle linéaire et logarithmique respectivement. Les options se trouvent dans <em>Edit > Preferences > Spectrograms</em></p>
</li>
<li>
<p>En sélectionnant à l'aide du <em>Selection Tool</em>, et grâce à <em>Analyse > Plot Spectrum</em>, tu vas pouvoir afficher le spectre (ou <a href="http://cnx.org/contents/i5AAkZCP%402/Pitch-Detection-Algorithms">l'autocorrélation</a>, ou le cepstre) en jouant sur plusieurs paramètres (Algorithme, Fenêtre d'analyse, taille de la fênetre d'analyse, type d'axes. Si tu pointes avec ta souris sur le spectre, tu te rendras que ce curseur donnes des infos sur son positionnement (fréquence ou temps en abscisse <strong>avec la correspondance avec la note de musique rattaché</strong>, "puissance" en ordonnée) et utilise même un algorithme de recherche de <em>peak</em> pour donner la position du plus proche pic.</p>
</li>
</ul>
<p>Amuses toi avec ça et tes propres fichiers et tu auras une meilleur appréhension de tout ça !</p>Reconnaissance de note de musique (guitare), message #1108742016-05-19T09:30:53+02:00Aabu/@Aabuhttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p110874<p>Si la guitare est mal accordée, tu ne peux pas retrouver la correspondance facilement.</p>
<p>Ensuite, le pic du spectre n'est pas forcément la fréquence fondamentale, comme je le mentionnais un peu avant : ça peut être une harmonique. Par exemple, si tu fais un « la » à 440 Hz, tu auras aussi les harmoniques (880 Hz, 1320 Hz, etc.). Si une harmonique est plus forte, tu peux te retrouver avec un maximum à 880 Hz par exemple, qui n'est PAS la fréquence fondamentale. La fondamentale sera donnée par l'écart entre les principaux pic. Par exemple ici il y aurait peut-être trois pics à 440 Hz, 880 Hz et 1320 Hz et la note correspond à l'écart entre deux pics (1320 - 880 = 440 Hz).</p>
<p>Ça t'avance ? Est-ce qu tu as les moyens de visualiser le spectre ou le signal pour voir à quoi ressemble vraiment ton signal ?</p>Reconnaissance de note de musique (guitare), message #1108712016-05-19T09:12:58+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p110871<p>Ce qui me dérange c'est de ne pas retrouver l'équivalence fréquence <=> note de mon tableau.</p>
<p>Je pense que je vais comparer avec mes propres valeurs.</p>Reconnaissance de note de musique (guitare), message #1107212016-05-18T10:41:17+02:00Aabu/@Aabuhttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p110721<p>Le script que tu montres calcules le spectre du signal, c'est-à-dire la répartition de sa puissance en fonction de la fréquence. Il va ensuite chercher le maximum sur le spectre, autrement dit la fréquence la plus forte et il considère qu'il s'agit de la fréquence fondamentale du signal (ce qui est en général vrai, mais pas dans certains cas particuliers). Il effectue quelques manipulations supplémentaires entre deux, mais d'importance secondaire. </p>
<p>Avec ce script, tu obtiens donc la fréquence la plus significative dans le signal. </p>
<p>Pour savoir si une note est jouée correctement (tu veux faire un accordeur ?), tu peux comparer la note attendue. Si c'est trop loin (trop grave ou trop aigu), tu peux l'indiquer, etc.</p>
<p>En fait, je comprend pas ton problème, parce que tu as exactement ce qu'il te faut : le script. </p>Reconnaissance de note de musique (guitare), message #1107162016-05-18T10:09:01+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p110716<p>Si quelqu'un, qui s'y connaît pouvait m'expliquer en se mettant à mon niveau (ou en tout cas, en expliquant les termes techniques), je suis preneur.</p>
<p>Je cherche surtout à comprendre comment ça se déroule.</p>Reconnaissance de note de musique (guitare), message #1099342016-05-13T19:27:04+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p109934<p>J'essaye de lire tout ça et essayer de comprendre le concept. Mais ne connaissant par les termes techniques, il me faut un certain temps d'analyse.</p>
<p>@Christopher: Je ne sais pas comment m'y prendre pour avoir le résultat, à part plusieurs essais différents, pour l'instant je fais beaucoup de chose pour rien faire.</p>Reconnaissance de note de musique (guitare), message #1097502016-05-12T20:32:32+02:00Hip/@Hiphttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p109750<p>Hmm, ton analyse ne se découperais pas en spectre plutôt ?
Plusieurs spectres pour les graves, les moyen et les aigus ?</p>Reconnaissance de note de musique (guitare), message #1096232016-05-12T01:28:36+02:00lanfeust313/@lanfeust313https://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p109623<p><a href="https://en.wikipedia.org/wiki/Pitch_detection_algorithm">https://en.wikipedia.org/wiki/Pitch_detection_algorithm</a></p>
<p><a href="http://www2.cs.uregina.ca/%7Egerhard/publications/TRdbg-Pitch.pdf">http://www2.cs.uregina.ca/~gerhard/publications/TRdbg-Pitch.pdf</a></p>
<p><a href="http://theojal.com/wp-content/uploads/2015/11/1-11.pdf">http://theojal.com/wp-content/uploads/2015/11/1-11.pdf</a></p>
<p><a href="https://scholar.google.fr/scholar?q=pitch%2Bextraction%2Bmusic&hl=fr">https://scholar.google.fr/scholar?q=pitch+extraction+music&hl=fr</a></p>Reconnaissance de note de musique (guitare), message #1095952016-05-11T21:05:56+02:00anonyme/@anonymehttps://zestedesavoir.com/forums/sujet/6041/reconnaissance-de-note-de-musique-guitare/?page=1#p109595<p>Bonjour,</p>
<p>Je suis entrain de programmer une petite application <strong>pour reconnaitre ou vérifier qu'une note de guitare soit jouer correctement</strong>. Pour streamer l'audio, je n'ai aucun soucis tout se passe bien avec <a href="https://github.com/A-312/AudioAnalyzer">AudioAnalyzer</a>. J'ai aucun soucis quand j'essaye un son avec une fréquence fixe, mais lorsque j'essaye avec une des notes suivantes, je ne sais pas comment faire.</p>
<p>Voici des MP3 pré-enregistrés :</p>
<div class="table-wrapper">
<table>
<thead>
<tr>
<th>Corde</th>
<th>Vide</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
</tr>
</thead>
<tbody>
<tr>
<td>1<sup>ère</sup></td>
<td><a href="http://picosong.com/BFAc/">vide E<sub>4</sub></a></td>
<td><a href="http://picosong.com/BFAL/">1 F<sub>4</sub></a></td>
<td><a href="http://picosong.com/BFAX/">2 F<sup>#</sup><sub>4</sub></a></td>
<td><a href="http://picosong.com/BFAJ/">3 G<sub>4</sub></a></td>
<td></td>
</tr>
<tr>
<td>2<sup>ème</sup></td>
<td><a href="http://picosong.com/BF8u/">vide B<sub>3</sub></a></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>3<sup>ème</sup></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>4<sup>ème</sup></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>5<sup>ème</sup></td>
<td><a href="http://picosong.com/BFhV/">vide A<sub>2</sub></a></td>
<td></td>
<td></td>
<td></td>
<td><a href="http://picosong.com/BF8u/">4 C<sup>#</sup><sub>3</sub></a></td>
</tr>
<tr>
<td>6<sup>ème</sup></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<p><em>J'utilise ces images pour trouver la correspondance entre note et case : <a href="http://imgur.com/a/rermN"><a href="http://imgur.com/a/rermN">http://imgur.com/a/rermN</a></a>.</em></p>
<p>J'ai aussi ce tableau pour la correspondance des notes : </p>
<p>En principe, d'après <a href="http://www.phy.mtu.edu/%7Esuits/notefreqs.html">ce tableau</a>, voici l'équivalence note <=> fréquence :</p>
<div class="table-wrapper">
<table>
<thead>
<tr>
<th>Note</th>
<th>Hz</th>
</tr>
</thead>
<tbody>
<tr>
<td>E<sub>4</sub></td>
<td>329.63</td>
</tr>
<tr>
<td>F<sub>4</sub></td>
<td>349.23</td>
</tr>
<tr>
<td>F<sup>#</sup><sub>4</sub></td>
<td>369.99</td>
</tr>
<tr>
<td>G<sub>4</sub></td>
<td>392</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>B<sub>3</sub></td>
<td>246.94</td>
</tr>
<tr>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td>A<sub>2</sub></td>
<td>110</td>
</tr>
<tr>
<td>C<sup>#</sup><sub>3</sub></td>
<td>138.59</td>
</tr>
</tbody>
</table>
</div>
<p>Je voulais savoir si vous avez des éléments pour m'aider (documentation/site) ou m'expliquer comment je dois m'y prendre pour reconnaitre une note ?</p>
<p>Car je ne sais pas du tout comment je dois m'y prendre, et j'aimerai bien comprendre comment ça fonctionne.</p>
<div class="spoiler">
<p>Quand j'ai une fréquence fixe, j'utilise ce script qui me renvoie la fréquence sous la variable "pitch" :</p>
<p><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="k">using</span> <span class="nn">UnityEngine</span><span class="p">;</span>
<span class="k">public</span> <span class="k">class</span> <span class="nc">AudioMeasureCS</span> <span class="p">:</span> <span class="n">MonoBehaviour</span> <span class="p">{</span>
<span class="k">public</span> <span class="kt">float</span> <span class="n">RmsValue</span><span class="p">;</span>
<span class="k">public</span> <span class="kt">float</span> <span class="n">DbValue</span><span class="p">;</span>
<span class="k">public</span> <span class="kt">float</span> <span class="n">PitchValue</span><span class="p">;</span>
<span class="k">public</span> <span class="k">static</span> <span class="kt">float</span> <span class="n">sPitchValue</span><span class="p">;</span>
<span class="k">public</span> <span class="n">AudioSource</span> <span class="n">AudioSource</span><span class="p">;</span>
<span class="k">public</span> <span class="n">UnityEngine</span><span class="p">.</span><span class="n">UI</span><span class="p">.</span><span class="n">Text</span> <span class="n">display</span><span class="p">;</span> <span class="c1">// drag a GUIText here to show results</span>
<span class="k">private</span> <span class="k">const</span> <span class="kt">int</span> <span class="n">QSamples</span> <span class="p">=</span> <span class="m">1024</span><span class="p">;</span>
<span class="k">private</span> <span class="k">const</span> <span class="kt">float</span> <span class="n">RefValue</span> <span class="p">=</span> <span class="m">0.1f</span><span class="p">;</span>
<span class="k">private</span> <span class="k">const</span> <span class="kt">float</span> <span class="n">Threshold</span> <span class="p">=</span> <span class="m">0.02f</span><span class="p">;</span>
<span class="kt">float</span><span class="p">[]</span> <span class="n">_samples</span><span class="p">;</span>
<span class="k">private</span> <span class="kt">float</span><span class="p">[]</span> <span class="n">_spectrum</span><span class="p">;</span>
<span class="k">private</span> <span class="kt">float</span> <span class="n">_fSample</span><span class="p">;</span>
<span class="k">void</span> <span class="nf">Start</span><span class="p">()</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(!</span><span class="n">AudioSource</span><span class="p">)</span> <span class="p">{</span>
<span class="n">Debug</span><span class="p">.</span><span class="n">Log</span><span class="p">(</span><span class="s">"Default AudioSource loaded."</span><span class="p">);</span>
<span class="n">AudioSource</span> <span class="p">=</span> <span class="n">GetComponent</span><span class="p"><</span><span class="n">AudioSource</span><span class="p">>();</span>
<span class="p">}</span>
<span class="n">_samples</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">QSamples</span><span class="p">];</span>
<span class="n">_spectrum</span> <span class="p">=</span> <span class="k">new</span> <span class="kt">float</span><span class="p">[</span><span class="n">QSamples</span><span class="p">];</span>
<span class="n">_fSample</span> <span class="p">=</span> <span class="n">AudioSettings</span><span class="p">.</span><span class="n">outputSampleRate</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">void</span> <span class="nf">Update</span><span class="p">()</span> <span class="p">{</span>
<span class="n">AnalyzeSound</span><span class="p">();</span>
<span class="k">if</span> <span class="p">(</span><span class="n">display</span><span class="p">)</span> <span class="p">{</span>
<span class="n">display</span><span class="p">.</span><span class="n">text</span> <span class="p">=</span> <span class="s">"RMS: "</span> <span class="p">+</span> <span class="n">RmsValue</span><span class="p">.</span><span class="n">ToString</span><span class="p">(</span><span class="s">"F2"</span><span class="p">)</span> <span class="p">+</span>
<span class="s">" ("</span> <span class="p">+</span> <span class="n">DbValue</span><span class="p">.</span><span class="n">ToString</span><span class="p">(</span><span class="s">"F1"</span><span class="p">)</span> <span class="p">+</span> <span class="s">" dB)\n"</span> <span class="p">+</span>
<span class="s">"Pitch: "</span> <span class="p">+</span> <span class="n">PitchValue</span><span class="p">.</span><span class="n">ToString</span><span class="p">(</span><span class="s">"F0"</span><span class="p">)</span> <span class="p">+</span> <span class="s">" Hz"</span><span class="p">;</span>
<span class="p">}</span>
<span class="n">sPitchValue</span> <span class="p">=</span> <span class="n">PitchValue</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">void</span> <span class="nf">AnalyzeSound</span><span class="p">()</span> <span class="p">{</span>
<span class="n">AudioSource</span><span class="p">.</span><span class="n">GetOutputData</span><span class="p">(</span><span class="n">_samples</span><span class="p">,</span> <span class="m">0</span><span class="p">);</span> <span class="c1">// fill array with samples</span>
<span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
<span class="kt">float</span> <span class="n">sum</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">i</span> <span class="p"><</span> <span class="n">QSamples</span><span class="p">;</span> <span class="n">i</span><span class="p">++)</span> <span class="p">{</span>
<span class="n">sum</span> <span class="p">+=</span> <span class="n">_samples</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">*</span> <span class="n">_samples</span><span class="p">[</span><span class="n">i</span><span class="p">];</span> <span class="c1">// sum squared samples</span>
<span class="p">}</span>
<span class="n">RmsValue</span> <span class="p">=</span> <span class="n">Mathf</span><span class="p">.</span><span class="n">Sqrt</span><span class="p">(</span><span class="n">sum</span> <span class="p">/</span> <span class="n">QSamples</span><span class="p">);</span> <span class="c1">// rms = square root of average</span>
<span class="n">DbValue</span> <span class="p">=</span> <span class="m">20</span> <span class="p">*</span> <span class="n">Mathf</span><span class="p">.</span><span class="n">Log10</span><span class="p">(</span><span class="n">RmsValue</span> <span class="p">/</span> <span class="n">RefValue</span><span class="p">);</span> <span class="c1">// calculate dB</span>
<span class="k">if</span> <span class="p">(</span><span class="n">DbValue</span> <span class="p"><</span> <span class="p">-</span><span class="m">160</span><span class="p">)</span> <span class="n">DbValue</span> <span class="p">=</span> <span class="p">-</span><span class="m">160</span><span class="p">;</span> <span class="c1">// clamp it to -160dB min</span>
<span class="c1">// get sound spectrum</span>
<span class="n">AudioSource</span><span class="p">.</span><span class="n">GetSpectrumData</span><span class="p">(</span><span class="n">_spectrum</span><span class="p">,</span> <span class="m">0</span><span class="p">,</span> <span class="n">FFTWindow</span><span class="p">.</span><span class="n">BlackmanHarris</span><span class="p">);</span>
<span class="kt">float</span> <span class="n">maxV</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span>
<span class="kt">var</span> <span class="n">maxN</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span>
<span class="k">for</span> <span class="p">(</span><span class="n">i</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">i</span> <span class="p"><</span> <span class="n">QSamples</span><span class="p">;</span> <span class="n">i</span><span class="p">++)</span> <span class="p">{</span> <span class="c1">// find max </span>
<span class="k">if</span> <span class="p">(!(</span><span class="n">_spectrum</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">></span> <span class="n">maxV</span><span class="p">)</span> <span class="p">||</span> <span class="p">!(</span><span class="n">_spectrum</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">></span> <span class="n">Threshold</span><span class="p">))</span>
<span class="k">continue</span><span class="p">;</span>
<span class="n">maxV</span> <span class="p">=</span> <span class="n">_spectrum</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<span class="n">maxN</span> <span class="p">=</span> <span class="n">i</span><span class="p">;</span> <span class="c1">// maxN is the index of max</span>
<span class="p">}</span>
<span class="kt">float</span> <span class="n">freqN</span> <span class="p">=</span> <span class="n">maxN</span><span class="p">;</span> <span class="c1">// pass the index to a float variable</span>
<span class="k">if</span> <span class="p">(</span><span class="n">maxN</span> <span class="p">></span> <span class="m">0</span> <span class="p">&&</span> <span class="n">maxN</span> <span class="p"><</span> <span class="n">QSamples</span> <span class="p">-</span> <span class="m">1</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// interpolate index using neighbours</span>
<span class="kt">var</span> <span class="n">dL</span> <span class="p">=</span> <span class="n">_spectrum</span><span class="p">[</span><span class="n">maxN</span> <span class="p">-</span> <span class="m">1</span><span class="p">]</span> <span class="p">/</span> <span class="n">_spectrum</span><span class="p">[</span><span class="n">maxN</span><span class="p">];</span>
<span class="kt">var</span> <span class="n">dR</span> <span class="p">=</span> <span class="n">_spectrum</span><span class="p">[</span><span class="n">maxN</span> <span class="p">+</span> <span class="m">1</span><span class="p">]</span> <span class="p">/</span> <span class="n">_spectrum</span><span class="p">[</span><span class="n">maxN</span><span class="p">];</span>
<span class="n">freqN</span> <span class="p">+=</span> <span class="m">0.5f</span> <span class="p">*</span> <span class="p">(</span><span class="n">dR</span> <span class="p">*</span> <span class="n">dR</span> <span class="p">-</span> <span class="n">dL</span> <span class="p">*</span> <span class="n">dL</span><span class="p">);</span>
<span class="p">}</span>
<span class="n">PitchValue</span> <span class="p">=</span> <span class="n">freqN</span> <span class="p">*</span> <span class="p">(</span><span class="n">_fSample</span> <span class="p">/</span> <span class="m">2</span><span class="p">)</span> <span class="p">/</span> <span class="n">QSamples</span><span class="p">;</span> <span class="c1">// convert index to frequency</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</td></tr></table>
</p>
</div>
<p>Je vous remercie d'avance ! <img alt=":)" src="/static/smileys/smile.png"></p>Mes pics suffisent-ils ?, message #922602016-01-02T17:59:56+01:00Blackline/@Blacklinehttps://zestedesavoir.com/forums/sujet/5006/mes-pics-suffisent-ils/?page=1#p92260<p>C'est vrai mais c'est un peu dommage, c'est l'une des machines que nous avons déjà utilisé en TP (celle qui fonctionne aux pastilles de KBr). Là on était dans un cycle de TP un peu particulier, d'où la nécessité d’interpréter les choses un peu plus profondément.</p>
<p>Merci à vous tous en tout cas !</p>