# TP filtrage son

import numpy as np
import matplotlib.pyplot as plt
from numpy.fft import rfft

import csv

file=open("son.csv","r")           # on ouvre le fichier, 'r' pour read
reader=csv.reader(file,delimiter=";")  # on le lit en séparant les champs

lx=[]
ly=[]
for row in reader:                     # pour toutes les rangées
    try:               # essaie de convertir, si c'est du texte, ne fait rien !
        virgule=row[0].replace(",",".")# sinon, on change le virgule
        lx.append(float(virgule))      # et on stocke cela dans la liste lx

        virgule=row[1].replace(",",".")# idem pour la seconde colonne, etc...
        ly.append(float(virgule))

    except:                            # si ce n'est pas des données
        pass                           # on passe à la suite

file.close()                           # on ferme le fichier


t=np.array(lx)   # convertit les listes en tableaux plus pratiques
e=np.array(ly)   # pas obligatoire...

N=len(e)
duree=t[N-1]
fe=N/duree

# tracé

def trace(e,titre):
    plt.figure(figsize=(15,7))

    plt.scatter(t,e,marker='+')

    plt.grid()
    plt.title(titre, fontsize=25)
    plt.xlabel("temps en s",fontsize=15)
    plt.ylabel("tension du micro en V",fontsize=15)

    plt.show()

trace(e,"Son enregistré")

# tracé du spectre


# def spectre(y):
#
#     tfd=rfft(y)
#     spectre=np.absolute(tfd)*2/N
#
#     spectre[0]=spectre[0]/2
#
#     f=np.arange(N/2+1)*1.0/duree # ou np.linspace(0,fe/2,N/2+1)
#
#     plt.figure(figsize=(10,4))
#     plt.plot(f,spectre,'r')
#     plt.xlabel("f en Hz")
#     plt.ylabel("Amplitude")
#     plt.grid()
#     plt.show()
#
#
# spectre(e)
#
# # filtrage -----------------------------------------------------------------
#
# s=np.zeros(N)
#
#
#
#
#
#
# #----------------------------------------------------------------------------
#
# # affichage spectre et signal filtré
# spectre(s)
# trace(s,"Signal filtré")
#
# # enregistrement du fichier .csv
#
# file=open("son1.csv","w",newline='')
#
# writer=csv.writer(file,delimiter=";")
# writer.writerow(['t', 'signal filtré'])
#
# for i in range(N):
#     vir=str(t[i]).replace(".",",")
#     vir1=str(s[i]).replace(".",",")
#     writer.writerow([vir,vir1])
#
# file.close()



