FLbutBank — Un opcode de widget FLTK qui crée un banc de boutons.
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
Un opcode de widget FLTK qui crée un banc de boutons.
kout, ihandle FLbutBank itype, inumx, inumy, iwidth, iheight, ix, iy, \
iopcode [, kp1] [, kp2] [, kp3] [, kp4] [, kp5] [....] [, kpN]
ihandle -- un identifiant (un nombre entier) qui référence de manière univoque le widget correspondant. Il est utilisé par d'autres opcodes qui modifient les propriété du widget (voir Modifier l'Apparence des Widgets FLTK). Il est automatiquement retourné par FLbutBank et ne doit pas être fixé par l'étiquette de l'utilisateur. (L'étiquette de l'utilisateur est une chaîne entre guillemets contenant un texte fourni par l'utilisateur placé à côté du widget.)
itype -- un nombre entier dénotant l'apparence du widget. Les nombres acceptés sont :
1 - bouton normal
2 - bouton lumineux
3 - bouton à cocher
4 - bouton avec un cercle à cocher
On peut ajouter 20 à la valeur pour créer un bouton de type "plastique". Noter qu'il n'y a pas de bouton arrondi plastique (si vous fixer le type à 24, le bouton aura la même apparence qu'avec le type 23).
inumx -- nombre de boutons dans chaque rangée du banc.
inumy -- nombre de boutons dans chaque colonne du banc.
ix -- position horizontale du coin supérieur gauche du widget, relative au coin supérieur gauche de la fenêtre correspondante, exprimée en pixels.
iy -- position verticale du coin supérieur gauche du widget, relative au coin supérieur gauche de la fenêtre correspondante, exprimée en pixels.
iopcode -- type de l'instruction de partition. Il faut fournir le code ASCII de la lettre correspondant à l'instruction de partition. Actuellement seules les instructions de partition « i » (code ASCII 105) sont supportées. Une valeur de zéro fait référence à une valeur de « i » par défaut. Ainsi 0 et 105 activent l'instruction i. Une valeur de -1 désactive cette possibilité.
kout -- valeur de sortie.
kp1, kp2, ..., kpN -- arguments des instruments activés.
L'opcode FLbutBank crée un banc de boutons. Par exemple, la ligne suivante :
gkButton,ihb1 FLbutBank 22, 8, 8, 380, 180, 50, 350, 0, 7, 0, 0, 5000, 6000
créera ce banc :
Un clic sur un bouton coche celui-ci. Il peut aussi décocher un bouton préalablement coché appartenant au même banc. Ces boutons se comportent donc toujours comme des boutons radio. Noter que chaque bouton est étiqueté avec un nombre croissant. L'argument kout reçoit ce nombre lorsque le bouton correspondant est coché.
Non seulement FLbutBank retourne une valeur, mais il peut aussi activer (ou programmer) un instrument fourni par l'utilisateur chaque fois qu'un bouton est cliqué. Si l'argument iopcode est fixé à un nombre négatif, aucun instrument n'est activé ; ainsi cette possibilité est facultative. Pour activer un instrument, iopcode doit valoir 0 ou 105 (le code ASCII du caractère « i », faisant référence à l'instruction de partition i). Les p-champs de l'instrument activé sont kp1 (numéro de l'instrument), kp2 (date de l'action), kp3 (durée), suivis des autres p-champs.
L'argument itype fixe le type des boutons de la même manière que pour l'opcode FLbutton. En ajoutant 10 à l'argument itype (c'est à dire en lui attribuant la valeur 11 pour le type 1, 12 pour le type 2, 13 pour le type 3 et 14 pour le type 4), il est possible d'ignorer la valeur courante de FLbutBank lorsque l'on sauve ou que l'on récupère des instantanés (voir Opcodes Généraux relatifs aux Widgets FLTK). On peut aussi ajouter 10 aux type de boutons "plastiques" (31 pour le type 1, 32 pour le type 2, etc).
FLbutBank est très utile pour retrouver des instantanés.
Voici un exemple de l'opcode FLbutBank. Il utilise le fichier FLbutBank.csd.
Exemple 311. Exemple de l'opcode FLbutBank.
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 FLbutton.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 44100 nchnls = 1 FLpanel "Button Bank", 520, 140, 100, 100 ;itype = 2 ;Light Buttons itype = 22 ;Plastic Light Buttons inumx = 10 inumy = 4 iwidth = 500 iheight = 120 ix = 10 iy = 10 iopcode = 0 istarttim = 0 idur = 1 gkbutton, ihbb FLbutBank itype, inumx, inumy, iwidth, iheight, ix, iy, iopcode, 1, istarttim, idur FLpanelEnd FLrun instr 1 ibutton = i(gkbutton) prints "Button %i pushed!\\n", ibutton endin </CsInstruments> <CsScore> ; Real-time performance for 1 hour. f 0 3600 e </CsScore> </CsoundSynthesizer>