/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////
// Open Sound Control to Processing
// osc connection

// TODO move to init

(
~conOsc = NetAddr.new("localhost", 12000);
//~conOsc = NetAddr.new("roosta.local", 12000);
~sOsc = { // helper function to reduce redundancy
	arg target, value;
	target = "/" +/+ target; // +/+ does not add whitespace
	~conOsc.sendMsg("/ctlin", target, value);
	postln(">>> rcv/snd: /ctlin " + target + " value:" + value );
};
);


(
~oscTitles0a = {
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesimgCid", 0);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};

~oscTitles0b = {
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesimgCid", 1);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};
~oscTitles1 = {
	~sOsc.("drawPlatesimgCid", 2);
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};
~oscTitles2 = {
	~sOsc.("drawPlatesimgCid", 3);
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};
~oscTitles3 = {
	~sOsc.("drawPlatesimgCid", 4);
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};
~oscTitles4 = {
	~sOsc.("drawPlatesimgCid", 5);
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};
~oscTitles5 = {
	~sOsc.("drawPlatesimgCid", 6);
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};
~oscTitles6 = {
	~sOsc.("drawPlatesimgCid", 7);
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};
~oscTitles7 = {
	~sOsc.("drawPlatesimgCid", 8);
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};
~oscTitles8 = {
	~sOsc.("drawPlatesimgCid", 9);
	~sOsc.("drawPlatesimgCbank", 7);
	~sOsc.("drawPlatesimgCblendMode", 7);
	~sOsc.("drawPlatesTexCspeed", 0);
	~sOsc.("drawPlatesToggle", 1);
};

);


~drawImageBlenderInit =  {
	~sOsc.("drawImageBlenderToggle", 0);
    ~sOsc.("drawImageBlenderBank", 0 );
    ~sOsc.("drawImageBlenderID", 0);

    ~sOsc.("iblNum", 10); //{ iblNum = int(oscVal2) ; } // 6
    ~sOsc.("iblX", 64 ); //{ iblX = ((oscVal2-64) / 64.0) * width/2 ; } // 7  int( ((oscVal2-64) / 64.0) * width/2 ); }
    ~sOsc.("iblY", 64 ); //{ iblY = ((oscVal2-64) / 64.0) * width/2 ; } // 8
    ~sOsc.("iblWidth", 67); //{ iblWidth = oscVal2 * oscVal2 * 0.2 * norm(width, 0, width) ; } // 9  int(oscVal2 * oscVal2 * 0.05 * norm(width, 0, width));
    ~sOsc.("iblHeight", 70 ); //{ iblHeight = oscVal2 * oscVal2 * 0.1 * norm(height, 0, height) ; } // 10

    ~sOsc.("iblRot", 0 ); //{ iblRot =  radians(oscVal2 * 360 / 120) ; } // 11
    ~sOsc.("iblTexWidth", 64 ); //{ iblTexWidth = (oscVal2 - 64) * oscVal2 ; } // 18
    ~sOsc.("iblTexHeight", 64 ); //{ iblTexHeight = (oscVal2 - 64) * oscVal2 ; } // 19

    ~sOsc.("iblTexSpeedXfactor", 64 ); //{ iblTexSpeedXfactor = ((oscVal2-64) * abs(oscVal2-64) * 0.6) ; } // 22
    ~sOsc.("iblTexSpeedYfactor", 64 ); //{ iblTexSpeedYfactor = ((oscVal2-64) * abs(oscVal2-64) * 0.6) ; } // 23

    ~sOsc.("iblH", 64 ); //{ iblH = int(oscVal2) ; } // 24
    ~sOsc.("iblS", 127); //{ iblS = int(oscVal2) ; } // 25
    ~sOsc.("iblB", 127 ); //{ iblB = int(oscVal2) ; } // 26
    ~sOsc.("iblA", 127 ); //{ iblA = int(oscVal2) ; } // 27
    ~sOsc.("iblBflicker", 0 ); //{ iblBflicker = int(oscVal2) ; } // 28

    ~sOsc.("iblItX", 64 ); //{ iblItX = ((oscVal2-64) * abs(oscVal2-64) * 0.1) ; } // 29
    ~sOsc.("iblItY", 64 ); //{ iblItY = ((oscVal2-64) * abs(oscVal2-64) * 0.1) ; } // 30
    ~sOsc.("iblItTexX", 0); //{ iblItTexX = oscVal2 * 4 ; } // 31
    ~sOsc.("iblItTexY", 0 ); //{ iblItTexY = oscVal2 * 4; } // 32
    ~sOsc.("iblItRot", 0); //{ iblItRot = radians(oscVal2) ; } // 33
};





































// OSC tests ////////////////////////////////////////////////////////////////////////////////////////////

/*

(
// VIDEO player
~sOsc.value("playVideoToggle", 1);
~sOsc.value("playVideoBank", 0 );//) {  playVideoBank = int(oscVal2); } // 44
~sOsc.value("playVideoID", 0 );//) {  playVideoID = int(oscVal2); } // 45
~sOsc.value("playVideoPausePlay", 1 );  //) {  playVideoPausePlay = boolean(int(oscVal2)); } // 47
~sOsc.value("playVideoHue", 64 ); //) {  playVideoHue = int(oscVal2); } // 44
~sOsc.value("playVideoSaturation", 0 ); //) {  playVideoSaturation = int(oscVal2); } // 44
~sOsc.value("playVideoBrightness", 127 ); //) {  playVideoBrightness = int(oscVal2); } // 44
~sOsc.value("playVideoAlpha", 127 );//) {  playVideoAlpha = int(oscVal2); } // 44
~sOsc.value("playVideoSpeed", 100);  //) {  playVideoPausePlay = boolean(int(oscVal2)); } // 47
~sOsc.value("playVideoJump", 25);
)

~sOsc.value("playVideoPausePlay", 0 );
~sOsc.value("playVideoPausePlay", 1 );
~sOsc.value("playVideoJump", rand(99));

// just don't use reverse/negatives!
~sOsc.value("playVideoSpeed", -100);
~sOsc.value("playVideoSpeed", 100);

~sOsc.value("playVideoToggle", 0);


// examples for SC->P5 connections
(
~subPattern1 = Pbind(*[
	instrument: "subPulse",
    dur:	Pseq([6,6,4],inf),
	note:	Pseq([30], inf),
	amp: 	0.1,
	filterCurve: Pseq([-1],inf),
	imgspeed: Prand([1,2,3], inf),
	imgdirection: Pseq([10,30,50,70,90,110,127], inf),
	osc:	Pfunc { |e|
		~sOsc.value("drawPlatesTexAspeed", e.imgspeed);
		~sOsc.value("drawPlatesTexAdirection", e.imgdirection);
	}
]);
)

(
~cracklePattern0 = Pbind(*[
	instrument: "cracklePulse",
	dur:		Pseq([16],inf),
	length: 	Pseq([0.01], inf),
	amp: 		0.2,
	chaos:		Pseq([1.5], inf),
	id:			Pwalk( (0 .. 54), Prand([ -2,-1, 1, 2], inf)),
	dir:		Pseq([127,64], inf),
	osc:		Pfunc { |e|
		~sOsc.value("drawFlylinesflyPixId", e.id);
		~sOsc.value("drawFlylinesflyDirection", e.dir);
	};
]);
)

*/
