desc: V o D i       v o i c e  d i v i d e r       v 1. 0

slider1:1<0,7,1{1,2,3,4,5,6,7,8>polyphony 
// number of channels used

slider3: 0<0,128,1{OFF,c-2,c#-2,d-2,d#-2,e-2,f-2,f#-2,g-2,g#-2,a-2,a#-2,h-2,c-1,c#-1,d-1,d#-1,e-1,f-1,f#-1,g-1,g#-1,a-1,a#-1,h-1,c0,c#0,d0,d#0,e0,f0,f#0,g0,g#0,a0,a#0,h0,c1,c#1,d1,d#1,e1,f1,f#1,g1,g#1,a1,a#1,h1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,h2,c3,c#3,d3,d#3,e3,f3,f#3,g3,g#3,a3,a#3,h3,c4,c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,h4,c5,c#5,d5,d#5,e5,f5,f#5,g5,g#5,a5,a#5,h5,c6,c#6,d6,d#6,e6,f6,f#6,g6,g#6,a6,a#6,h6,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,a#7,h7,c8,c#8,d8,d#8,e8,f8,f#8,g8}> ch 2 
slider4: 0<0,128,1{OFF,c-2,c#-2,d-2,d#-2,e-2,f-2,f#-2,g-2,g#-2,a-2,a#-2,h-2,c-1,c#-1,d-1,d#-1,e-1,f-1,f#-1,g-1,g#-1,a-1,a#-1,h-1,c0,c#0,d0,d#0,e0,f0,f#0,g0,g#0,a0,a#0,h0,c1,c#1,d1,d#1,e1,f1,f#1,g1,g#1,a1,a#1,h1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,h2,c3,c#3,d3,d#3,e3,f3,f#3,g3,g#3,a3,a#3,h3,c4,c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,h4,c5,c#5,d5,d#5,e5,f5,f#5,g5,g#5,a5,a#5,h5,c6,c#6,d6,d#6,e6,f6,f#6,g6,g#6,a6,a#6,h6,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,a#7,h7,c8,c#8,d8,d#8,e8,f8,f#8,g8}> ch 3 
slider5: 0<0,128,1{OFF,c-2,c#-2,d-2,d#-2,e-2,f-2,f#-2,g-2,g#-2,a-2,a#-2,h-2,c-1,c#-1,d-1,d#-1,e-1,f-1,f#-1,g-1,g#-1,a-1,a#-1,h-1,c0,c#0,d0,d#0,e0,f0,f#0,g0,g#0,a0,a#0,h0,c1,c#1,d1,d#1,e1,f1,f#1,g1,g#1,a1,a#1,h1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,h2,c3,c#3,d3,d#3,e3,f3,f#3,g3,g#3,a3,a#3,h3,c4,c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,h4,c5,c#5,d5,d#5,e5,f5,f#5,g5,g#5,a5,a#5,h5,c6,c#6,d6,d#6,e6,f6,f#6,g6,g#6,a6,a#6,h6,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,a#7,h7,c8,c#8,d8,d#8,e8,f8,f#8,g8}> ch 4 
slider6: 0<0,128,1{OFF,c-2,c#-2,d-2,d#-2,e-2,f-2,f#-2,g-2,g#-2,a-2,a#-2,h-2,c-1,c#-1,d-1,d#-1,e-1,f-1,f#-1,g-1,g#-1,a-1,a#-1,h-1,c0,c#0,d0,d#0,e0,f0,f#0,g0,g#0,a0,a#0,h0,c1,c#1,d1,d#1,e1,f1,f#1,g1,g#1,a1,a#1,h1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,h2,c3,c#3,d3,d#3,e3,f3,f#3,g3,g#3,a3,a#3,h3,c4,c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,h4,c5,c#5,d5,d#5,e5,f5,f#5,g5,g#5,a5,a#5,h5,c6,c#6,d6,d#6,e6,f6,f#6,g6,g#6,a6,a#6,h6,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,a#7,h7,c8,c#8,d8,d#8,e8,f8,f#8,g8}> ch 5 
slider7: 0<0,128,1{OFF,c-2,c#-2,d-2,d#-2,e-2,f-2,f#-2,g-2,g#-2,a-2,a#-2,h-2,c-1,c#-1,d-1,d#-1,e-1,f-1,f#-1,g-1,g#-1,a-1,a#-1,h-1,c0,c#0,d0,d#0,e0,f0,f#0,g0,g#0,a0,a#0,h0,c1,c#1,d1,d#1,e1,f1,f#1,g1,g#1,a1,a#1,h1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,h2,c3,c#3,d3,d#3,e3,f3,f#3,g3,g#3,a3,a#3,h3,c4,c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,h4,c5,c#5,d5,d#5,e5,f5,f#5,g5,g#5,a5,a#5,h5,c6,c#6,d6,d#6,e6,f6,f#6,g6,g#6,a6,a#6,h6,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,a#7,h7,c8,c#8,d8,d#8,e8,f8,f#8,g8}> ch 6 
slider8: 0<0,128,1{OFF,c-2,c#-2,d-2,d#-2,e-2,f-2,f#-2,g-2,g#-2,a-2,a#-2,h-2,c-1,c#-1,d-1,d#-1,e-1,f-1,f#-1,g-1,g#-1,a-1,a#-1,h-1,c0,c#0,d0,d#0,e0,f0,f#0,g0,g#0,a0,a#0,h0,c1,c#1,d1,d#1,e1,f1,f#1,g1,g#1,a1,a#1,h1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,h2,c3,c#3,d3,d#3,e3,f3,f#3,g3,g#3,a3,a#3,h3,c4,c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,h4,c5,c#5,d5,d#5,e5,f5,f#5,g5,g#5,a5,a#5,h5,c6,c#6,d6,d#6,e6,f6,f#6,g6,g#6,a6,a#6,h6,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,a#7,h7,c8,c#8,d8,d#8,e8,f8,f#8,g8}> ch 7 
slider9: 0<0,128,1{OFF,c-2,c#-2,d-2,d#-2,e-2,f-2,f#-2,g-2,g#-2,a-2,a#-2,h-2,c-1,c#-1,d-1,d#-1,e-1,f-1,f#-1,g-1,g#-1,a-1,a#-1,h-1,c0,c#0,d0,d#0,e0,f0,f#0,g0,g#0,a0,a#0,h0,c1,c#1,d1,d#1,e1,f1,f#1,g1,g#1,a1,a#1,h1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,h2,c3,c#3,d3,d#3,e3,f3,f#3,g3,g#3,a3,a#3,h3,c4,c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,h4,c5,c#5,d5,d#5,e5,f5,f#5,g5,g#5,a5,a#5,h5,c6,c#6,d6,d#6,e6,f6,f#6,g6,g#6,a6,a#6,h6,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,a#7,h7,c8,c#8,d8,d#8,e8,f8,f#8,g8}> ch 8 
slider10: 0<0,128,1{OFF,c-2,c#-2,d-2,d#-2,e-2,f-2,f#-2,g-2,g#-2,a-2,a#-2,h-2,c-1,c#-1,d-1,d#-1,e-1,f-1,f#-1,g-1,g#-1,a-1,a#-1,h-1,c0,c#0,d0,d#0,e0,f0,f#0,g0,g#0,a0,a#0,h0,c1,c#1,d1,d#1,e1,f1,f#1,g1,g#1,a1,a#1,h1,c2,c#2,d2,d#2,e2,f2,f#2,g2,g#2,a2,a#2,h2,c3,c#3,d3,d#3,e3,f3,f#3,g3,g#3,a3,a#3,h3,c4,c#4,d4,d#4,e4,f4,f#4,g4,g#4,a4,a#4,h4,c5,c#5,d5,d#5,e5,f5,f#5,g5,g#5,a5,a#5,h5,c6,c#6,d6,d#6,e6,f6,f#6,g6,g#6,a6,a#6,h6,c7,c#7,d7,d#7,e7,f7,f#7,g7,g#7,a7,a#7,h7,c8,c#8,d8,d#8,e8,f8,f#8,g8}> ch 9 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
																																																																																																																																																																																																																																																		 

@init //================================================================================

ACTIVE_NOTES=0; // active notes massive

i00=1;
loop
	(8,
  ACTIVE_NOTES[i00]= -1;   //no active notes;
  i00=i00+1;
	);
	
slider3=ACTIVE_NOTES[1]+1;slider_automate(slider3);
slider4=ACTIVE_NOTES[2]+1;slider_automate(slider4);
slider5=ACTIVE_NOTES[3]+1;slider_automate(slider5);
slider6=ACTIVE_NOTES[4]+1;slider_automate(slider6);
slider7=ACTIVE_NOTES[5]+1;slider_automate(slider7);
slider8=ACTIVE_NOTES[6]+1;slider_automate(slider8);
slider9=ACTIVE_NOTES[7]+1;slider_automate(slider9);
slider10=ACTIVE_NOTES[8]+1;slider_automate(slider10);

@slider //==============================================================================

CHNUM=slider1+1;

@sample //==============================================================================

while
(
  midirecv(offset,IN1,IN2,IN3)?
	(
		type=(IN1&$xF0)/16;
		chan=(IN1&$x0F)+1;
		note=IN2; 
		velo=IN3;
		chan==1? //is it 1-st channel?
		(                                                                                                                           
			type==9&&velo!=0? //is it NOTE ON?=======================================================================================
			(   
				i01=1; MDslot=1; DS=128; //MDslot = ACTIVE_NOTES matrix slot with the note closest to current! DS = currebnt distance.  
				while(i01 <= CHNUM)                                                                                                     
				(                                                                                                                       
					ACTIVE_NOTES[i01]>-1? //is ACTIVE_NOTES matrix slot not empty?                                                         
					(                                                                                                                     
						DSnew=abs(ACTIVE_NOTES[i01]-note);                                                                                   
						DSnew<DS ? 
						(
							DS=DSnew; 
							MDslot=i01;
						); 
						i01+=1; 
					):(                                              //if ACTIVE_NOTES matrix empty?                                                                  
						ACTIVE_NOTES[i01]=note;                                                                                              
						midisend(offset,$x90+i01,note,velo);                                                                                 
						i01=1000; //break the loop, 1000 is a success mark also!                                                            
					); 
				);
				i01!=1000? // no empty slots? 
				(     
					midisend(offset,$x80+MDslot,ACTIVE_NOTES[MDslot],64); //note-off at slot with closest note  
					ACTIVE_NOTES[MDslot]=note;                         
					midisend(offset,$x90+MDslot,note,velo); //note-on at slot with closest note
				);     
					
			):( 
				(type==9&&velo==0)||(type==8)? //is it NOTE OFF?=======================================================================
				(
					i02=1;
					while(i02 <= CHNUM)
					(
						ACTIVE_NOTES[i02]==note?
						(
							midisend(offset,$x80+i02,ACTIVE_NOTES[i02],64);
							ACTIVE_NOTES[i02]=-1;
						);     
						i02+=1; 
					);     
				
				):( //any other message = repeat to all channels
					
					i03=1;
					while(i03 <= CHNUM)
					(
						midisend(offset,type*16+i03,IN2,IN3);
						i03+=1;     
					);     
				);
			);
			
			
		):(
			midisend(offset,IN1,IN2,IN3) //if not 1 channel then through.
		);
slider3=ACTIVE_NOTES[1]+1;slider_automate(slider3);
slider4=ACTIVE_NOTES[2]+1;slider_automate(slider4);
slider5=ACTIVE_NOTES[3]+1;slider_automate(slider5);
slider6=ACTIVE_NOTES[4]+1;slider_automate(slider6);
slider7=ACTIVE_NOTES[5]+1;slider_automate(slider7);
slider8=ACTIVE_NOTES[6]+1;slider_automate(slider8);
slider9=ACTIVE_NOTES[7]+1;slider_automate(slider9);
slider10=ACTIVE_NOTES[8]+1;slider_automate(slider10);

	);
);
