| Dear list,
Reading a few responses in the Lettuce Feature Requests thread, I would
like to inquire to this list about how it might be possible to use a
high level scripting language like Python or Tcl to convert XML tags to
Csound UDO's.
The reason I ask is because I've been working with the JazzMutant Lemur
control surface(1) and I find that because of the open ended nature of
what you can name the OSC cues coupled with the fact that the
JazzEditor application generates XML directly for the interface, I can
see a definite usefulness in some kind of script that does this
conversion.
As a bonus, such a script could be easily adaptable for an application
like Lettuce, MacCsound or Cecilia that also use custom XML flags to
define behavior.
As an example, this Lemur interface(2) uses a tag and . Ideally I would want
whatever the class variable is to become an OSClisten cue like this
kk OSClisten iport, "/somename.parameter", "fffff", kindefinite, klist,
kdelimited, kby, kcommas
Here's a complete Csound example(3) that works with the previously
discussed Lemur interface XML file(2).
Any help is appreciated!
-David
(1) http://www.jazzmutant.com/lemur_overview.php
(2)
(3)
sr = 44100
kr = 441
ksmps = 100
nchnls = 2
zakinit 2, 32
giport OSCinit 47120
ga1 init 0
ga2 init 0
itmp ftgen 1, 0, 16384, 10, 1, 0.5, 0.333333
itmp ftgen 2, 0, 16384, 10, 1, 0.5
;// multiball with 10 balls
opcode lemur_multiball, kkkkkkkkkkkkkkkkkkkk, 0
kx1 init 0
kx2 init 0
kx3 init 0
kx4 init 0
kx5 init 0
kx6 init 0
kx7 init 0
kx8 init 0
kx9 init 0
kx10 init 0
ky1 init 0
ky2 init 0
ky3 init 0
ky4 init 0
ky5 init 0
ky6 init 0
ky7 init 0
ky8 init 0
ky9 init 0
ky10 init 0
kxe OSClisten giport, "/Multiball/x", "ffffffffff", kx1, kx2, kx3,
kx4, kx5, kx6,\
kx7, kx8, kx9, kx10
kye OSClisten giport, "/Multiball/y", "ffffffffff", ky1, ky2, ky3,
ky4, ky5, ky6,\
ky7, ky8, ky9, ky10
xout kx1, ky1, kx2, ky2, kx3, ky3, kx4, ky4, kx5, ky5, kx6, ky6, kx7,
ky7, kx8, ky8, kx9, ky9, kx10, ky10
endop
;//
/*--- ---*/
instr 1
kx1, ky1,\
kx2, ky2,\
kx3, ky3,\
kx4, ky4,\
kx5, ky5,\
kx6, ky6,\
kx7, ky7,\
kx8, ky8,\
kx9, ky9,\
kx10, ky10 lemur_multiball
zkw kx1, 1
zkw ky1, 2
zkw kx2, 3
zkw ky2, 4
zkw kx3, 5
zkw ky3, 6
zkw kx4, 7
zkw ky4, 8
zkw kx5, 9
zkw ky5, 10
zkw kx6, 11
zkw ky6, 12
zkw kx7, 13
zkw ky7, 14
zkw kx8, 15
zkw ky8, 16
zkw kx9, 17
zkw ky9, 18
zkw kx10, 19
zkw ky10, 20
endin
/*--- ---*/
instr 2
kx1 zkr 1
ky1 zkr 2
kx2 zkr 3
ky2 zkr 4
kx3 zkr 5
ky3 zkr 6
kx4 zkr 7
ky4 zkr 8
kx5 zkr 9
ky5 zkr 10
aosc1 oscil 10000, 440*(2^(-12/12)), 1
aosc2 oscil 10000, 440*(2^(-7/12)), 1
aosc3 oscil 10000, 440*(2^(-5/12)), 1
aosc4 oscil 10000, 440*(2^(-2/12)), 1
aosc5 oscil 10000, 440*(2^(2/12)), 1
aosc1 = aosc1 * ky1
aosc2 = aosc2 * ky2
aosc3 = aosc3 * ky3
aosc4 = aosc4 * ky4
aosc5 = aosc5 * ky5
aosc1 = aosc1 * (1-kx1)
aosc2 = aosc2 * (1-kx2)
aosc3 = aosc3 * (kx3)
aosc4 = aosc4 * (kx4)
aosc5 = aosc5 * (1-kx5)
amixl = aosc1 + aosc2 + aosc5
amixr = aosc3 + aosc4
ga1 = ga1 + (amixl/1.618)
ga2 = ga2 + (amixr/1.618)
outs amixl, amixr
zkcl 1, 10
endin
/*--- ---*/
instr 3
kx6 zkr 11
ky6 zkr 12
kx7 zkr 13
ky7 zkr 14
kx8 zkr 15
ky8 zkr 16
kx9 zkr 17
ky9 zkr 18
kx10 zkr 19
ky10 zkr 20
aosc1 oscil 10000, cpspch(8.00)*(2^(-12/12)), 2
aosc2 oscil 10000, cpspch(8.00)*(2^(-7/12)), 2
aosc3 oscil 10000, cpspch(8.00)*(2^(-5/12)), 2
aosc4 oscil 10000, cpspch(8.00)*(2^(-2/12)), 2
aosc5 oscil 10000, cpspch(8.00)*(2^(2/12)), 2
aosc1 = aosc1 * ky6
aosc2 = aosc2 * ky7
aosc3 = aosc3 * ky8
aosc4 = aosc4 * ky9
aosc5 = aosc5 * ky10
aosc1 = aosc1 * (1-kx6)
aosc2 = aosc2 * (1-kx7)
aosc3 = aosc3 * (kx8)
aosc4 = aosc4 * (kx9)
aosc5 = aosc5 * (1-kx10)
amixl = aosc1 + aosc2 + aosc5
amixr = aosc3 + aosc4
ga1 = ga1 + (amixl/1.618)
ga2 = ga2 + (amixr/1.618)
outs amixl, amixr
zkcl 11, 20
endin
/*--- ---*/
instr 25
ail buthp ga1, 222
a1l buthp ail, 222
air buthp ga2, 222
a1r buthp air, 222
al, ar reverbsc a1l, a1r, 0.89, 22050
outs al, ar
ga1 = 0
ga2 = 0
endin
/*--- ---*/
i1 0 3600
i2 0 3600
i3 0 3600
i25 0 3600
e
|