FLknob
Précédent | Opcodes et opérateurs de l'orchestre | Suivant

## FLknob

FLknob — Un opcode de widget FLTK qui crée un bouton rotatif.

## Description

Un opcode de widget FLTK qui crée un bouton rotatif.

## Syntaxe

    kout, ihandle FLknob "label", imin, imax, iexp, itype, idisp, iwidth, \
          ix, iy [, icursorsize]

## Initialisation

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 FLknob 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.

imin -- valeur minimale de l'intervalle de sortie.

imax -- valeur maximale de l'intervalle de sortie.

iexp -- un nombre entier indiquant le comportement du valuateur :

- 0 = la sortie est linéaire

- -1 = la sortie est exponentielle

Tout autre nombre positif pour iexpx indique le numéro d'une table existante lue par indexation avec interpolation linéaire. Un numéro de table négatif supprime l'interpolation.

| IMPORTANT !
Noter que les tables utilisées par les valuateurs 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 fait, 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.

itype -- un nombre entier indiquant l'apparence du valuateur.

L'argument itype accepte les valeurs suivantes :

- 1 - un bouton rotatif 3D

- 2 - un bouton à secteur circulaire

- 3 - un bouton comme une horloge

- 4 - un bouton rotatif plat

Un bouton rotatif 3D.

Un bouton à secteur circulaire.

Un bouton comme une horloge.

Un bouton rotatif plat.

idisp -- un identifiant retourné par une instance précédente de l'opcode FLvalue pour afficher la valeur courante du valuateur dans le widget FLvalue. Si l'on ne veut pas utiliser cette possibilité d'affichage des valeurs courantes, il faut donner à cet identifiant un nombre négatif.

iwidth -- largeur du widget.

iheight -- hauteur du widget.

ix -- position horizontale du coin supérieur gauche du valuateur, relative au coin supérieur gauche de la fenêtre correspondante (exprimée en pixels).

iy -- position verticale du coin supérieur gauche du valuateur, relative au coin supérieur gauche de la fenêtre correspondante (exprimée en pixels).

icursorsize (facultatif) -- Si itype de FLknob vaut 1 (bouton 3D), ce paramètre contrôle la taille du curseur du bouton.

## Exécution

kout -- valeur en sortie.

FLknob met un bouton rotatif dans le conteneur correspondant.

## Exemples

Voici un exemple de l'opcode FLknob. Il utilise le fichier FLknob.csd.

Exemple 283. Exemple de l'opcode FLknob.

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 FLknob.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    ; A sine with oscillator with flknob controlled frequency
    sr = 44100
    kr = 441
    ksmps = 100
    nchnls = 1

    FLpanel "Frequency Knob", 900, 400, 50, 50
        ; Minimum value output by the knob
        imin = 200
        ; Maximum value output by the knob
        imax = 5000
        ; Logarithmic type knob selected
        iexp = -1
        ; Knob graphic type (1=3D knob)
        itype = 1
        ; Display handle (-1=not used)
        idisp = -1
        ; Width of the knob in pixels
        iwidth = 70
        ; Distance of the left edge of the knob
        ; from the left edge of the panel
        ix = 70
        ; Distance of the top edge of the knob
        ; from the top of the panel
        iy = 125

        gkfreq, ihandle FLknob "Frequency", imin, imax, iexp, itype, idisp, iwidth, ix, iy
    ; End of panel contents
    FLpanelEnd
    ; Run the widget thread!
    FLrun

    ; Set the widget's initial value
    FLsetVal_i 300, ihandle

    instr 1
        iamp = 15000
        ifn = 1
        asig oscili iamp, gkfreq, ifn
        out asig
    endin

    </CsInstruments>
    <CsScore>

    ; Function table that defines a single cycle
    ; of a sine wave.
    f 1 0 1024 10 1

    ; Instrument 1 will play a note for 1 hour.
    i 1 0 3600
    e

    </CsScore>
    </CsoundSynthesizer>

Voici un autre exemple de l'opcode FLknob, montrant les différents styles de boutons ainsi que l'usage de FLvalue pour afficher la valeur d'un bouton. Il utilise le fichier FLknob-2.csd.

Exemple 284. Exemple plus complexe de l'opcode FLknob.

    <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 FLknob.wav -W ;;; for file output any platform
    </CsOptions>
    <CsInstruments>

    sr = 44100
    kr = 441
    ksmps = 100
    nchnls = 1

    ;By Andres Cabrera 2007
    FLpanel "Knob Types", 330, 230, 50, 50
        ; Distance of the left edge of the knob
        ; from the left edge of the panel
        ix = 20
        ; Distance of the top edge of the knob
        ; from the top of the panel
        iy = 20

        ;Create boxes that display a widget's value
        ihandleA FLvalue "A", 60, 20, ix + 130, iy + 110
        ihandleB FLvalue "B", 60, 20, ix + 220, iy + 110
        ihandleC FLvalue "C", 60, 20, ix + 130, iy + 160
        ihandleD FLvalue "D", 60, 20, ix + 220, iy + 160

        ; The foru types of FLknobs
        gkdummy1, ihandle1 FLknob "Type 1", 200, 5000, -1, 1, ihandleA, 70, ix, iy, 90
        gkdummy2, ihandle2 FLknob "Type 2", 200, 5000, -1, 2, ihandleB, 70, ix + 100, iy
        gkdummy3, ihandle3 FLknob "Type 3", 200, 5000, -1, 3, ihandleC, 70, ix + 200, iy
        gkdummy4, ihandle4 FLknob "Type 4", 200, 5000, -1, 4, ihandleD, 70, ix , iy + 100
    ; End of panel contents
    FLpanelEnd
    ; Run the widget thread!
    FLrun

    ; Set the color of widgets
    FLsetColor 20, 23, 100, ihandle1
    FLsetColor 0, 123, 100, ihandle2
    FLsetColor 180, 23, 12, ihandle3
    FLsetColor 10, 230, 0, ihandle4

    FLsetColor2 200, 230, 0, ihandle1
    FLsetColor2 200,0 ,123 , ihandle2
    FLsetColor2 180, 180, 100, ihandle3
    FLsetColor2 180, 23, 12, ihandle4

    ; Set the initial value of the widget
    FLsetVal_i 300, ihandle1
    FLsetVal_i 1000, ihandle2

    instr 1
    ; Nothing here for now
    endin

    </CsInstruments>
    <CsScore>

    f 0 3600   ;Dumy table to make csound wait for realtime events

    e

    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

FLcount, FLjoy, FLroller, FLslider, FLtext

## Crédits

Auteur : Gabriel Maldonado

Nouveau dans la version 4.22

Exemple écrit par Iain McCurdy, édité par Kevin Conder.

Précédent | Niveau supérieur | Suivant
FLkeyIn | Sommaire | FLlabel