Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
Mattéo Delabre d124e8465e
Ajout stft-decode
3 lat temu
fig Mise en cohérence des styles de graphes 3 lat temu
sounds Mise à jour des graphes 3 lat temu
.gitignore Initial commit 3 lat temu
README.md Ajout stft-decode 3 lat temu
fft-decode.py Ajout stft-decode 3 lat temu
fft-graph.py Mise en cohérence des styles de graphes 3 lat temu
generate.py Documentation sur soundbox 3 lat temu
soundbox.py Ajout script pour décoder les notes 3 lat temu
stft-decode.py Ajout stft-decode 3 lat temu
stft-graph.py Mise en cohérence des styles de graphes 3 lat temu

README.md

À la recherche des notes originelles

À partir de l’enregistrement numérique d’une interprétation musicale, est-il possible de reconnaître la séquence de notes qui a été jouée sur les différents instruments utilisés ? Cette situation s’apparente à celle où l’on dispose d’une image matricielle rendue à partir d’une image vectorielle et où l’on souhaite retrouver les vecteurs d’origine dont on ne dispose plus — à la différence que nous traitons ici d’un signal 1D au lieu de 2D, et d’un signal sonore plutôt que visuel qui plus est.

Excursion sinusoïdale

Simplifions d’abord le problème en considérant un signal composé uniquement de sinusoïdes pures (produit par le synthétiseur de fortune qu’est ce script Python). Cela facilite doublement la tâche, puisque non seulement le signal est totalement exempt de bruit, mais en plus les instruments convoqués n’ont qu’une seule harmonique. Une première approche consiste à étudier le spectre du signal en utilisant une transformation de Fourier (générée par ce script Python).

Spectre du son produit par le synthétiseur

Sur ce spectre peuvent être distinguées les douze notes qui composent le morceau : do₂, sol₂, la₂, do₃, mi₃, fa₃, sol₃, la₃, si₃, do₄, re₄, mi₄. Une information cruciale manque cependant, celle de l’évolution du signal dans le temps. Une façon de l’obtenir consiste à découper le signal en courtes fenêtres de temps et d’appliquer la transformation de Fourier sur les segments obtenus : c’est la transformée de Fourier à court terme. On obtient ainsi un sonagramme qui montre l’évolution des fréquences du signal dans le temps (produit par ce script Python).

Évolution dans le temps du spectre du son produit par le synthétiseur

Ce sonagramme permet de distinguer clairement les deux parties du morceau, celle jouée par une sinusoïde au dessus de 250 Hz et celle jouée par une onde carrée en dessous de cette fréquence. On reconnaît également les quatre accords en do majeur joués par la sinusoïde deux fois de suite. Sur cet exemple simple, la transformée de Fourier à court terme est donc suffisante pour extraire les notes, mais qu’en est-il d’un signal plus complexe ?