splitrig

splitrig — Divise un signal déclencheur.

Description

splitrig divise un signal déclencheur (c-à-d une suite temporelle d'impulsions au taux de contrôle) en plusieurs canaux suivant une structure conçue par l'utilisateur.

Syntaxe

splitrig ktrig, kndx, imaxtics, ifn, kout1 [,kout2,...,koutN]

Initialisation

imaxtics -- nombre de tics appartenant au motif le plus grand.

ifn -- numéro de la table contenant la structure des données par canal.

Exécution

asig -- signal entrant

ktrig -- signal déclencheur

L'opcode splitrig divise un signal déclencheur en plusieurs canaux suivant un ou plusieurs motifs fournis par l'utilisateur. Normalement le signal déclencheur régulier généré par l'opcode metro est utilisé pour être transformé en motif rythmique pouvant déclenché plusieurs mélodies indépendantes ou plusieurs riffs de percussion. Mais on peut aussi partir de signaux de déclenchement non-isochrones. Ceci permet des variations de groove "interprétées" et moins "mécaniques". Les motifs sont en boucle et le cycle est répété chaque nombre_de_tics_du_motif_N.

Le schéma des motifs est défini par l'utilisateur et stocké dans la table ifn dans le format suivant :

        gi1  ftgen 1,0,1024,  -2 \  ; la table est générée avec GEN02 dans ce cas
\                           ;
nombre_de_tics_du_motif_1, \ ;motif 1
   tic1_out1, tic1_out2, ... , tic1_outN,\
   tic2_out1, tic2_out2, ... , tic2_outN,\
   tic3_out1, tic3_out2, ... , tic3_outN,\
   .....
   ticN_out1, ticN_out2, ... , ticN_outN,\
\
nombre_de_tics_du_motif_2, \ ;motif 2
   tic1_out1, tic1_out2, ... , tic1_outN,\
   tic2_out1, tic2_out2, ... , tic2_outN,\
   tic3_out1, tic3_out2, ... , tic3_outN,\
   .....
   ticN_out1, ticN_out2, ... , ticN_outN,\
   .....
\
nombre_de_tics_du_motif_N,\ ;motif N
   tic1_out1, tic1_out2, ... , tic1_outN,\
   tic2_out1, tic2_out2, ... , tic2_outN,\
   tic3_out1, tic3_out2, ... , tic3_outN,\
   .....
   ticN_out1, ticN_out2, ... , ticN_outN,\
      

Ce schéma peut contenir plus d'un motif, chacun avec un nombre différent de lignes. Chaque motif est précédé par une ligne spéciale contenant un seul champ nombre_de_tics_du_motif_N ; ce champ donne le nombre de tics constituant le motif correspondant. Chaque ligne du motif compose un tic. Chaque colonne du motif correspond à un canal, et chaque champ d'une ligne est un nombre qui constitue le valeur sortie par le canal correspondant koutXX (si ce nombre est zéro, le canal de sortie correspondant ne déclenchera rien dans cet argument particulier). Evidemment, chaque ligne doit contenir le même nombre de champs qui doit égaler le nombre de canaux koutXX. Tous les motifs doivent contenir le même nombre de lignes ; ce nombre doit être égal au plus grand des motifs et il est défini par la variable imaxtics. Même si un motif compte moins de tics que le motif le plus grand, il doit contenir le même nombre de lignes. Dans ce cas, certaines de ces lignes, à la fin du motif, ne seront pas utilisées (et peuvent ainsi prendre n'importe quelle valeur, car elle est sans importance).

La variable kndx donne le numéro du motif à jouer, zéro indiquant le premier motif. Chaque fois que la partie entière de kndx change, le compteur de tic est remis à zéro.

Les motifs sont en boucle et le cycle est répété chaque nombre_de_tics_du_motif_N.

exemples 4 - calcule la valeur moyenne de asig dans l'intervalle de temps.

Cet opcode peut être utile dans certaines situations, par exemple pour implémenter un vu-mètre.

Crédits

Ecrit par Gabriel Maldonado.

Nouveau dans Csound 5 (n'était disponible auparavant que dans CsoundAV).