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

## pyexec Opcodes

pyexec — Exécute un script depuis un fichier au taux-k ou au taux-i (suffixe i).

## Syntaxe

    pyexec "filename"

    pyexeci "filename"

    pylexec "filename"

    pylexeci "filename"

    pyexect ktrigger, "filename"

    plyexect ktrigger, "filename"

## Description

Exécute un script depuis un fichier au taux-k ou au taux-i (suffixe i).

Ce n'est pas la même chose que d'appeler le script avec la commande `system()`, car le code est exécuté par l'interpréteur embarqué.

Le code contenu dans le fichier spécifié est exécuté dans l'environnement global pour les opcodes pyexec et pyexeci et dans l'environnement privé pour les opcodes pylexec et pylexeci.

Ces opcodes n'effectuent aucune transmission de message. Cependant, comme leurs instructions ont accès aux espaces de noms globaux et privés, ils peuvent interagir avec des objets préalablement créés dans ces environnements.

Les versions « locales » des opcodes pyexec sont utiles lorsque le code exécuté par différentes instances d'un instrument ne doit pas interagir.

## Exemple du groupe d'opcodes pyexec

Exemple 848. Orchestre (pyexec.orc)

    sr=44100
    kr=4410
    ksmps=10
    nchnls=1

    ;Si vous n'exécutez pas CsoundAC, la ligne suivante est
    ;nécessaire pour initialiser l'interpréteur Python
    ;pyinit

            pyruni "import random"

            pyexeci "pyexec1.py"

    instr 1

            pyexec          "pyexec2.py"

            pylexeci        "pyexec3.py"
            pylexec         "pyexec4.py"

    endin

Exemple 849. Partition (pyexec.sco)

    i1 0 0.01
    i1 0 0.01

Exemple 850. Le script pyexec1.py

    import time, os

    print
    print "Bienvenue dans Csound !"

    try:
        s = ', %s?' % os.getenv('USER')
    except:
        s = '?'

    print 'Quel son voulez-vous écouter aujourd'hui, %s ?' % s
    answer = raw_input()

Exemple 851. Le script pyexec2.py

    print 'votre réponse est "%s"' % answer

Exemple 852. Le script pyexec3.py

    message = 'un nombre aléatoire privé : %f' % random.random()

Exemple 853. Le script pyexec4.py

    print message

Si j'exécute cet exemple sur ma machine, j'obtiens quelque chose comme ceci :

    Using ../../csound.xmg
    Csound Version 4.19 (Mar 23 2002)
    Embedded Python interpreter version 2.2
    orchname:  pyexec.orc
    scorename: pyexec.sco
    sorting score ...
            ... done
    orch compiler:
    11 lines read
            instr   1
    Csound Version 4.19 (Mar 23 2002)
    displays suppressed

    Bienvenue dans Csound !
    Quel son voulez-vous écouter aujourd'hui, maurizio ?

je réponds alors

    un son

Csound continue l'exécution normale

    votre réponse est "un son"
    un nombre aléatoire privé : 0.884006
    new alloc for instr 1:
    votre réponse est "un son"
    un nombre aléatoire privé : 0.884006
    votre réponse est "un son"
    un nombre aléatoire privé : 0.889868
    votre réponse est "un son"
    un nombre aléatoire privé : 0.884006
    votre réponse est "un son"
    un nombre aléatoire privé : 0.889868
    votre réponse est "un son"
    un nombre aléatoire privé : 0.884006
    votre réponse est "un son"
    ...

Dans le même instrument un message est créé dans l'espace de noms privé et affiché, apparaissant différent pour chaque instance.

## Crédits

Copyright (c) 2002 Maurizio Umberto Puxeddu. Tous droits réservés. Certaines parties, copyright (c) 2004 et 2005 Michael Gogins. Ce document a été mis à jour le 25 juillet 2004 et le 1er février 2005 par Michael Gogins.

Précédent | Niveau supérieur | Suivant
pyeval Opcodes | Sommaire | pyinit Opcodes