diff --git a/README.md b/README.md index e356f9e..21ad7ff 100644 --- a/README.md +++ b/README.md @@ -9,17 +9,17 @@ Cette situation s’apparente à celle où l’on dispose d’une image matricie Simplifions d’abord le problème en considérant [un signal composé uniquement de sinusoïdes pures](sounds/synth.wav) (produit par le synthétiseur de fortune qu’est [ce script Python](generate.py)). 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](https://fr.wikipedia.org/wiki/Transformation_de_Fourier_discrète) (générée par [ce script Python](analyze-single.py)). +Une première approche consiste à étudier le spectre du signal en utilisant une [transformation de Fourier](https://fr.wikipedia.org/wiki/Transformation_de_Fourier_discrète) (générée par [ce script Python](fft-graph.py)). -![Spectre du son produit par le synthétiseur](fig/synth-single.png) +![Spectre du son produit par le synthétiseur](fig/synth-fft.png) Ce spectre permet de lire les différentes fréquences qui composent le son étudié. On y distingue, parmi les fréquences les plus représentées, un *sol₂* (192 Hz), un *do₂* (131 Hz), un *la₂* (220 Hz) et un *la₃* (440 Hz). -Une information cruciale manque, celle de l’évolution du signal dans le temps. +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 morceaux obtenus : c’est [la transformée de Fourier à court terme](https://fr.wikipedia.org/wiki/Transform%C3%A9e_de_Fourier_%C3%A0_court_terme). -On obtient ainsi un [sonagramme](https://fr.wikipedia.org/wiki/Sonagramme) qui montre l’évolution des fréquences du signal dans le temps (produit par [ce script Python](analyze-shorttime.py)). +On obtient ainsi un [sonagramme](https://fr.wikipedia.org/wiki/Sonagramme) qui montre l’évolution des fréquences du signal dans le temps (produit par [ce script Python](stft-graph.py)). -![Évolution dans le temps du spectre du son produit par le synthétiseur](fig/synth-shorttime.png) +![Évolution dans le temps du spectre du son produit par le synthétiseur](fig/synth-stft.png) 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. diff --git a/fft-decode.py b/fft-decode.py index 465aa6c..b8908c1 100644 --- a/fft-decode.py +++ b/fft-decode.py @@ -21,7 +21,7 @@ values = np.absolute(vecs) / np.max(np.absolute(vecs)) freq = np.arange(len(values)) # Calcul de la fenêtre des fréquences intéressantes -high_enough = np.where(values >= 0.005) +high_enough = np.where(values >= 0.01) left = high_enough[0][0] right = high_enough[0][-1] diff --git a/fft-graph.py b/fft-graph.py index 360b20c..7e98ca1 100644 --- a/fft-graph.py +++ b/fft-graph.py @@ -24,7 +24,7 @@ values = np.absolute(vecs) / np.max(np.absolute(vecs)) freq = np.arange(len(values)) # Calcul de la fenêtre des fréquences intéressantes -high_enough = np.where(values >= 0.005) +high_enough = np.where(values >= 0.01) left = high_enough[0][0] right = high_enough[0][-1] diff --git a/fig/piano-fft.png b/fig/piano-fft.png new file mode 100644 index 0000000..01eb74a Binary files /dev/null and b/fig/piano-fft.png differ diff --git a/fig/piano-stft.png b/fig/piano-stft.png new file mode 100644 index 0000000..d96d3d0 Binary files /dev/null and b/fig/piano-stft.png differ diff --git a/fig/synth-fft.png b/fig/synth-fft.png index 9639631..b37c593 100644 Binary files a/fig/synth-fft.png and b/fig/synth-fft.png differ diff --git a/fig/synth-stft.png b/fig/synth-stft.png index 94243d5..9dab7e6 100644 Binary files a/fig/synth-stft.png and b/fig/synth-stft.png differ diff --git a/sounds/piano.wav b/sounds/piano.wav index a37cce7..1da6f8f 100644 Binary files a/sounds/piano.wav and b/sounds/piano.wav differ