Mise à jour des graphes
This commit is contained in:
parent
e751df5f8b
commit
e8a5336aca
10
README.md
10
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)).
|
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.
|
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é.
|
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).
|
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).
|
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.
|
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.
|
On reconnaît également les quatre accords en do majeur joués par la sinusoïde deux fois de suite.
|
||||||
|
|
|
@ -21,7 +21,7 @@ values = np.absolute(vecs) / np.max(np.absolute(vecs))
|
||||||
freq = np.arange(len(values))
|
freq = np.arange(len(values))
|
||||||
|
|
||||||
# Calcul de la fenêtre des fréquences intéressantes
|
# 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]
|
left = high_enough[0][0]
|
||||||
right = high_enough[0][-1]
|
right = high_enough[0][-1]
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ values = np.absolute(vecs) / np.max(np.absolute(vecs))
|
||||||
freq = np.arange(len(values))
|
freq = np.arange(len(values))
|
||||||
|
|
||||||
# Calcul de la fenêtre des fréquences intéressantes
|
# 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]
|
left = high_enough[0][0]
|
||||||
right = high_enough[0][-1]
|
right = high_enough[0][-1]
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
Binary file not shown.
After Width: | Height: | Size: 134 KiB |
Binary file not shown.
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 29 KiB |
Binary file not shown.
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 77 KiB |
BIN
sounds/piano.wav
BIN
sounds/piano.wav
Binary file not shown.
Loading…
Reference in New Issue