Logo Les Interros des Lycées
doppler3.py
Programme Python de l'Interros des Lycées
def SimuleDoppler (v=130.0, x0=10.0, cs=340.0, f=440.0, duree=8.0, sample_rate=22050):
    vSI = v/3.6   # On convertit la vitesse en m/s
    ystart = -vSI*duree/2
    n_samples = int(duree * sample_rate)
    samples = zeros(n_samples)
    phase = 0
    y = ystart
    dt = 1/sample_rate
    for i in arange(n_samples):
        # Distance de la source
        d = sqrt (x0**2+y**2)
        # Valeur de la perturbation sonore
        samples[i] = 128+127*(sin(phase)*0.5)*abs(x0/d)
        # Position suivante de la source
        y = y+vSI*dt
        # Nouvelle distance de l'émetteur
        dp= sqrt (x0**2+y**2)
        # Vitesse d'éloignement de la source
        ve = (dp-d)/dt
        # Fréquence du son perçu
        fp= f/(1.+ve/cs)
        # Nouvelle phase de la perturbation sonore
        phase = phase + 2*pi*fp*dt
    
    play_samples(samples, sample_rate=sample_rate)