Il y a au moins deux sortes de sinus :
Dans les deux cas on utilise les modules et fonctions de l'extension Numpy
C'est le plus évident : on calcule les valeurs d'une onde sinusoïdale par une formule :
y = sin(2 * pi * freq * t
où t prend les valeurs de la liste (ou vecteur) T données par :
T = numpy.arange(0.0, duree, 1./sr)
Nous sommes dans un monde réversible - celui que les physiciens aiment bien : on pourrait calculer les valeurs de l'onde sinusoïdale dans n'importe quel ordre et les trier ensuite selon les valeurs du temps et on obtiendrait la même onde. Ce serait évidemment plus lent. Mais dans le monde physico-mathématique tout est - tout le temps - déjà là.
Il y a une autre construction, qui n'est pas intemporelle : le calcul de chaque valeur résulte des deux valeurs qui l'ont précédé. On n'accède pas à la valeur de n'import quel temps : il faut d'abord calculer toutes les valeurs antérieures. Voici l'algorithme :
y[i] = k * y[i-1] - y[i-2]
où k dépend de la fréquence que nous voulons obtenir par la relation :
k = 2 * numpy.cos(2 * numpy.pi * freq/sr)
Si on veut faire varier la fréquence, continûment ou discontinûment, il faut aussi varier les valeurs de k
C'est simple, non ?
... la suite ... (bruit, impulsions, ...)
Copyright 2011 (c) René Bastian - rbastian (arrobe) free.fr