FLbutton — Un opcode de widget FLTK qui crée un bouton.
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 bouton.
kout, ihandle FLbutton "label", ion, ioff, itype, 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 FLbutton 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.)
« label » -- une chaîne entre guillemets contenant un texte fourni par l'utilisateur placé à côté du widget.
Noter qu'avec FLbutton il n'est pas nécessaire d'appeler l'opcode FLsetTextType pour utiliser un symbole. Dans ce cas, il suffit d'utiliser une étiquette commençant par « @ » suivi de la chaîne de formatage correcte.
Les symboles suivants sont supportés :
Le signe @ peut être suivi par les caractères de « formatage » facultatifs suivants, dans cet ordre :
« # » force une image carrée sans distortion de la forme du widget.
+[1-9] or -[1-9] grossit ou diminue l'image.
[1-9] effectue une rotation d'un multiple de 45 degrés. « 6 » ne fait rien, les autres valeurs pointent dans la direction de cette touche sur un pavé numérique.
ion -- valeur retournée quand le bouton est coché.
ioff -- valeur retournée quand le bouton est décoché.
itype -- un nombre entier dénotant l'apparence du widget.
Plusieurs types de bouton sont possibles selon la valeur de l'argument itype :
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).
Voici l'apparence des boutons :
iwidth -- largeur du widget.
iheight -- hauteur du widget.
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.
Les boutons de type 2, 3 et 4 retournent (argument kout) la valeur contenue dans l'argument ion lorsqu'ils sont cochés et celle contenue dans l'argument ioff lorsqu'ils sont décochés.
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 du bouton lorsque l'on sauve ou que l'on récupère des instantanés (voir la section suivante). Non seulement FLbutton retourne une valeur, mais il peut aussi activer (ou programmer) un instrument fourni par l'utilisateur chaque fois le bouton est cliqué. On peut aussi ajouter 10 aux type de boutons "plastiques" (31 pour le type 1, 32 pour le type 2, etc).
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 p-champs de l'utilisateur. Noter que pour les boutons à deux états (bouton lumineux, bouton à cocher, bouton avec un cercle à cocher), l'instrument n'est activé que lorsque le l'état du bouton passe de décoché à coché (pas de coché à décoché).
Voici un exemple de l'opcode FLbutton. Il utilise les fichiers FLbutton.csd et beats.wav.
Exemple 312. Exemple de l'opcode FLbutton.
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> ; Using FLbuttons to create on screen controls for play, ; stop, fast forward and fast rewind of a sound file ; This example also makes use of a preset graphic for buttons. sr = 44100 kr = 44100 ksmps = 1 nchnls = 2 FLpanel "Buttons", 240, 400, 100, 100 ion = 0 ioff = 0 itype = 1 iwidth = 50 iheight = 50 ix = 10 iy = 10 iopcode = 0 istarttim = 0 idur = -1 ;Turn instruments on idefinitely ; Normal speed forwards gkplay, ihb1 FLbutton "@>", ion, ioff, itype, iwidth, iheight, ix, iy, iopcode, 1, istarttim, idur, 1 ; Stationary gkstop, ihb2 FLbutton "@square", ion,ioff, itype, iwidth, iheight, ix+55, iy, iopcode, 2, istarttim, idur ; Double speed backwards gkrew, ihb3 FLbutton "@<<", ion, ioff, itype, iwidth, iheight, ix + 110, iy, iopcode, 1, istarttim, idur, -2 ; Double speed forward gkff, ihb4 FLbutton "@>>", ion, ioff, itype, iwidth, iheight, ix+165, iy, iopcode, 1, istarttim, idur, 2 ; Type 1 gkt1, iht1 FLbutton "1-Normal Button", ion, ioff, 1, 200, 40, ix, iy + 65, -1 ; Type 2 gkt2, iht2 FLbutton "2-Light Button", ion, ioff, 2, 200, 40, ix, iy + 110, -1 ; Type 3 gkt3, iht3 FLbutton "3-Check Button", ion, ioff, 3, 200, 40, ix, iy + 155, -1 ; Type 4 gkt4, iht4 FLbutton "4-Round Button", ion, ioff, 4, 200, 40, ix, iy + 200, -1 ; Type 21 gkt5, iht5 FLbutton "21-Plastic Button", ion, ioff, 21, 200, 40, ix, iy + 245, -1 ; Type 22 gkt6, iht6 FLbutton "22-Plastic Light Button", ion, ioff, 22, 200, 40, ix, iy + 290, -1 ; Type 23 gkt7, iht7 FLbutton "23-Plastic Check Button", ion, ioff, 23, 200, 40, ix, iy + 335, -1 FLpanelEnd FLrun ; Ensure that only 1 instance of instr 1 ; plays even if the play button is clicked repeatedly insnum = 1 icount = 1 maxalloc insnum, icount instr 1 asig diskin2 "beats.wav", p4, 0, 1 outs asig, asig endin instr 2 turnoff2 1, 0, 0 ;Turn off instr 1 turnoff ;Turn off this instrument endin </CsInstruments> <CsScore> ; Real-time performance for 1 hour. f 0 3600 e </CsScore> </CsoundSynthesizer>