desc: LMB=Sound/Color   RMB=Image Position

slider1:0<0,255,1>--R
slider2:0<0,255,1>--G
slider3:0<0,255,1>--B
slider4:0<0,1,0.001>--R (gfx)
slider5:0<0,1,0.001>--G (gfx)
slider6:0<0,1,0.001>--B (gfx)
slider7:150<0,400,1>--pos x
slider8:10<0,100,1>--pos y

slider10:0<0,2,1{sine - RED,triangle - GREEN,saw - BLUE}>Shape
slider11:0.5<0.1,20,0.1>Attack (ms)
slider12:150<1,500,1>Release (ms)
slider13:-18<-30,-6,1>Output (dB)
slider14:1<0.5,4,0.1>Zoom
slider15:0<0,5,1>Image

filename:0,RGB_mousegfx/001.png
filename:1,RGB_mousegfx/002.png
filename:2,RGB_mousegfx/003.png
filename:3,RGB_mousegfx/004.png
filename:4,RGB_mousegfx/005.png
filename:5,RGB_mousegfx/test.png
//....add more images. Update slider15 !

in_pin:none
out_pin:L out
out_pin:R out

@init
ext_noinit = 1;
f = srate*0.5;
seekv = 0;

@slider
fadein = exp(-1/(slider11*0.001*srate));
fadeout = exp(-1/(slider12*0.001*srate));

vol = slider13 <= -30 ? 0.0 : 10 ^ (slider13 / 20);

@block
r=255*slider4;
slider1 = ceil(r);
sliderchange(slider1);
g=255*slider5;
slider2 = ceil(g);
sliderchange(slider2);
b=255*slider6;
slider3 = ceil(b);
sliderchange(slider3);

dr=slider1*256*256;
dg=slider2*256;
db=slider3;

tmpr=max(floor(dr*(f/16711680)),440);
tmpg=max(floor(dg*(f/65280)),440);
tmpb=max(floor(db*(f/255)),440);

@sample
(slider10 == 0) ? (
adj = 2.0*$pi*tmpr*2^-4.6472/srate;
tone = (0.5 + (sin(pos) / 2));
);
(slider10 == 1) ? (
adj = 2.0*$pi*tmpg*2^-4.6472/srate;
tone = (0.5 + (2.0*pos/$pi-1.0) / 2);
(tone > 1.0) ? tone = 2.0-tone;
);
(slider10 == 2) ? (
adj = 2.0*$pi*tmpb*2^-4.6498/srate;
tone = (0.5 + (1.0-pos/($pi*$pi)) / 2);
);

(mouse_cap) == 1 ?
( // fading in
seekv=seekv*fadein + (1-fadein);
):( // fading out
seekv=seekv*fadeout;
);

tone *= seekv;

tone *= vol;

spl0 = tone;
spl1 = tone;

pos=pos+adj;
(pos >= 2.0*$pi) ? pos -= 2.0*$pi;

@gfx 0 120
gfx_a =1;
gfx_r=slider4;gfx_g=slider5;gfx_b=slider6;
gfx_x=0;gfx_y=0;
gfx_rectto(gfx_w,gfx_h);

gfx_a=1;
gfx_r=gfx_g=gfx_b=0;
(mouse_cap) == 2 ?
(
gfx_x=mouse_x;
gfx_y=mouse_y;
slider7=mouse_x;
slider8=mouse_y;
):(
gfx_x=slider7;
gfx_y=slider8;
);
gfx_getimgdim(slider15,w,h);
gfx_blit(slider15,slider14,0);

(mouse_cap) == 1 ?
(
((mouse_x < slider7+w*slider14) && (mouse_y < slider8+h*slider14) && (mouse_x > slider7) && (mouse_y > slider8)) ?
(
gfx_x = mouse_x;
gfx_y = mouse_y;

gfx_getpixel(slider4,slider5,slider6);
sliderchange(slider4);
sliderchange(slider5);
sliderchange(slider6);
);
);

gfx_x=gfx_w-145;
gfx_y=gfx_h-gfx_texth-3;
gfx_r=gfx_g=gfx_b=0;
gfx_a=1;
gfx_rectto(gfx_w,gfx_h);

gfx_x=gfx_w-143;
gfx_y=gfx_h-gfx_texth-1;
gfx_r=gfx_g=gfx_b=1;
gfx_drawstr("R:");
gfx_drawnumber(slider1,0);

gfx_x=gfx_w-92;
gfx_y=gfx_h-gfx_texth-1;
gfx_r=gfx_g=gfx_b=1;
gfx_drawstr("G:");
gfx_drawnumber(slider2,0);

gfx_x=gfx_w-41;
gfx_y=gfx_h-gfx_texth-1;
gfx_r=gfx_g=gfx_b=1;
gfx_drawstr("B:");
gfx_drawnumber(slider3,0);
