FLvslidBnk — Un widget FLTK contenant un banc de réglettes verticales.
Opcode du greffon widgets. Ce greffon se trouve dans le répertoire des greffons et il doit être installé séparément. Les widgets FLTK ne fonctionnent pas sur Mac. Le répertoire des greffons est ici : https://github.com/csound/plugins
FLvslidBnk est un widget contenant un banc de réglettes verticales.
FLvslidBnk "names", inumsliders [, ioutable] [, iwidth] [, iheight] [, ix] \
[, iy] [, itypetable] [, iexptable] [, istart_index] [, iminmaxtable]
« names » -- une chaîne de caractères entre guillemets contenant le nom de chaque réglette. Chaque réglette peut avoir un nom différent. Chaque nom est séparé par un caractère « @ », par exemple : « fréquence@amplitude@coupure ». Il est possible de ne fournir aucun nom en donnant un seul espace « ». Dans ce cas, l'opcode affectera automatiquement un numéro en progression ascendante comme étiquette pour chaque réglette.
inumsliders -- le nombre de réglettes.
ioutable (facultatif, 0 par défaut) -- numéro d'une table allouée préalablement dans laquelle seront stockée les valeurs de sortie de chaque réglette. Il faut s'assurer que la taille de la table est suffisante pour contenir toutes les cellules de sortie, sinon Csound plantera avec une erreur de segmentation. En affectant zéro à cet argument, la sortie sera dirigée vers l'espace zak dans la zone de taux-k. Dans ce cas, l'espace zak doit avoir été alloué au préalable avec l'opcode zakinit et il faut s'assurer que la taille d'allocation est suffisante pour couvrir toutes les réglettes. La valeur par défaut est zéro (c'est-à-dire stockage de la sortie dans l'espace zak).
istart_index (facultatif, 0 par défaut) -- un nombre entier indiquant un décalage des positions des cellules de sortie. Il peut être positif pour permettre l'allocation en sortie de plusieurs bancs de réglettes dans la même table ou dans l'espace zak. La valeur par défaut est zéro (pas de décalage).
iminmaxtable (facultatif, 0 par défaut) -- numéro d'une table définie au préalable contenant une liste de couples min-max pour chaque réglette. Une valeur de zéro signifie l'intervalle allant de 0 à 1 pour toutes les réglettes, sans fournir de table. La valeur par défaut est zéro.
iexptable (facultatif, 0 par défaut) -- numéro d'une table définie au préalable contenant une liste d'identifiants (des nombres entiers) fournis pour modifier le comportement de chaque réglette de manière indépendante. Les identifiants peuvent avoir les valeurs suivantes :
-1 -- courbe de réponse exponentielle
0 -- réponse linéaire
nombre > 0 -- suit la courbe d'une table définie au préalable pour mettre en forme la réponse de la réglette correspondante. Dans ce cas, ce nombre correspond au numéro de la table.
On peut souhaiter que toutes les réglettes du banc aient la même courbe de réponse (exponentielle ou linéaire). Dans ce cas, on peut affecter -1 ou 0 à iexptable sans se préocupper de définir auparavant une table. La valeur par défaut est zéro (toutes les réglettes ont une réponse linéaire sans avoir à fournir de table).
itypetable (facultatif, 0 par défaut) -- numéro d'une table définie au préalable contenant une liste d'identifiants (des nombres entiers) fournis pour modifier l'aspect de chaque réglette de manière indépendante. Les identifiants peuvent avoir les valeurs suivantes :
0 = Réglette stylée
1 = Réglette pleine
3 = Réglette normale
5 = Réglette stylée
7 = Réglette stylée en creux
On peut souhaiter que toutes les réglettes du banc aient le même aspect. Dans ce cas, on peut affecter un nombre négatif à itypetable sans se préocupper de définir auparavant une table. Les nombres négatifs ont la même signification que les identifiants positifs correspondants sauf que le même aspect est affecté à toutes les réglettes. On peut aussi donner un aspect aléatoire à chaque réglette en affectant à itypetable un nombre négatif inférieur à -7. La valeur par défaut est 0 (toutes les réglettes sont stylées, sans avoir à fournir de table).
On peut ajouter 20 à une valeur dans la table pour donner l'aspect "plastique" à la réglette, ou soustraire 20 si l'on veut affecter la valeur à tous les widgets sans définir une table (par exemple -21 pour donner à toutes les réglettes le type Plastique Plein).
iwidth (facultatif) -- largeur de la zone rectangulaire contenant toutes les réglettes du banc, à l'exclusion des étiquettes qui sont placées sous cette zone.
iheight (facultatif) -- hauteur de la zone rectangulaire contenant toutes les réglettes du banc, à l'exclusion des étiquettes qui sont placées sous cette zone.
ix (facultatif) -- position horizontale du coin supérieur gauche de la zone rectangulaire contenant toutes les réglettes appartenant au banc. Il faut laisser suffisamment d'espace en-dessous de ce rectangle afin que les étiquettes des réglettes soient visibles. En effet, les étiquettes elles-mêmes sont situées à l'extérieur de la zone rectangulaire.
iy (facultatif) -- position verticale du coin supérieur gauche de la zone rectangulaire contenant toutes les réglettes appartenant au banc. Il faut laisser suffisamment d'espace en-dessous de ce rectangle afin que les étiquettes des réglettes soient visibles. En effet, les étiquettes elles-mêmes sont situées à l'extérieur de la zone rectangulaire.
Il n'y a pas d'argument de taux-k, même si les cellules de la table en sortie (ou l'espace zak) sont mis à jour au taux-k.
FLvslidBnk est un widget contenant un banc de réglettes verticales. On peut y mettre n'importe quel nombre de réglettes (argument inumsliders). La sortie de toutes les réglettes est stockée dans une table allouée au préalable ou dans l'espace zak (argument ioutable). Il est possible de déterminer la première position de la table (ou de l'espace zak) dans lequel stocker la sortie de la première réglette au moyen de l'argument istart_index.
Chaque réglette peut avoir une étiquette individuelle placée sous elle. Les étiquette sont définies par l'argument « names ». L'intervalle de sortie de chaque réglette peut être fixé individuellement au moyen d'une table externe (argument iminmaxtable). La courbe de réponse de chaque réglette peut être fixée individuellement, au moyen d'une liste d'identifiants placés dans une table (argument iexptable). Il est possible de définir l'aspect de chaque réglette indépendamment ou de donner le même aspect à toutes les réglettes (argument itypetable).
Les arguments iwidth, iheight, ix et iy déterminent la largeur, la hauteur, les positions horizontale et verticale de la zone rectangulaire contenant les réglettes. Noter que l'étiquette de chaque réglette est placée en-dessous et n'est pas inclue dans la zone rectangulaire contenant les réglettes. Ainsi l'utilisateur doit laisser assez d'espace sous le banc en affectant une valeur suffisante à iy afin que les étiquettes soient visibles.
FLvslidBnk est identique à FLslidBnk sauf qu'il contient des réglettes verticales plutôt qu'horizontales. Comme la largeur de chaque réglette est souvent petite, il est recommandé de ne laisser qu'un seul espace dans la chaîne de noms (" "), ce qui fait que chaque réglette sera numérotée automatiquement.
IMPORTANT ! | |
---|---|
Noter que les tables utilisée par FLvslidBnk doivent être crées avec l'opcode ftgen et placées dans l'orchestre avant le valuateur correspondant. On ne peut pas les placer dans la partition. En effet, les tables placées dans la partition sont créées après l'initialisation des opcodes placés dans la section d'en-tête de l'orchestre. |
Voici un exemple de l'opode FLvslidBnk. Il utilise le fichier FLvslidBnk.csd.
Exemple 346. Exemple de l'opode FLvslidBnk.
Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.
<CsoundSynthesizer> <CsOptions> ; Select audio/midi flags here according to platform ; Audio out Audio in No messages -odac -iadc -d ;;;RT audio I/O </CsOptions> <CsInstruments> sr = 44100 kr = 441 ksmps = 100 nchnls = 1 gitypetable ftgen 0, 0, 8, -2, 1, 1, 3, 3, 5, 5, 7, 7 giouttable ftgen 0, 0, 8, -2, 0, 0.2, 0.3, 0.4, 0.5, 0.6, 0.8, 1 FLpanel "Slider Bank", 400, 400, 50, 50 ;Number of sliders inum = 8 ; Table to store output iouttable = giouttable ; Width of the slider bank in pixels iwidth = 350 ; Height of the slider in pixels iheight = 160 ; Distance of the left edge of the slider ; from the left edge of the panel ix = 30 ; Distance of the top edge of the slider ; from the top edge of the panel iy = 10 ; Table containing fader types itypetable = gitypetable FLvslidBnk "1@2@3@4@5@6@7@8@9@10@11@12@13@14@15@16", 16 , iouttable , iwidth , iheight , ix \ , iy , itypetable FLvslidBnk " ", inum , iouttable , iwidth , iheight , ix \ , iy + 200 , -23 ; End of panel contents FLpanelEnd ; Run the widget thread! FLrun instr 1 ;Dummy instrument endin </CsInstruments> <CsScore> ; Instrument 1 will play a note for 1 hour. i 1 0 3600 e </CsScore> </CsoundSynthesizer>