La synthèse par balayage (scanned synthesis) est une variante des modèles physiques, dans laquelle un réseau de masses connectées par des ressorts est utilisé pour générer une forme d'onde dynamique. Développée par Bill Verplank, Rob Shaw et Max Mathews entre 1998 et 1999 à Interval Research Inc. elle est basée sur la psychoacoustique de la façon dont nous entendons et apprécions les timbres durant une exécution.
La synthèse par balayage utilise un système dynamique lent dont les fréquences de vibration sont inférieures à 15 Hz. L'oreille ne peut pas entendre les basses fréquences du système dynamique. Pour produire des fréquences audibles, la "forme" du système dynamique est balayée périodiquement le long d'un chemin fermé. Cette "forme" est convertie en une onde sonore dont la hauteur est déterminée par la vitesse de la fonction de balayage. Le contrôle de la hauteur est complètement séparé du contrôle du système dynamique. Ainsi, timbre et hauteur sont indépendants.
Ce système peut être considéré comme une table d'onde dynamique. Le modèle peut être comparé à une corde vibrant lentement ou à une surface obéissant à la fonction d'onde.
Verplank, Shaw et Mathews ont étudié la synthèse par balayage principalement avec un modèle aux éléments finis d'une corde généralisée - une collection de masses connectées par des ressorts et des amortisseurs que l'on peut analyser avec les lois de Newton. Partant de là, ils ont généralisé une corde traditionnelle en ajoutant des amortisseurs et des ressorts à chaque masse.
Tous les paramètres - masse, amortissement, attraction terrestre et tension du ressort peuvent varier le long de la "corde". Le modèle est manipulé en poussant et en tirant les différentes masses (les échantillons individuels dans une table d'onde très courte) et en manipulant les paramètres. Ce qui est remarquable ici, c'est que la table d'onde est elle-même un modèle dynamique.
On manipule le modèle mécanique à des taux haptiques 0-10 Hz, et indépendamment de cela, on balaye la table d'onde à la fréquence de la hauteur. De plus, la table a sa propre dynamique, il n'y a pas de discontinuités car le modèle est implanté comme une chaîne circulaire, ce qui donne un oscillateur bouclant sur 128 points avec une boucle évoluant constamment. C'est difficile à croire mais vrai, qu'il en résulte un échantillon court qui est animé et harmoniquement riche grâce à la nature interactive des éléments du système sous-jacent - la mécanique du modèle.
En fait, même l'enveloppe peut provenir directement du modèle. Il se trouve que le réglage spécifique des ressorts du centre peut affecter l'amortissement du système - des valeurs faibles permettent de laisser résonner le timbre riche, des valeurs importantes atténuent rapidement le son.
L'opcode scanu définit le réseau de masses/ressorts et le met en mouvement. L'opcode scans suit un chemin prédéfini (une trajectoire) à travers le réseau et donne en sortie la forme d'onde détectée. Plusieurs instances de scans peuvent suivre différents chemins à travers le même réseau. Ce sont des algorithmes de modélisation mécanique hautement efficaces à la fois pour la synthèse et l'animation sonore via un traitement algorithmique. Il vaut mieux les utiliser en temps réel. Ainsi, la sortie est utile soit directement pour l'audio, soit comme valeurs de contrôleur pour d'autres paramètres.
L'implémentation dans Csound ajoute le support pour un chemin de balayage ou matrice. Essentiellement, ceci offre la possibilité de reconnecter les masses dans d'autres configurations, provoquant une propagation du signal assez différente. Elles ne doivent pas nécessairement être connectées à leurs voisines directes. La matrice a essentiellement l'effet de « modeler » la surface en une forme radicalement différente.
Pour produire les matrices, le format du table est direct. Par exemple, pour 4 masses nous avons la grille suivante qui décrit les connexions possibles :
1 | 2 | 3 | 4 | |
1 | ||||
2 | ||||
3 | ||||
4 |
Chaque fois que deux masses sont connectées, le point qu'elles définissent vaut 1. Si deux masses ne sont pas connectées, le point qu'elles définissent vaut alors 0. Par exemple, une corde unidirectionnelle a les connexions suivantes : (1,2), (2,3), (3,4). Si elle est bidirectionnelle, elle a aussi (2,1), (3,2), (4,3). Pour la corde unidirectionnelle, la matrice est :
1 | 2 | 3 | 4 | |
1 | 0 | 1 | 0 | 0 |
2 | 0 | 0 | 1 | 0 |
3 | 0 | 0 | 0 | 1 |
4 | 0 | 0 | 0 | 0 |
Le format de table ci-dessus pour la matrice de connexion n'est donné que par commodité conceptuelle. Les valeurs actuellement montrées dans le tableau sont obtenues par scans depuis un fichier ASCII en utilisant GEN23. Le fichier ASCII lui-même est créé à partir du modèle de la table ligne par ligne. Ainsi, le fichier ASCII pour la table de l'exemple montré ci-dessus devient :
0100001000010000
Cet exemple de matrice est très simple et très petit. En pratique, la plupart des instruments de synthèse par balayage utiliseront bien plus que quatre masses, et donc leurs matrices seront bien plus grandes et plus complexes. Voir l'exemple dans la documentation de scans.
Prière de noter que les tables d'onde dynamiques générées sont très instables. Certaines valeurs de masses, de centrage, et d'amortissement peuvent provoquer une « explosion » du système et l'apparition de sons extrêmement intéressants sur vos haut-parleurs.
Le supplément de ce manuel contient un tutoriel sur la synthèse par balayage. Le tutoriel, des exemples, et d'autres informations sur la synthèse par balayage sont disponibles sur la page Scanned Synthesis à csounds.com.
Les opcodes qui implémentent la synthèse par balayage sont :