scanu2

scanu2 — Calcule la forme d'onde et la table d'onde à utiliser dans la synthèse par balayage.

Description

Opcode du greffon scansyn.

Calcule la forme d'onde et la table d'onde à utiliser dans la synthèse par balayage.

Syntaxe

scanu2 init, irate, ifnvel, ifnmass, ifnstif, ifncentr, ifndamp, kmass, \
      kstif, kcentr, kdamp, ileft, iright, kpos, kstrngth, ain, idisp, id

Initialisation

init -- La position initiale des masses. Si c'est un nombre négatif, alors la valeur absolue de init indique la table à utiliser pour la forme du marteau. Si init > 0, sa longueur doit être la même que le nombre de masses attendu, sinon il peut avoir n'importe quelle valeur. Si init n'est pas un entier, l'état initial est du bruit blanc, la partie fractionnaire étant une pondération...

irate -- L'intervalle de temps entre les mises à jour successives de l'état des masses. Du même ordre de grandeur que la période d'échantillonnage du système. Si ce nombre est grand, la chaîne sera mise à jour lentement montrant une faible variation du timbre ; sinon elle changera rapidement donnant un son plus dynamique.

ifnvel -- ftable contenant la vitesse initiale de chaque masse. Sa taille est le nombre de masses attendu.

ifnmass -- ftable contenant la valeur de chaque masse. Sa taille est le nombre de masses attendu.

ifnstif -- ftable contenant la raideur du ressort de chaque connexion. Sa taille est le carré du nombre de masses attendu. Ses données sont ordonnées selon la succession des lignes de la matrice de connexion du système.

ifncentr -- ftable contenant la force de centrage de chaque masse. Sa taille est le nombre de masses attendu.

ifndamp -- ftable contenant le facteur d'amortissement de chaque masse. Sa taille est le nombre de masses attendu.

ileft -- Si init < 0, position du pincement positif entre 0 et 1.

iright -- Si init < 0, position du pincement négatif entre 0 et 1.

Si ileft le même que iright un seul pincement positif est utilisé comme état initial.

idisp -- S'il vaut 0, il n'y a pas d'affichage des masses.

id -- S'il est positif, c'est l'ID de l'opcode. Il est utilisé pour relier l'opcode de balayage au bon générateur de forme d'onde. S'il est négatif, sa valeur absolue indique la table d'onde dans laquelle sera écrite la forme d'onde. Cette forme d'onde peut être utilisée par la suite par un autre opcode pour générer du son. Le contenu initial de cette table sera écrasé.

Exécution

kmass -- pondère les masses

kstif -- pondère la raideur des ressorts. Noter que de grandes valeurs ralentissent l'évolution de la vibration, à l'inverse du paramètre correspondant dans scanu.

kcentr -- pondère la force de centrage

kdamp -- pondère l'amortissement

kpos -- position d'un marteau actif le long de la corde (kpos = 0 est complètement à gauche, kpos = 1 est complètement à droite). La forme du marteau est déterminée par init et sa puissance de percussion est kstrngth.

kstrngth -- puissance utilisée par le marteau actif

ain -- entrée audio qui s'ajoute à la vélocité des masses. L'amplitude ne doit pas être trop grande.

Format de la matrice

Le format de la matrice de scanu est une liste binaire de connexions. le poids du lien est supposé être unitaire.

Par exemple, une chaîne circulaire de quatre éléments serait codée de cette manière :

0
1
0
0
1
0
1
0
0
1
0
1
0
0
1
0
        

Note : pour éviter la confusion avec d'autres formats de matrice, il vaut mieux sauvegarder ce format de matrice avec l'extension de fichier .matrxB.

Exemples

Voici un exemple de l'opcode scanu2. Il utilise les fichiers

Voir aussi

scanu

Crédits

Auteur : John ffitch d'après Paris Smaragdis
Mai 2021

Nouveau dans la 6.16 de Csound