Bonjour, (Je ne sais pas si ce sujet doit être dans la partie physique ou python, je m'en escuse par avance si je me suis trompé)
Dans le cadre d'un projet perso, j'ai eu envie de pouvoir synthétiser des sons via python en utilisant un procéssus de synthèse sonor. J'utilise pour ça la modulation en fréquence.
Voici mon code :
import wave
import winsound
import scipy.io.wavfile as wav
import matplotlib.pyplot as plt
import numpy as np
import math
temps = 4
number = 44000
def SyntheseSimple (fp,fm,I,fileName): #number: number of point per second
liste=[0]*temps*number # create a list which will contain the result
Time= np.linspace(0,temps,temps*number) # Time
# We do FM synthesis.
for i in range(temps*number):
# The formula
liste[i]=math.sin(2*math.pi*(fp*Time[i] +I*math.sin(2*math.pi*fm*Time[i])))
#Creating the ADSR envellop
Decay = 0.35
Sustain = 0.4
Release = 0.6
if i < Decay*temps*number:
liste[i] = (i /(Decay*temps*number)*liste[i])
elif i <Sustain*temps*number :
liste[i] = (1-0.2*(i-Decay*temps*number)/((Sustain-Decay)*temps*number))*liste[i]
elif i < Release*temps*number:
liste[i] = 0.8*liste[i]
else :
liste[i] = (0.8-0.8*(i-Release*temps*number)/((1-Release)*temps*number))*liste[i]
#I=I-(1/number)*(I/temps)
#ploting the result
liste= np.array(liste)
fig, axs = plt.subplots(2, 2, figsize=(5, 5))
axs[0,0].plot(range(temps*number),liste)
#ploting the fft
data = liste
ps = np.abs(np.fft.fft(data))**2
time_step = 1 / (number)
freqs = np.fft.fftfreq(data.size, time_step)
idx = np.argsort(freqs)
axs[0,1].plot(freqs[idx], ps[idx])
plt.show()
#creating wav file with the result
wav.write(fileName+".wav",44000,liste)
return liste
name = "Deuxieme test fp = 300 fm =300, I = ,nature =normal,type = piano"
SyntheseSimple(300,300,1,name)
A priori, celui-ci fonctionneet me produit bien un son modulé comme attendu. (J'ai d'ailleurs réutilisé ce code pour d'autre production plus complexe).
Toutefois j'aurais bien aimé pouvoir créer des sons se rapprochant d'un instrument. J'ai cru comprendre qu'il était possible de simuler un piano par exemple - (dans la mesure du raisonnable) - mais je n'arrive pas à trouver les bonnes fréquences modulante / porteuse et indice de modulation pour que ça marche.
Si quelqu'un pouvais me depanner j'en serai absolument ravi !
Merci
Synthèse sonor - Modulation en fréquence
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.