>> Technologie Électronique >  >> Audio personnel >> Lecteur MiniDisc

Comment puis-je créer un graphique d'ondes sonores à l'aide du générateur?

Vous ne pouvez pas créer un graphique d'onde sonore * True * directement en utilisant une seule fonction de générateur dans la façon dont vous pourriez penser (comme une seule fonction Python générant un PNG). Les ondes sonores sont intrinsèquement temporelles (change de pression au fil du temps). Un graphique est une représentation spatiale. Vous devez * générer les données des ondes sonores *, puis * traiter ces données pour créer une représentation visuelle *.

Voici comment vous pouvez le faire à l'aide de Python, en tirant parti des bibliothèques pour la génération de son et la création d'images:

1. Générer les données des ondes sonores:

Cette partie crée les données numériques représentant l'onde sonore. Nous utiliserons «Numpy» pour le calcul numérique et «Scipy» pour générer différentes formes d'onde.

`` Python

Importer Numpy comme NP

Importer Matplotlib.pyplot en tant que plt

importer scipy.io.wavfile comme wav

De Scipy.Signal Import Sawtooth, Square

Paramètres

fréquence =440 # Hz (note A4)

durée =2 # secondes

Sample_rate =44100 # HZ (taux audio standard)

amplitude =0,8 # Gardez-le en dessous de 1 pour éviter l'écrasement

vecteur de temps

t =np.linspace (0, durée, int (samptonnet_rate * durée), terminal =false)

Choisissez une forme d'onde (sinus, carré, dents de scie, etc.)

#WaveForm =np.sin (2 * np.pi * fréquence * t) * amplitude # onde sinusoïdale

#WaveForm =carré (2 * np.pi * fréquence * t) * amplitude # onde carrée

Formulaire d'onde =Sawtooth (2 * np.pi * Fréquence * T) * Amplitude # onde de dents de scie

#Optional:Ajoutez du bruit

bruit =np.random.normal (0, 0,1, len (forme d'onde))

forme d'onde + =bruit

normaliser pour éviter l'écrasement (important pour la sortie audio)

forme d'onde =forme d'onde / np.max (np.abs (forme d'onde)))

#Optional:Enregistrer en tant que fichier WAV

wav.write ("output.wav", samptample_rate, wave forme.astype (np.float32))

`` '

2. Créez le graphique:

Cette pièce prend les données d'ondes sonores générées et les trace en utilisant `Matplotlib».

`` Python

tracer la forme d'onde

Plt.Figure (FigSize =(10, 4))

plt.plot (T, forme d'onde)

plt.xLabel ("temps (s)")

plt.ylabel ("amplitude")

plt.title ("Forme d'onde sonore")

plt.grid (true)

plt.savefig ("son_wave.png") #save comme png

plt.show ()

`` '

Code complet:

`` Python

Importer Numpy comme NP

Importer Matplotlib.pyplot en tant que plt

importer scipy.io.wavfile comme wav

De Scipy.Signal Import Sawtooth, Square

Paramètres

fréquence =440 # Hz (note A4)

durée =2 # secondes

Sample_rate =44100 # HZ (taux audio standard)

amplitude =0,8 # Gardez-le en dessous de 1 pour éviter l'écrasement

vecteur de temps

t =np.linspace (0, durée, int (samptonnet_rate * durée), terminal =false)

Choisissez une forme d'onde

Formulaire d'onde =Sawtooth (2 * np.pi * fréquence * t) * amplitude

#Optional:Ajoutez du bruit

bruit =np.random.normal (0, 0,1, len (forme d'onde))

forme d'onde + =bruit

normaliser pour éviter l'écrasement

forme d'onde =forme d'onde / np.max (np.abs (forme d'onde)))

#Optional:Enregistrer en tant que fichier WAV

wav.write ("output.wav", samptample_rate, wave forme.astype (np.float32))

tracer la forme d'onde

Plt.Figure (FigSize =(10, 4))

plt.plot (T, forme d'onde)

plt.xLabel ("temps (s)")

plt.ylabel ("amplitude")

plt.title ("Forme d'onde sonore")

plt.grid (true)

plt.savefig ("son_wave.png")

plt.show ()

`` '

Ce code sera:

1. Générez une onde en dents de scie (vous pouvez facilement changer cela en des fonctions sinusoïdales, carrées ou d'autres ondes en utilisant des fonctions `scipy.signal`).

2. Ajouter éventuellement du bruit pour le rendre plus réaliste.

3. Normalisez la forme d'onde pour éviter l'écrasement.

4. Enregistrer éventuellement en tant que fichier WAV.

5. Créez et enregistrez une image PNG de l'amplitude de l'onde sonore au fil du temps.

N'oubliez pas d'installer les bibliothèques nécessaires:«Numpy», «Matplotlib» et «Scipy». Vous pouvez les installer à l'aide de PIP:`PIP Installer Numpy Matplotlib Scipy`

Lecteur MiniDisc