<CsoundSynthesizer>
<CsOptions>

-+Y

</CsOptions>
<CsInstruments>

sr      =       100
kr      =       100
ksmps   =       1
nchnls  =       1

	GLfps	30, .5
	GLpanel	"OpenGL panel", 512, 512
	GLpanel_end
	FLrun

#include "OpenGL.h"

ginpoint	=	18
gincp	=	17

gi1	ftgen	1,0,256,19,1,1,0,1
gi10	ftgen	10,0,256,10,1

giCOL1	ftgen	21,0,-64, -2,   	.2,.6,.3,	.2,.6,.3,  .8,.3,.2,   .2,.1,.7,  .2,.6,.5,\
					.2,.0,.3,  .8,.3,.2,   .2,.3,.7,  .2,.6,.5,\
					.2,.6,.3,  .8,.3,.2,   .2,.3,.7,  .2,.6,.5,\
					.2,.6,.3,  .8,.0,.2,   .2,.0,.7,  .2,.0,.5,\
					.2,.2,.3,  .8,.3,.2,   .2,.1,.7,  .2,.6,.5,  .2,.6,.3

giCOL2	ftgen	38,0,-64, -2,   	.1,.3,.3,	.2,.2,.5  .8,.3,.8,   .5,.1,.1,  .8,.6,.1,\
					.1,.4,.6,  .8,.3,.8,   .2,.3,.9,  .2,.6,.1,\
					.2,.2,.8,  .1,.2,.3,   .8,.3,.1,  .5,.6,.1,\
					.8,.2,.3,  .8,.0,.4,   .2,.8,.1,  .1,.9,.5,\
					.2,.2,.9,  .1,.8,.2,   .1,.9,.7,  .2,.1,.9,  .9,.1,.3

giCOL	ftgen	35,0,-64,-2,	0


giPNT	ftgen	20,0,-ginpoint*3,-2,   -1.5, 2.0, 0,   -0.75, 2.0, 0,   -0.75, 1.38, 0,   -0.5, 1.25, 0,\
				   0.88, 1.12, 0,   1.0, 0.62, 0,   1.12, 0.1, 0,    0.5, -0.5, 0,\
				   0.2, -1.12, 0,   0.3, -1.5, 0,   -0.25, -1.45, 0,   -1.06, -0.3, 0,\
				   -1.38, -0.3, 0,   -1.65, -0.6, 0,   -2.5, 0.5, 0,   -1.5, 0.5, 0,\
				   -1.5, 2.0, 0,   -0.75, 2.0, 0

giBORDER1	ftgen	30,0,-gincp*2,-2,      	-0.75, 2.0,    -0.75, 1.38,   -0.5, 1.25,   0.88, 1.12,   \
					1.0, 0.62,     1.12, 0.1,     0.5, -0.5,    0.2, -1.12, \
					0.3, -1.5,     -0.25, -1.45,   -1.06, -0.3, -1.38, -0.3,\
					-1.65, -0.6,   -2.5, 0.5,     -1.5, 0.5,    -1.5, 2.0,   -0.75, 2.0

giBORDER	ftgen	32,0,256,-2,	0
giNORMAL	ftgen	31,0,-gincp*2,-2,	0

gleBuildNormals	giNORMAL, giBORDER1, gincp*2


giTRANS1	ftgen	36,0,-ginpoint*3*2,-2,	1,0,0,    0,1,0,\
					.5,0,0,   0,.5,0,\
					2,0,0,    0,2,0,\
					.5,0,0,   0,2,0,\
					.1,0,0,   0,.1,0,\
					1,0,1,    0,1,1,\
					1,0,4,    1,1,1,\
					1,0,1,    0,0,.2,\
					.3,.3.3   .2,.1,.2\
					.5,0,0,   0,.5,0,\
					2,0,0,    0,2,0,\
					.5,0,0,   0,2,0,\
					.1,0,0,   0,.1,0,\
					1,0,1,    0,1,1,\
					1,0,4,    1,1,1,\
					1,0,1,    0,0,.2,\
					.5,0,0,   0,.5,0,\
					1,0,0,    0,1,0,\

giTRANS2	ftgen	37,0,-ginpoint*3*2,-2,	1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\
					1,0,0,    0,1,0,\

giTRANS		ftgen	39,0,-ginpoint*3*2,-2,	0
	
giJOIN	ftgen	22,0,16, -2,	$TUBE_NORM_FACET + $TUBE_JN_ROUND + $TUBE_JN_CAP,\
				$TUBE_NORM_FACET + $TUBE_JN_ANGLE + $TUBE_JN_CAP,\
				$TUBE_NORM_FACET + $TUBE_JN_CUT   + $TUBE_JN_CAP,\
				$TUBE_NORM_FACET + $TUBE_JN_RAW   + $TUBE_JN_CAP

	glEnable	$GL_DEPTH_TEST	
	glEnable	$GL_CULL_FACE	
	glEnable	$GL_LIGHTING
	glEnable	$GL_LIGHT0
	glEnable	$GL_COLOR_MATERIAL
	glEnable	$GL_NORMALIZE

	glFrontFace $GL_CW	
	glMaterial $GL_SPECULAR, .8,.8,.8,1
	GLshininess 50
;	glShadeModel $GL_FLAT
	glColor3	1,1,1

	gleSetJoinStyle	$TUBE_NORM_EDGE + $TUBE_JN_ROUND + $TUBE_JN_CAP
	gleTextureMode	$GLE_TEXTURE_ENABLE + $GLE_TEXTURE_VERTEX_FLAT
GLinsert_i $GL_INIT

	glMatrixMode	$GL_PROJECTION 
	glLoadIdentity
	gluPerspective	60,.1,200
	glMatrixMode	$GL_MODELVIEW 
	glLoadIdentity
	glClearColor	0,0,0,1
GLinsert_i $GL_NOT_VALID
	glClear	$GL_COLOR_BUFFER_BIT + $GL_DEPTH_BUFFER_BIT 

GLinsert_i 1



;///////////////////////////////////////////////////
	instr	1
;///////////////////////////////////////////////////


k1	oscili	1,.0212,1,.75
k2	oscili	1,.02113456,1
k3	oscili	1,.02105,1
k3b	oscili	4.5,.043215,1,.25
k4	oscili	1,.2,1
k5	oscili	1,2,1
k6	oscili	1,.1,gi10
k7	oscili	1,.05,1
kph	phasor	.01
kJoin	tab	kph*3.99, giJOIN 
	gleSetJoinStyle	t(kJoin)

;	GLvphaseseg 	kphase, ioutab, ielem,   itab1,idist1,itab2 [,idist2,itab3,...,idistN-1,itabN] 
	GLvphaseseg 	t(k5),     giCOL, ginpoint*3, giCOL1,1,giCOL2
;	gleSetNumSides	3 + kph * 20
	GLvphaseseg 	t(k7),     giTRANS, ginpoint*3*2, giTRANS1,1,giTRANS2


	GLvcopy		giBORDER,giBORDER1, gincp*2
	GLvmult		giBORDER, .2+.5*t(k4), gincp*2

	glLoadIdentity
	glTranslate	0,0,-5

	glPushMatrix

	glRotate		t(k1)*360,0,1,0
	glRotate		t(k2)*360,1,0,0
	glRotate		t(k3)*360,0,0,1

	gleSuperExtrusion	gincp, giBORDER, giNORMAL, t(k6),1-t(k6),t(k3), ginpoint, giPNT, giCOL,giTRANS

	glPopMatrix

GLinsert	1.1
	
	endin



</CsInstruments>
<CsScore>

i1 0 3600 

</CsScore>
</CsoundSynthesizer>
