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

Opcode du greffon py. Ce greffon se trouve dans le répertoire des greffons et il doit être installé séparément. Le répertoire des greffons est ici : https://github.com/csound/plugins

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 862. 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 863. Partition (pyexec.sco)

i1 0 0.01
i1 0 0.01

Exemple 864. 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 865. Le script pyexec2.py

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

Exemple 866. Le script pyexec3.py

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

Exemple 867. 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.