# génération des 4 courbes cibles Duelund

import math
import cmath

fc=716                       # fréquence caractéristique
a=8                          # facteur amortissement

inf=15.625                    # fréquence inférieure
sup=32000                     # fréquence supérieure
N=264                         # nombre de points, 24 par octave
offset=85                     # décalage en dB

file_low=open("low_Duelund.frd","w")       # nom des fichiers .frd
file_mid_low=open("mid_low_Duelund.frd","w")
file_mid_high=open("mid_high_Duelund.frd","w")
file_high=open("high_Duelund.frd","w")

for i in range(0,N+1):
    
    f=inf*(sup/inf)**(i/N)                                              #balayage fréquentiel
    s=1j*f/fc
    
    low=1/((1+2*s+s**2)*(1+a*s+s**2)**2)          # fonctions de transfert
    mid_low=low*(1-a**2)*s**2
    mid_high=low*(a**2-1)*s**4
    high=-low*s**6
    
    file_low.write(str(f))
    file_low.write("\t")
    file_low.write(str(20*math.log10(abs(low))+offset))
    file_low.write("\t")
    file_low.write(str(57.29*cmath.phase(low)))
    file_low.write("\n")

    file_mid_low.write(str(f))
    file_mid_low.write("\t")
    file_mid_low.write(str(20*math.log10(abs(mid_low))+offset))
    file_mid_low.write("\t")
    file_mid_low.write(str(57.29*cmath.phase(mid_low)))
    file_mid_low.write("\n")

    file_mid_high.write(str(f))
    file_mid_high.write("\t")
    file_mid_high.write(str(20*math.log10(abs(mid_high))+offset))
    file_mid_high.write("\t")
    file_mid_high.write(str(57.29*cmath.phase(mid_high)))
    file_mid_high.write("\n")

    file_high.write(str(f))
    file_high.write("\t")
    file_high.write(str(20*math.log10(abs(high))+offset))
    file_high.write("\t")
    file_high.write(str(57.29*cmath.phase(high)))
    file_high.write("\n")
    
file_low.close()
file_mid_low.close()
file_mid_high.close()
file_high.close()
