Csound Csound-dev Csound-tekno Search About

XML to Csound

Date2006-05-01 16:39
FromDavid Akbari
SubjectXML to Csound
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