Avoir des sinus, du bruit et des impulsions ne fait pas encore de musique : il faut varier les hauteurs, les amplitudes et bien d'autres choses.
Les lignes qu'on peut réaliser par l'informatique sont des droites, des courbes de Bezier, des splines et toutes les courbes descriptibles par des fonctions mathématiques. On peut combiner ces courbes de différentes origines
Il semble qu'il n'y ait pas dans ce domaine des relations récursives comme on en a pour les sinus ou les bruits ; avec une exception : l'évolution du sinus récursif peut être agencée de telle façon qu'on obtienne une variation progressive de l'amplitude.
Ainsi on peut implémenter un algorithme alternant affaiblissements et renforcements de l'amplitude selon des critères de temps et d'amplitude atteinte. Le procédé est intéressant - mais il nous faut encore des outils davantage volontaristes permettant de façonner des droites et des courbes allant de y0 à y1 en un temps dt, comme les fonctions :
L'écriture des éléments de profils se fait habituellement ainsi :
d = [recta, duree, y0, y1]
d = [cubica, duree, y0, pente0, y1, pente1]
d = [curva, duree, y0, y1, courbure]
en tirant parti du fait que Python accepte des fonctions (ou des classes ou des modules ...) comme membres d'une liste (ou d'un tuple, ou d'un dictionnaire).
Le calcul de la courbe se fait par la fonction
courbe = profil([ [cubica, duree, y0, pente0, y1, pente1], [recta, duree, y0, y1], ...])
Concevoir mentalement la répartition des durées à l'intérieur
d'un profil pour obtenir la durée finale souhaitée est un trop grand effort
intellectuel ; je préfère faire faire ce travail par Python en utilisant
la classe
descriptionEnveloppe = [ .... [cubica, duree, y0, pente0, y1, pente1], [recta, duree, y0, y1], ...]
enveloppe = ProfilBase(descriptionEnveloppe).temps(duree)
ou
enveloppe = ProfilBase(descriptionEnveloppe).samples(ns)... la suite (utilisation des profils)...
Copyright 2011 (c) René Bastian - rbastian (arrobe) free.fr