FLslidBnk

FLslidBnk — Un widget FLTK contenant un banc de réglettes horizontales.

Description

FLslidBnk est un widget FLTK contenant un banc de réglettes horizontales.

Syntaxe

FLslidBnk "names", inumsliders [, ioutable] [, iwidth] [, iheight] [, ix] \
      [, iy] [, itypetable] [, iexptable] [, istart_index] [, iminmaxtable]

Initialisation

« 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 à la gauche de cette zone.

iheight (facultatif) -- hauteur de la zone rectangulaire contenant toutes les réglettes du banc, à l'exclusion des étiquettes qui sont placées à la gauche de 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 à la gauche 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 à la gauche 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.

Exécution

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.

FLslidBnk est un widget contenant un banc de réglettes horizontales. 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 à sa gauche. 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 à sa gauche et n'est pas inclue dans la zone rectangulaire contenant les réglettes. Ainsi l'utilisateur doit laisser assez d'espace à la gauche du banc en affectant une valeur suffisante à ix afin que les étiquettes soient visibles.

[Avertissement] IMPORTANT !

Noter que les tables utilisée par FLslidBnk 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.

Exemples

Voici un exemple de l'opode FLslidBnk. Il utilise le fichier FLslidBnk.csd.

Exemple 300. Exemple de l'opode FLslidBnk.

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
; For Non-realtime ouput leave only the line below:
; -o FLslidBnk.wav -W ;;; for file output any platform
</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, 380, 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
    FLslidBnk "1@2@3@4@5@6@7@8", inum , iouttable , iwidth , iheight , ix \
      , iy , itypetable
    FLslidBnk "1@2@3@4@5@6@7@8", 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>


Voir aussi

FLslider, FLslidBnk2, FLvslidBnk, FLvslidBnk2

Crédits

Auteur : Gabriel Maldonado

Nouveau dans la version 4.22