Csound Csound-dev Csound-tekno Search About

[Csnd] DrumSequencerVariableLength.csd

Date2017-10-09 12:27
Fromjpff
Subject[Csnd] DrumSequencerVariableLength.csd
Here is a version t--9.Oct.2017mysteryboxofun
Content-Type: text/plain; charset=us-ascii; name="DrumSequencerVariableLength.csd"
Content-Description: ~/Sourceforge/csound/Mccurdy/RealtimeScoreGeneration/DrumSequencerVariableLength.csd
Content-Transfer-Encoding: quoted-printable

DrumSequencerVariableLength.csd=0D
Written by Iain McCurdy, 2008=0D
=0D
=0D
=0D
=0D
-odevaudio -dm0=0D
=0D
=0D
=0D
=0D
sr 		=3D 	44100	;SAMPLE RATE=0D
ksmps 		=3D 	8	;NUMBER OF AUDIO SAMPLES IN EACH CONTROL CYCLE=0D
nchnls 		=3D 	2	;NUMBER OF CHANNELS (2=3DSTEREO)=0D
0dbfs		=3D	1	;MAXIMUM AMPLITUDE REGARDLESS OF BIT DEPTH=0D
=0D
;FLTK INTERFACE CODE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=0D
FLcolor	255,255,255,0,0,0=0D
		FLpanel	" ",1045, 335, 0, 0=0D
=0D
;BUTTONS                                             			ON | OFF | TYPE |=
 WIDTH | HEIGHT | X | Y | OPCODE |  I  | STARTTIM | IDUR |  p4=0D
gkOnOff,ihOnOff	FLbutton	"On/Off",				1,    0,     2,    100,     30,    =
0,  0,   0,        1,     0,       -1=0D
FLsetColor2	255, 255, 50, ihOnOff		;SET SECONDARY COLOUR TO YELLOW=0D
gkRndPitches,ihRndPitches	FLbutton	"Randomize!",		1,    0,     1,    100,=
     30,  200,  0,   0,      102,     0,       0.001=0D
=0D
;COUNTERS						MIN | MAX | STEP1 | STEP2 | TYPE | WIDTH | HEIGHT | POS_X =
| POS_Y | IOPCODE=0D
gkTempo,ihTempo 	FLcount		"Tempo",	1,    999,    1,     10,     21,   100=
,     20,     100,      0,      -1=0D
=0D
;BORDERS				ITYPE, IFONT, ISIZE, IWIDTH, IHEIGHT, IX, IY=0D
ih		 	FLbox  	" ", 	5,        9,    15,    80,    183,     0, 48		;DRAW A=
 BOX AROUND EACH GROUP OF 4 BUTTONS=0D
ih		 	FLbox  	" ", 	5,        9,    15,    80,    183,    80, 48         =
   ;DRAW A BOX AROUND EACH GROUP OF 4 BUTTONS=0D
ih		 	FLbox  	" ", 	5,        9,    15,    80,    183,   160, 48         =
   ;DRAW A BOX AROUND EACH GROUP OF 4 BUTTONS=0D
ih		 	FLbox  	" ", 	5,        9,    15,    80,    183,   240, 48         =
   ;DRAW A BOX AROUND EACH GROUP OF 4 BUTTONS=0D
ih		 	FLbox  	" ", 	5,        9,    15,    80,    183,   320, 48         =
   ;DRAW A BOX AROUND EACH GROUP OF 4 BUTTONS=0D
ih		 	FLbox  	" ", 	5,        9,    15,    80,    183,   400, 48         =
   ;DRAW A BOX AROUND EACH GROUP OF 4 BUTTONS=0D
ih		 	FLbox  	" ", 	5,        9,    15,    80,    183,   480, 48         =
   ;DRAW A BOX AROUND EACH GROUP OF 4 BUTTONS=0D
ih		 	FLbox  	" ", 	5,        9,    15,    80,    183,   560, 48         =
   ;DRAW A BOX AROUND EACH GROUP OF 4 BUTTONS=0D
=0D
;TEXT BOXES						TYPE | FONT | SIZE | WIDTH | HEIGHT | X | Y=0D
ih		 	FLbox  	"Gain",			1,      5,     13,     90,     12,   648,  7=0D
ih		 	FLbox  	"Transpose",		1,      5,     13,     90,     12,   848, 35=0D=

ih		 	FLbox  	"Delay (0-0.1 s.)",	1,      5,     13,     90,     12,   94=
8, 30=0D
ih		 	FLbox  	"Cycle Range",		1,      5,     13,     90,     12,   748, 3=
5=0D
ih		 	FLbox  	"1",			1,      5,     13,      4,     12,     4, 35=0D
ih		 	FLbox  	"2",			1,      5,     13,      4,     12,    84, 35=0D
ih		 	FLbox  	"3",			1,      5,     13,      4,     12,   164, 35=0D
ih		 	FLbox  	"4",			1,      5,     13,      4,     12,   244, 35=0D
ih		 	FLbox  	"5",			1,      5,     13,      4,     12,   324, 35=0D
ih		 	FLbox  	"6",			1,      5,     13,      4,     12,   404, 35=0D
ih		 	FLbox  	"7",			1,      5,     13,      4,     12,   484, 35=0D
ih		 	FLbox  	"8",			1,      5,     13,      4,     12,   564, 35=0D
=0D
;				            			MIN  | MAX | EXP | TYPE | DISP | WIDTH | HEIGHT | X |=
 Y=0D
gkMasterGain, ihMasterGain	FLslider 	"Master",	0,      1,    0,    3,    =
 -1,   100,      12,  642,  24=0D
=0D
iy	init	50=0D
=0D
#define	ROW(COUNT)	=0D
#=0D
gk$COUNT,gih$COUNT._1	FLbutton	" ",			1,    0,      4,     20,     20,   =
   2, iy,  0,     9+$COUNT,    0,        0,     1=0D
gk$COUNT,gih$COUNT._2	FLbutton	" ",			1,    0,      4,     20,     20,   =
  22, iy,  0,     9+$COUNT,    0,        0,     2=0D
gk$COUNT,gih$COUNT._3	FLbutton	" ",			1,    0,      4,     20,     20,   =
  42, iy,  0,     9+$COUNT,    0,        0,     3=0D
gk$COUNT,gih$COUNT._4	FLbutton	" ",			1,    0,      4,     20,     20,   =
  62, iy,  0,     9+$COUNT,    0,        0,     4=0D
gk$COUNT,gih$COUNT._5	FLbutton	" ",			1,    0,      4,     20,     20,   =
  82, iy,  0,     9+$COUNT,    0,        0,     5=0D
gk$COUNT,gih$COUNT._6	FLbutton	" ",			1,    0,      4,     20,     20,   =
 102, iy,  0,     9+$COUNT,    0,        0,     6=0D
gk$COUNT,gih$COUNT._7	FLbutton	" ",			1,    0,      4,     20,     20,   =
 122, iy,  0,     9+$COUNT,    0,        0,     7=0D
gk$COUNT,gih$COUNT._8	FLbutton	" ",			1,    0,      4,     20,     20,   =
 142, iy,  0,     9+$COUNT,    0,        0,     8=0D
gk$COUNT,gih$COUNT._9	FLbutton	" ",			1,    0,      4,     20,     20,   =
 162, iy,  0,     9+$COUNT,    0,        0,     9=0D
gk$COUNT,gih$COUNT._10	FLbutton	" ",			1,    0,      4,     20,     20,  =
  182, iy,  0,     9+$COUNT,    0,        0,    10=0D
gk$COUNT,gih$COUNT._11	FLbutton	" ",			1,    0,      4,     20,     20,  =
  202, iy,  0,     9+$COUNT,    0,        0,    11=0D
gk$COUNT,gih$COUNT._12	FLbutton	" ",			1,    0,      4,     20,     20,  =
  222, iy,  0,     9+$COUNT,    0,        0,    12=0D
gk$COUNT,gih$COUNT._13	FLbutton	" ",			1,    0,      4,     20,     20,  =
  242, iy,  0,     9+$COUNT,    0,        0,    13=0D
gk$COUNT,gih$COUNT._14	FLbutton	" ",			1,    0,      4,     20,     20,  =
  262, iy,  0,     9+$COUNT,    0,        0,    14=0D
gk$COUNT,gih$COUNT._15	FLbutton	" ",			1,    0,      4,     20,     20,  =
  282, iy,  0,     9+$COUNT,    0,        0,    15=0D
gk$COUNT,gih$COUNT._16	FLbutton	" ",			1,    0,      4,     20,     20,  =
  302, iy,  0,     9+$COUNT,    0,        0,    16=0D
gk$COUNT,gih$COUNT._17	FLbutton	" ",			1,    0,      4,     20,     20,  =
  322, iy,  0,     9+$COUNT,    0,        0,    17=0D
gk$COUNT,gih$COUNT._18	FLbutton	" ",			1,    0,      4,     20,     20,  =
  342, iy,  0,     9+$COUNT,    0,        0,    18=0D
gk$COUNT,gih$COUNT._19	FLbutton	" ",			1,    0,      4,     20,     20,  =
  362, iy,  0,     9+$COUNT,    0,        0,    19=0D
gk$COUNT,gih$COUNT._20	FLbutton	" ",			1,    0,      4,     20,     20,  =
  382, iy,  0,     9+$COUNT,    0,        0,    20=0D
gk$COUNT,gih$COUNT._21	FLbutton	" ",			1,    0,      4,     20,     20,  =
  402, iy,  0,     9+$COUNT,    0,        0,    21=0D
gk$COUNT,gih$COUNT._22	FLbutton	" ",			1,    0,      4,     20,     20,  =
  422, iy,  0,     9+$COUNT,    0,        0,    22=0D
gk$COUNT,gih$COUNT._23	FLbutton	" ",			1,    0,      4,     20,     20,  =
  442, iy,  0,     9+$COUNT,    0,        0,    23=0D
gk$COUNT,gih$COUNT._24	FLbutton	" ",			1,    0,      4,     20,     20,  =
  462, iy,  0,     9+$COUNT,    0,        0,    24=0D
gk$COUNT,gih$COUNT._25	FLbutton	" ",			1,    0,      4,     20,     20,  =
  482, iy,  0,     9+$COUNT,    0,        0,    25=0D
gk$COUNT,gih$COUNT._26	FLbutton	" ",			1,    0,      4,     20,     20,  =
  502, iy,  0,     9+$COUNT,    0,        0,    26=0D
gk$COUNT,gih$COUNT._27	FLbutton	" ",			1,    0,      4,     20,     20,  =
  522, iy,  0,     9+$COUNT,    0,        0,    27=0D
gk$COUNT,gih$COUNT._28	FLbutton	" ",			1,    0,      4,     20,     20,  =
  542, iy,  0,     9+$COUNT,    0,        0,    28=0D
gk$COUNT,gih$COUNT._29	FLbutton	" ",			1,    0,      4,     20,     20,  =
  562, iy,  0,     9+$COUNT,    0,        0,    29=0D
gk$COUNT,gih$COUNT._30	FLbutton	" ",			1,    0,      4,     20,     20,  =
  582, iy,  0,     9+$COUNT,    0,        0,    30=0D
gk$COUNT,gih$COUNT._31	FLbutton	" ",			1,    0,      4,     20,     20,  =
  602, iy,  0,     9+$COUNT,    0,        0,    31=0D
gk$COUNT,gih$COUNT._32	FLbutton	" ",			1,    0,      4,     20,     20,  =
  622, iy,  0,     9+$COUNT,    0,        0,    32=0D
gk$COUNT.Gain, gih$COUNT.Gain		FLslider 	"",	0,      1,    0,    3,     -=
1,    100,      12,  642, iy+4=0D
gk$COUNT.Pch, gih$COUNT.Pch		FLslider 	"",	25,   300,    0,    3,     -1,=
    100,      12,  842, iy+4=0D
gk$COUNT.Dly, gih$COUNT.Dly		FLslider 	"",	0,     .1,    0,    3,     -1,=
    100,      12,  942, iy+4=0D
;COUNTERS							MIN | MAX | STEP1 | STEP2 | TYPE | WIDTH | HEIGHT | POS_X=
 | POS_Y | IOPCODE=0D
gkLen$COUNT,gihLen$COUNT 		FLcount		"",	0,      8, 0.25,      1,     21, =
   100,     20,     742,    iy,      -1=0D
gkphs$COUNT, gihtimpnt$COUNT		FLslider 	"",	0,      8,    0,      1,     =
-1,    625,      9,       8,    iy+18=0D
FLsetColor2	0,255,0,gihtimpnt$COUNT=0D
=0D
		FLsetVal_i	100, 	gih$COUNT.Pch=0D
		FLsetVal_i	1, 	gih$COUNT.Gain=0D
		FLsetVal_i	8, 	gihLen$COUNT=0D
		iy	=3D	iy+30=0D
#=0D
FLcolor2	255,0,0=0D
$ROW(1)=0D
$ROW(2)=0D
$ROW(3)=0D
$ROW(4)=0D
$ROW(5)=0D
$ROW(6)=0D
=0D
;VALUE DISPLAY BOXES=0D
idRvbSnd	FLvalue	" ",      50,    15,     0, 255=0D
idfblvl		FLvalue	" ",      50,    15,     0, 285=0D
idfco		FLvalue	" ",      50,    15,     0, 315=0D
idDlySnd	FLvalue	" ",      50,    15,   240, 255=0D
idDlyFB		FLvalue	" ",      50,    15,   240, 285=0D
gkRvbSnd, ihRvbSnd	FLslider 	"Reverb Send",		0,        1,   0,    3,     =
idRvbSnd,   235,    15,     0, 240=0D
gkfblvl, ihfblvl	FLslider 	"Reverb Time",		0,        1,   0,    3,      i=
dfblvl,   235,    15,     0, 270=0D
gkfco, ihfco		FLslider 	"Reverb Filter Cutoff",	20,   20000,   0,    3,  =
      idfco,   235,    15,     0, 300=0D
gkDlySnd, ihDlySnd	FLslider 	"Delay Send",		0,        1,   0,    3,     i=
dDlySnd,   235,    15,   240, 240=0D
gkDlyFB, ihDlyFB	FLslider 	"Delay Feedback",	0,        1,   0,    3,     =
 idDlyFB,   235,    15,   240, 270=0D
;COUNTERS							MIN | MAX | STEP1 | STEP2 | TYPE | WIDTH | HEIGHT | POS_X=
 | POS_Y | IOPCODE=0D
gkDelTim1,ihDelTim1 		FLcount		"Delay L",	1,    32,     1,      1,      2=
,    100,     18,     240,   300,      -1=0D
gkDelTim2,ihDelTim2 		FLcount		"Delay R",	1,    32,     1,      1,      2=
,    100,     18,     350,   300,      -1=0D
=0D
		FLsetVal_i	0.4, 	ihRvbSnd=0D
		FLsetVal_i	.7, 	ihfblvl=0D
		FLsetVal_i	10000, 	ihfco=0D
		FLsetVal_i	0.2, 	ihDlySnd=0D
		FLsetVal_i	.4, 	ihDlyFB=0D
		FLsetVal_i	12, 	ihDelTim1=0D
		FLsetVal_i	20, 	ihDelTim2=0D
		FLsetVal_i	220, 	ihTempo=0D
		FLsetVal_i	.5, 	ihMasterGain=0D
		FLpanel_end	;END OF PANEL CONTENTS=0D
=0D
;INSTRUCTIONS AND INFO PANEL=0D
				FLpanel	" ",1045, 310, 0, 385=0D
;TEXT BOXES																				TYPE | FONT | SIZE | WIDTH | HEIGHT | X | =
Y=0D
ih		 	FLbox  	"                                   Looping Sequencer With =
Individually Variable Length Loops                                      "=
, 	1,       5,    14,    1040,    20,    5,   0=0D
ih		 	FLbox  	"----------------------------------------------------------=
------------------------------------------------------------------------"=
, 	1,       5,    14,    1040,    20,    5,  20=0D
ih		 	FLbox  	"This example expands on the design from the 'Simple Drum S=
equencer' example. Besides expanding the basic loop length to 8 beats   "=
, 	1,       5,    14,    1040,    20,    5,  40=0D
ih		 	FLbox  	"(32 semiquavers) the principle innovation is that the user=
 can shorten the range of the loop for each sound. The moving green bars"=
, 	1,       5,    14,    1040,    20,    5,  60=0D
ih		 	FLbox  	"representing current loop position for each sound should h=
elp clarify exactly what is happening. Each beat is divided into four   "=
, 	1,       5,    14,    1040,    20,    5,  80=0D
ih		 	FLbox  	"semiquavers so that 0.25 in the 'Cycle Length' value repre=
sents 1 semiquaver, a value of 1 represents 1 beat.                     "=
, 	1,       5,    14,    1040,    20,    5, 100=0D
ih		 	FLbox  	"If changes are made to cycle lengths, all loops will resta=
rt in order to resync.                                                  "=
, 	1,       5,    14,    1040,    20,    5, 120=0D
ih		 	FLbox  	"Notes that are outside the range of the loop for that soun=
d will not be played.                                                   "=
, 	1,       5,    14,    1040,    20,    5, 140=0D
ih		 	FLbox  	"The sounds produced are kalimba-like sounds produced using=
 Stefan Bilbao's 'barmodel' physical model. The pitch of each of the six"=
, 	1,       5,    14,    1040,    20,    5, 160=0D
ih		 	FLbox  	"sounds can be modified using the transpose sliders, they c=
an be randomised on mass using the 'Randomize!' button and are in fact  "=
, 	1,       5,    14,    1040,    20,    5, 180=0D
ih		 	FLbox  	"randomised automatically upon startup.                    =
                                                                        "=
, 	1,       5,    14,    1040,    20,    5, 200=0D
ih		 	FLbox  	"The 'Delay' sliders allow each sound to be individually de=
layed by a small amount with respect to the others. This is intended to "=
, 	1,       5,    14,    1040,    20,    5, 220=0D
ih		 	FLbox  	"allow the creation of 'flam'-like gestures.               =
                                                                        "=
, 	1,       5,    14,    1040,    20,    5, 240=0D
ih		 	FLbox  	"A reverb effect (making use of the 'reverbsc' opcode) is i=
ncluded.                                                                "=
, 	1,       5,    14,    1040,    20,    5, 260=0D
ih		 	FLbox  	"A tempo synced delay effect is also included. Reverb times=
 for the left and right channel are defined separately in semiquavers.  "=
, 	1,       5,    14,    1040,    20,    5, 280=0D
=0D
				FLpanel_end=0D
=0D
		FLrun		;RUN THE WIDGET THREAD!=0D
=0D
=0D
;FUNCTION TABLE FOR STORAGE OF SEQUENCE DATA FOR SOUND 1=0D
gi1		ftgen		0,0,256,-2,	0,	0.25,	.001,	0,\=0D
						0,	0.5,	.001,	0,\=0D
						0,	0.75,	.001,	0,\=0D
						0,	1,	.001,	0,\=0D
						0,	1.25,	.001,	0,\=0D
						0,	1.5,	.001,	0,\=0D
						0,	1.75,	.001,	0,\=0D
						0,	2,	.001,	0,\=0D
						0,	2.25,	.001,	0,\=0D
						0,	2.5,	.001,	0,\=0D
						0,	2.75,	.001,	0,\=0D
						0,	3,	.001,	0,\=0D
						0,	3.25,	.001,	0,\=0D
						0,	3.5,	.001,	0,\=0D
						0,	3.75,	.001,	0,\=0D
						0,	4,	.001,	0,\=0D
						0,	4.25,	.001,	0,\=0D
						0,	4.5,	.001,	0,\=0D
						0,	4.75,	.001,	0,\=0D
						0,	5,	.001,	0,\=0D
						0,	5.25,	.001,	0,\=0D
						0,	5.5,	.001,	0,\=0D
						0,	5.75,	.001,	0,\=0D
						0,	6,	.001,	0,\=0D
						0,	6.25,	.001,	0,\=0D
						0,	6.5,	.001,	0,\=0D
						0,	6.75,	.001,	0,\=0D
						0,	7,	.001,	0,\=0D
						0,	7.25,	.001,	0,\=0D
						0,	7.5,	.001,	0,\=0D
						0,	7.75,	.001,	0,\=0D
						0,	8,	.001,	0,\=0D
						-1,	8,	-1,	-1=0D
=0D
gi2		ftgen		0,0,256,-2,0	;EMPTY TABLES INITIALLY. CONTENTS WILL BE COPIED=
 FROM TABLE gi1=0D
gi3		ftgen		0,0,256,-2,0	;EMPTY TABLES INITIALLY. CONTENTS WILL BE COPIED=
 FROM TABLE gi1=0D
gi4		ftgen		0,0,256,-2,0	;EMPTY TABLES INITIALLY. CONTENTS WILL BE COPIED=
 FROM TABLE gi1=0D
gi5		ftgen		0,0,256,-2,0	;EMPTY TABLES INITIALLY. CONTENTS WILL BE COPIED=
 FROM TABLE gi1=0D
gi6		ftgen		0,0,256,-2,0	;EMPTY TABLES INITIALLY. CONTENTS WILL BE COPIED=
 FROM TABLE gi1=0D
=0D
zakinit	8,8		;INITIALISE ZAK SPACE (8 A-RATE, 8 K-RATE)=0D
giRvbSndChn	=3D	1	;ZAK CHANNEL NUMBER USED FOR REVERB SEND=0D
giDlySndChn	=3D	3	;ZAK CHANNEL NUMBER USED FOR REVERB SEND=0D
=0D
seed	0=0D
=0D
instr	1	; NOTE TRIGGERING INSTRUMENT=0D
	if	gkOnOff=3D0	then=0D
		turnoff=0D
	endif=0D
	kSwitch		changed		gkLen1, gkLen2, gkLen3, gkLen4, gkLen5, gkLen6 	;GENER=
ATE A MOMENTARY '1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT=
 VARIABLES CHANGE. (OUTPUT 'kSwitch' IS NORMALLY ZERO)=0D
	if		kSwitch=3D1	then	;IF kSwitch=3D1, I.E. IF ANY OF THE ABOVE LISTED PA=
RAMETERS HAVE CHANGED...=0D
		reinit		START		;...PERFORM AN I-RATE PASS BEGINNING FROM THE GIVEN LABE=
L=0D
	endif					;END OF CONDITIONAL BRANCHING=0D
	START:					;A LABEL	=0D
	kTempoRatio	=3D	gkTempo/60=0D
	=0D
	kp1		init	0=0D
	kp2		init	0=0D
	kp3		init	0=0D
	kp4		init	0=0D
#define	LOOP(COUNT)	=0D
	#=0D
	kphs$COUNT    	phasor  (kTempoRatio)/gkLen$COUNT=0D
	gktimpnt$COUNT 	=3D        kphs$COUNT * gkLen$COUNT=0D
	ktrig   timedseq gktimpnt$COUNT,gi$COUNT, kp1, kp2,kp3, kp4=0D
	;	schedkwhen ktrigger, kmintim, kmaxnum, kinsnum,    kwhen,      kdur   =
 p4    p5=0D
		schedkwhen ktrig,       0,        0,     2,     gk$COUNT.Dly,   kp3,   =
kp4, $COUNT#=0D
	=0D
	$LOOP(1)=0D
	$LOOP(2)=0D
	$LOOP(3)=0D
	$LOOP(4)=0D
	$LOOP(5)=0D
	$LOOP(6)=0D
	rireturn=0D
endin=0D
=0D
instr	2=0D
	if	p4=3D1	then=0D
	event_i	"i", p1+p5, 0, p3=0D
endif=0D
	endin=0D
=0D
#define	KALIMBA(I'COUNT)=0D
	#=0D
instr	$I=0D
	p3	=3D	2.6		;DEFINE DURATION FOR THIS SOUND=0D
	ivel	random	0.2,1=0D
	asig 	barmodel	1, 1, i(gk$COUNT.Pch), 1, 0, 2.6, 0.5, 1000*ivel, 0.07	;K=
ALIMBA SOUND CREATED USING barmodel OPCODE (SEE CSOUND MANUAL FOR MORE IN=
FO.)=0D
	asigL	=3D	asig*i(gk$COUNT.Gain)*i(gkMasterGain)*2	;DEFINE LEFT CHANNEL A=
UDIO=0D
	asigR	=3D	asig*i(gk$COUNT.Gain)*i(gkMasterGain)*2	;DEFINE RIGHT CHANNEL =
AUDIO=0D
		outs	asigL, asigR 	;SEND AUDIO TO OUTPUTS=0D
	zawm	asigL*gkRvbSnd, giRvbSndChn=0D
	zawm	asigR*gkRvbSnd, giRvbSndChn+1=0D
	zawm	asigL*gkDlySnd, giDlySndChn=0D
	zawm	asigR*gkDlySnd, giDlySndChn+1=0D
endin=0D
	#	=0D
=0D
$KALIMBA(3'1)=0D
$KALIMBA(4'2)=0D
$KALIMBA(5'3)=0D
$KALIMBA(6'4)=0D
$KALIMBA(7'5)=0D
$KALIMBA(8'6)=0D
=0D
;;;	WRITE CHANGED FL-GRID VALUES TO TABLE=0D
#define	WRITE_VAL(I'COUNT)=0D
#=0D
instr	$I=0D
	tableiw	i(gk$COUNT), ((p4-1)*4)+3, gi$COUNT 	=0D
endin=0D
#=0D
=0D
$WRITE_VAL(10'1)=0D
$WRITE_VAL(11'2)=0D
$WRITE_VAL(12'3)=0D
$WRITE_VAL(13'4)=0D
$WRITE_VAL(14'5)=0D
$WRITE_VAL(15'6)=0D
=0D
instr	100	;COPY TABLE 1 TO ALL OTHER TABLES AND SET RANDOM INITIAL VALUES=
 FOR SOME VALUATORS (PERFORMED ONCE AT THE BEGINNING OF THE PERFORMANCE)=0D=

	tableicopy gi2, gi1=0D
	tableicopy gi3, gi1=0D
	tableicopy gi4, gi1=0D
	tableicopy gi5, gi1=0D
	tableicopy gi6, gi1=0D
	event_i	"i", 102, 0,0.001	;RANDOMISE SLIDERS=0D
endin=0D
=0D
instr	102	;RANDOMISE SLIDERS=0D
#define	RANDOMIZE_SLIDERS(COUNT)=0D
	#=0D
	iPch$COUNT	random		25,300		;DEFINE RANDOM INITIAL VALUES FOR 'TRANSPOSE'=
 SLIDERS=0D
	FLsetVal_i	iPch$COUNT, gih$COUNT.Pch	;SEND RANDOM 'TRANSPOSE' VALUES TO =
SLIDERS=0D
	iLen$COUNT.Dec	random		1,3						;DEFINE RANDOM INITIAL VALUES FOR 'RANGE=
' COUNTERS=0D
	iLen$COUNT.Int	random		4,8                                     	;DEFINE =
RANDOM INITIAL VALUES FOR 'RANGE' COUNTERS=0D
	iLen$COUNT.		=3D		(int(iLen$COUNT.Dec)*0.5)+int(iLen$COUNT.Int)	;DEFINE =
RANDOM INITIAL VALUES FOR 'RANGE' COUNTERS=0D
	FLsetVal_i	iLen$COUNT, gihLen$COUNT				;SEND RANDOM 'RANGE' VALUES TO CO=
UNTERS=0D
	iDly$COUNT	random		0, 0.03		;DEFINE RANDOM INITIAL VALUES FOR 'TRANSPOSE=
' SLIDERS=0D
	FLsetVal_i	iDly$COUNT, gih$COUNT.Dly	;SEND RANDOM 'DELAY' VALUES TO SLID=
ERS=0D
	#=0D
	$RANDOMIZE_SLIDERS(1)=0D
	$RANDOMIZE_SLIDERS(2)=0D
	$RANDOMIZE_SLIDERS(3)=0D
	$RANDOMIZE_SLIDERS(4)=0D
	$RANDOMIZE_SLIDERS(5)=0D
	$RANDOMIZE_SLIDERS(6)=0D
endin	=0D
=0D
instr	998	;DUAL TEMPO DELAY=0D
	aL	zar		giDlySndChn=0D
	aR	zar		giDlySndChn+1=0D
	kSwitch		changed		gkTempo, gkDelTim1, gkDelTim2 	;GENERATE A MOMENTARY '=
1' PULSE IN OUTPUT 'kSwitch' IF ANY OF THE SCANNED INPUT VARIABLES CHANGE=
=2E (OUTPUT 'kSwitch' IS NORMALLY ZERO)=0D
	if		kSwitch=3D1	then	;IF kSwitch=3D1, I.E. IF ANY OF THE ABOVE LISTED PA=
RAMETERS HAVE CHANGED...=0D
		reinit		START		;...PERFORM AN I-RATE PASS BEGINNING FROM THE GIVEN LABE=
L=0D
	endif					;END OF CONDITIONAL BRANCHING=0D
	START:					;A LABEL	=0D
	ideltimL	=3D	(15*i(gkDelTim1))/i(gkTempo)=0D
	ideltimR	=3D	(15*i(gkDelTim2))/i(gkTempo)=0D
	abuffer	delayr	ideltimL=0D
	atapL	deltap	ideltimL=0D
		delayw	aL + (atapL*gkDlyFB)=0D
	abuffer	delayr	ideltimR=0D
	atapR	deltap	ideltimR=0D
		delayw	aR + (atapR*gkDlyFB)=0D
	outs	atapL, atapR=0D
endin=0D
=0D
instr 	999		;REVERB=0D
	aL	zar		giRvbSndChn=0D
	aR	zar		giRvbSndChn+1=0D
	denorm		aL, aR	;DENORMALIZE BOTH CHANNELS OF AUDIO SIGNAL=0D
	arvbL, arvbR 	reverbsc 	aL, aR, gkfblvl, gkfco, sr;, i(gkpitchm), i(gksk=
ip) =0D
	outs		arvbL, arvbR=0D
	zacl		1,8=0D
endin=0D
	=0D
instr	1000	;UPDATE LOOP INDICATORS=0D
	ktrigger	metro	20	;IF PERFORMANCE ISSUES ARISE REDUCING THIS VALUE MIGHT=
 HELP=0D
	FLsetVal	ktrigger, gktimpnt1, gihtimpnt1=0D
	FLsetVal	ktrigger, gktimpnt2, gihtimpnt2=0D
	FLsetVal	ktrigger, gktimpnt3, gihtimpnt3=0D
	FLsetVal	ktrigger, gktimpnt4, gihtimpnt4=0D
	FLsetVal	ktrigger, gktimpnt5, gihtimpnt5=0D
	FLsetVal	ktrigger, gktimpnt6, gihtimpnt6=0D
endin=0D
=0D
instr	1001	;SET INITIAL PATTERN=0D
	FLsetVal_i	1, gih1_1=0D
	FLsetVal_i	1, gih5_3=0D
	FLsetVal_i	1, gih2_5=0D
	FLsetVal_i	1, gih6_7=0D
	FLsetVal_i	1, gih3_9=0D
	FLsetVal_i	1, gih1_11=0D
	FLsetVal_i	1, gih4_13=0D
	FLsetVal_i	1, gih2_15=0D
	FLsetVal_i	1, gih4_17=0D
	FLsetVal_i	1, gih5_19=0D
	FLsetVal_i	1, gih2_21=0D
	FLsetVal_i	1, gih6_23=0D
	FLsetVal_i	1, gih1_25=0D
	FLsetVal_i	1, gih3_27=0D
	FLsetVal_i	1, gih2_29=0D
	FLsetVal_i	1, gih5_31=0D
endin=0D
=0D
=0D
=0D
=0D
f 0 3600=0D
i 100 0 0=0D
i 998 0 3600	;DELAY=0D
i 999 0 3600	;REVERB=0D
i 1000 0 3600	;LOOP INDICATORS=0D
i 1001 0.01 0.01	;SET INITIAL PATTERN=0D
=0D
=0D
=
hat runs OK

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here

==John ffitch


Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here