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

## FLsavesnap

FLsavesnap — Sauvegarde dans un fichier tous les instantanés actuellement créés.

## Description

FLsavesnap sauvegarde dans un fichier tous les instantanés actuellement créés (c'est-à-dire la banque de mémoire en entier).

## Syntaxe

    FLsavesnap "filename" [, igroup]

## Initialisation

« filename » -- une chaîne de caractères entre guillemets correspondant à un fichier dans lequel sauvegarder une banque d'instantanés.

igroup -- (facultatif) un nombre entier faisant référence à un groupe de widgets en relation avec un instantané. Cela permet de lire/écrire, ou charger/sauvegarder l'état d'un sous-ensemble de valuateurs. La valeur par défaut est zéro qui fait référence au premier groupe. Le numéro de groupe est déterminé par l'opcode FLsetSnapGroup.

| Note
Le paramètre igroup n'a pas encore été complètement implémenté dans la version actuelle de Csound. Prière de ne pas s'y fier.

## Exécution

FLsavesnap sauvegarde tous les instantanés actuellement créés (c'est-à-dire la banque de mémoire en entier) dans un fichier dont le nom est filename. Comme le fichier est un fichier texte, les valeurs des instantanés peuvent être modifiées manuellement dans un éditeur de texte. Le format des données du fichier est le suivant (pour le moment, ceci pouvant changer dans une prochaine version de Csound) :

    ----------- 0 -----------
    FLvalue 0 0 1 0 ""
    FLvalue 0 0 1 0 ""
    FLvalue 0 0 1 0 ""
    FLslider 331.946 80 5000 -1 "frequency of the first oscillator"
    FLslider 385.923 80 5000 -1 "frequency of the second oscillator"
    FLslider 80 80 5000 -1 "frequency of the third oscillator"
    FLcount 0 0 10 0 "this index must point to the location number where snapshot is stored"
    FLbutton 0 0 1 0 "Store snapshot to current index"
    FLbutton 0 0 1 0 "Save snapshot bank to disk"
    FLbutton 0 0 1 0 "Load snapshot bank from disk"
    FLbox 0 0 1 0 ""
    ----------- 1 -----------
    FLvalue 0 0 1 0 ""
    FLvalue 0 0 1 0 ""
    FLvalue 0 0 1 0 ""
    FLslider 819.72 80 5000 -1 "frequency of the first oscillator"
    FLslider 385.923 80 5000 -1 "frequency of the second oscillator"
    FLslider 80 80 5000 -1 "frequency of the third oscillator"
    FLcount 1 0 10 0 "this index must point to the location number where snapshot is stored"
    FLbutton 0 0 1 0 "Store snapshot to current index"
    FLbutton 0 0 1 0 "Save snapshot bank to disk"
    FLbutton 0 0 1 0 "Load snapshot bank from disk"
    FLbox 0 0 1 0 ""
    ----------- 2 -----------
    ..... etc...
    ----------- 3 -----------
    ..... etc...
    ---------------------------

Comme on peut le voir, chaque instantané contient plusieurs lignes. Chaque instantané est séparé du précédent et du suivant par une ligne de cette sorte :

"----------- Num d'instantané -----------"

Suivent plusieurs lignes contenant les données. Chacune de ces lignes correspond à un widget.

Le premier champ de chaque ligne est une chaîne de caractères sans guillemets contenant le nom de l'opcode correspondant au widget. Le second champ est un nombre exprimant la valeur courante d'un instantané. Dans la version actuelle, c'est le seul champ que l'on peut modifier manuellement. Les troisième et quatrième champs montrent les valeurs minimale et maximale pour ce valuateur. Le cinquième champ est un nombre spécial qui indique si le valuateur est linéaire (valeur 0), exponentiel (valeur -1), ou est indexé par une table avec interpolation des valeurs (numéro de table négatif) ou sans interpolation (numéro de table positif). Le dernier champ, une chaîne de caractères entre guillemets, contient l'étiquette du widget. La dernière ligne du fichier est toujours

"---------------------------"

.

Noter que FLvalue et FLbox ne sont pas des valuateurs et que leurs valeurs sont constantes, ne pouvant pas être modifées.

Pour économiser la mémoire, les widgets peuvent être groupés afin que les instantanés n'affectent qu'un groupe défini de widgets. L'opcode FLsetSnapGroup est utilisé pour spécifier le groupe de tous les widgets déclarés après lui jusqu'à la prochaine instruction FLsetSnapGroup.

## Exemples

Voici un exemple simple de sauvegarde d'un instantané FLTK. Il utilise le fichier FLsavesnap_simple.csd.

Exemple 293. Exemple de sauvegarde d'un instantané FLTK.

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
    -odac           -iadc    ;;;RT audio I/O
    </CsOptions>
    <CsInstruments>

    sr=48000
    ksmps=128
    nchnls=2

    ; Example by Hector Centeno and Andres Cabrera 2007

    ; giSWMtab4 ftgen 0, 0, 513, 21, 10, 1, .3
    ; giSWMtab4M ftgen 0, 0, 64, 7, 1, 50, 1

    FLpanel	"Snapshots", 530, 190, 40, 410, 3
        FLcolor  100, 118 ,140
        ivalSM1		 	FLvalue  "", 70, 20, 270, 20
        gksliderA, gislidSM1 	FLslider "Slider", -4, 4, 0, 3, ivalSM1, 250, 20, 20, 20
        itext1		 FLbox	  "store", 1, 1, 14, 50, 25, 355, 15
        itext2		 FLbox	  "load", 1, 1, 14, 50, 25, 415, 15
        gksnap, ibuttn1	 FLbutton "1", 1, 0, 11, 25, 25, 364, 45, 0, 3, 0, 3, 1
        gksnap, ibuttn2	 FLbutton "2", 1, 0, 11, 25, 25, 364, 75, 0, 3, 0, 3, 2
        gksnap, ibuttn3	 FLbutton "3", 1, 0, 11, 25, 25, 364, 105, 0, 3, 0, 3, 3
        gksnap, ibuttn4	 FLbutton "4", 1, 0, 11, 25, 25, 364, 135, 0, 3, 0, 3, 4

        gkload, ibuttn1	 FLbutton "1", 1, 0, 11, 25, 25, 424, 45, 0, 4, 0, 3, 1
        gkload, ibuttn2	 FLbutton "2", 1, 0, 11, 25, 25, 424, 75, 0, 4, 0, 3, 2
        gkload, ibuttn3	 FLbutton "3", 1, 0, 11, 25, 25, 424, 105, 0, 4, 0, 3, 3
        gkload, ibuttn4	 FLbutton "4", 1, 0, 11, 25, 25, 424, 135, 0, 4, 0, 3, 4

        ivalSM2		 	FLvalue  "", 70, 20, 270, 80
        gkknobA, gislidSM2 	FLknob "Knob", -4, 4, 0, 3, ivalSM2, 60, 120, 60
    FLpanelEnd
    FLsetVal_i 1, gislidSM1
    FLsetVal_i 1, gislidSM2
    FLrun

    	instr 1

    	endin

    instr 3 ; Save snapshot
    index init 0
    ipstno = p4
    Sfile sprintf "snapshot_simple.%d.snap", ipstno

    inumsnap, inumval  FLsetsnap index ;, -1, igroup
    FLsavesnap Sfile

    	endin

    instr 4 ;Load snapshot
    index init 0
    ipstno = p4
    Sfile sprintf "snapshot_simple.%d.snap", ipstno

    FLloadsnap Sfile
    inumload FLgetsnap index ;, igroup

    	endin

    </CsInstruments>
    <CsScore>
    f 0 3600

    e

    </CsScore>
    </CsoundSynthesizer>

Voici un autre exemple de sauvegarde d'instantané FLTK utilisant des groupes d'instantanés. Il utilise le fichier FLsavesnap.csd.

Exemple 294. Exemple de sauvegarde d'instantané FLTK utilisant des groupes d'instantanés.

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
    -odac           -iadc    ;;;RT audio I/O
    </CsOptions>
    <CsInstruments>

    sr=48000
    ksmps=128
    nchnls=2

    ; Example by Hector Centeno and Andres Cabrera 2007

    ; giSWMtab4 ftgen 0, 0, 513, 21, 10, 1, .3
    ; giSWMtab4M ftgen 0, 0, 64, 7, 1, 50, 1

    FLpanel	"Snapshots", 530, 350, 40, 410, 3
        FLcolor  100, 118 ,140
       FLsetSnapGroup  0
        ivalSM1		 	FLvalue  "", 70, 20, 270, 20
        ivalSM2			FLvalue  "", 70, 20, 270, 60
        ivalSM3			FLvalue  "", 70, 20, 270, 100
        ivalSM4			FLvalue  "", 70, 20, 270, 140
        gksliderA, gislidSM1 	FLslider "Slider A", -4, 4, 0, 3, ivalSM1, 250, 20, 20, 20
        gksliderB, gislidSM2 	FLslider "Slider B", 1, 10, 0, 3, ivalSM2, 250, 20, 20, 60
        gksliderC, gislidSM3 	FLslider "Slider C", 0, 1, 0, 3, ivalSM3, 250, 20, 20, 100
        gksliderD, gislidSM4 	FLslider "Slider D", 0, 1, 0, 3, ivalSM4, 250, 20, 20, 140
        itext1		 FLbox	  "store", 1, 1, 14, 50, 25, 355, 15
        itext2		 FLbox	  "load", 1, 1, 14, 50, 25, 415, 15
        itext3		 FLbox	  "Group 1", 1, 1, 14, 30, 145, 485, 15
        gksnap, ibuttn1	 FLbutton "1", 1, 0, 11, 25, 25, 364, 45, 0, 3, 0, 3, 1
        gksnap, ibuttn2	 FLbutton "2", 1, 0, 11, 25, 25, 364, 75, 0, 3, 0, 3, 2
        gksnap, ibuttn3	 FLbutton "3", 1, 0, 11, 25, 25, 364, 105, 0, 3, 0, 3, 3
        gksnap, ibuttn4	 FLbutton "4", 1, 0, 11, 25, 25, 364, 135, 0, 3, 0, 3, 4
        gkload, ibuttn1	 FLbutton "1", 1, 0, 11, 25, 25, 424, 45, 0, 4, 0, 3, 1
        gkload, ibuttn2	 FLbutton "2", 1, 0, 11, 25, 25, 424, 75, 0, 4, 0, 3, 2
        gkload, ibuttn3	 FLbutton "3", 1, 0, 11, 25, 25, 424, 105, 0, 4, 0, 3, 3
        gkload, ibuttn4	 FLbutton "4", 1, 0, 11, 25, 25, 424, 135, 0, 4, 0, 3, 4

        FLcolor  100, 140 ,118
       FLsetSnapGroup  1
        ivalSM5		 	FLvalue  "", 70, 20, 270, 190
        ivalSM6			FLvalue  "", 70, 20, 270, 230
        ivalSM7			FLvalue  "", 70, 20, 270, 270
        ivalSM8			FLvalue  "", 70, 20, 270, 310
        gkknobA, gislidSM5 	FLknob "Knob A", -4, 4, 0, 3, ivalSM5, 45, 10, 230
        gkknobB, gislidSM6 	FLknob "Knob B", 1, 10, 0, 3, ivalSM6, 45, 75, 230
        gkknobC, gislidSM7 	FLknob "Knob C", 0, 1, 0, 3, ivalSM7, 45, 140, 230
        gkknobD, gislidSM8 	FLknob "Knob D", 0, 1, 0, 3, ivalSM8, 45, 205, 230
        itext4		 FLbox	  "store", 1, 1, 14, 50, 25, 355, 185
        itext5		 FLbox	  "load", 1, 1, 14, 50, 25, 415, 185
        itext6		 FLbox	  "Group 2", 1, 1, 14, 30, 145, 485, 185
        gksnap, ibuttn1	 FLbutton "5", 1, 0, 11, 25, 25, 364, 215, 0, 3, 0, 3, 5
        gksnap, ibuttn2	 FLbutton "6", 1, 0, 11, 25, 25, 364, 245, 0, 3, 0, 3, 6
        gksnap, ibuttn3	 FLbutton "7", 1, 0, 11, 25, 25, 364, 275, 0, 3, 0, 3, 7
        gksnap, ibuttn4	 FLbutton "8", 1, 0, 11, 25, 25, 364, 305, 0, 3, 0, 3, 8
        gkload, ibuttn1	 FLbutton "5", 1, 0, 11, 25, 25, 424, 215, 0, 4, 0, 3, 5
        gkload, ibuttn2	 FLbutton "6", 1, 0, 11, 25, 25, 424, 245, 0, 4, 0, 3, 6
        gkload, ibuttn3	 FLbutton "7", 1, 0, 11, 25, 25, 424, 275, 0, 4, 0, 3, 7
        gkload, ibuttn4	 FLbutton "8", 1, 0, 11, 25, 25, 424, 305, 0, 4, 0, 3, 8
    FLpanelEnd
    FLsetVal_i 1, gislidSM1
    FLsetVal_i 1, gislidSM2
    FLsetVal_i 0, gislidSM3
    FLsetVal_i 0, gislidSM4
    FLsetVal_i 1, gislidSM5
    FLsetVal_i 1, gislidSM6
    FLsetVal_i 0, gislidSM7
    FLsetVal_i 0, gislidSM8
    FLrun

    	instr 1

    	endin

    instr 3 ; Save snapshot
    index init 0
    ipstno = p4
    igroup = 0
    Sfile sprintf "PVCsynth.%d.snap", ipstno
    if ipstno > 4 then
      igroup = 1
    endif

      inumsnap, inumval  FLsetsnap index , -1, igroup
    FLsavesnap Sfile

    	endin

    instr 4 ;Load snapshot
    index init 0
    ipstno = p4
    igroup = 0
    Sfile sprintf "PVCsynth.%d.snap", ipstno
    if ipstno > 4 then
      igroup = 1
    endif

    FLloadsnap Sfile
      inumload FLgetsnap index , igroup

    	endin

    </CsInstruments>
    <CsScore>
      ;Dummy table for FLgetsnap
    ; f 1 0 1024 10 1
    f 0 3600

    e

    </CsScore>
    </CsoundSynthesizer>

## Voir aussi

FLgetsnap, FLloadsnap, FLsetSnapGroup, FLrun, FLsetsnap, FLupdate

## Crédits

Auteur : Gabriel Maldonado

Nouveau dans la version 4.22

Précédent | Niveau supérieur | Suivant
FLrun | Sommaire | FLscroll