Indigo 55004
Showtec
Josua
Indigo 5500 14 Kanäle
unit progra;
interface
procedure Colorchange3;
procedure FormShow;
procedure FormRefresh(channel:Integer);
procedure FormClose;
procedure PositionXYChange(Top, Left: Integer);
procedure speedchange;
procedure ColorBoxChange;
procedure gobo1change;
procedure gobo2change;
procedure gobo2rotchange;
procedure prismarotchange;
procedure focuschange;
procedure dimmerchange;
procedure shutterchange;
procedure Colorchange;
procedure Gobo2rotchange2;
procedure prismarotchange2;
implementation
var
DontRefresh:boolean;
procedure Colorchange3;
begin
case splitcolorbox3.itemindex of
0: set_channel('extra', -1, 10, 0);
1: set_channel('extra', -1, 30, 0);
2: set_channel('extra', -1, 50, 0);
3: set_channel('extra', -1, 70, 0);
4: set_channel('extra', -1, 90, 0);
5: set_channel('extra', -1, 110, 0);
6: set_channel('extra', -1, 130, 0);
7: set_channel('extra', -1, 145, 0);
8: set_channel('extra', -1, 155, 0);
9: set_channel('extra', -1, 165, 0);
10: set_channel('extra', -1, 175, 0);
11: set_channel('extra', -1, 185, 0);
12: set_channel('extra', -1, 195, 0);
13: set_channel('extra', -1, 210, 0);
14: set_channel('extra', -1, 228, 0);
15: set_channel('extra', -1, 238, 0);
16: set_channel('extra', -1, 242, 0);
17: set_channel('extra', -1, 246, 0);
18: set_channel('extra', -1, 250, 0);
19: set_channel('extra', -1, 253, 0);
end;
end;
procedure FormShow;
begin
end;
procedure FormRefresh(channel:Integer);
var
Value:integer;
r,phi,temp:Double;
begin
if not DontRefresh then
case channel of
0:
begin
if usemhcontrol.checked then
begin
// Moving-Head-Steuerung
temp:=get_channel('tilt')+(get_channel('tiltfine')/256);
case round(temp) of
0..127: r:=((127-temp)/127);
128..255: r:=((temp-128)/127);
end;
phi:=(get_channel('pan')+(get_channel('panfine')/256))/255*6.283185307179586476925286766559; //(X/255)*PI
PositionXY.Left:=round(r*sin(phi)*(Fadenkreuz.Width/2)+(Fadenkreuz.Width/2)-(PositionXY.Width div 2));
PositionXY.Top:=round(r*cos(phi)*(Fadenkreuz.Height/2)+(Fadenkreuz.Height/2)-(PositionXY.Width div 2));
end else
begin
// Scanner-Steuerung
PositionXY.Left:=round(Fadenkreuz.Width * (get_channel('pan')+get_channel('panfine')/256)/255)-(PositionXY.Width div 2);
PositionXY.Top:=round(Fadenkreuz.Height * (get_channel('tilt')+get_channel('tiltfine')/256)/255)-(PositionXY.Height div 2);
end;
end;
1:
begin
if usemhcontrol.checked then
begin
// Moving-Head-Steuerung
temp:=get_channel('tilt')+(get_channel('tiltfine')/256);
case round(temp) of
0..127: r:=((127-temp)/127);
128..255: r:=((temp-128)/127);
end;
phi:=(get_channel('pan')+(get_channel('panfine')/256))/255*6.283185307179586476925286766559; //(X/255)*PI
PositionXY.Left:=round(r*sin(phi)*(Fadenkreuz.Width/2)+(Fadenkreuz.Width/2)-(PositionXY.Width div 2));
PositionXY.Top:=round(r*cos(phi)*(Fadenkreuz.Height/2)+(Fadenkreuz.Height/2)-(PositionXY.Width div 2));
end else
begin
// Scanner-Steuerung
PositionXY.Left:=round(Fadenkreuz.Width * (get_channel('pan')+get_channel('panfine')/256)/255)-(PositionXY.Width div 2);
PositionXY.Top:=round(Fadenkreuz.Height * (get_channel('tilt')+get_channel('tiltfine')/256)/255)-(PositionXY.Height div 2);
end;
end;
2:
begin
speedslider4.position:=get_channel('speed');
end;
3:
begin
value:=get_channel('color1');
case value of
0..9: colorbox.itemindex:=0;
10..19: colorbox.itemindex:=1;
20..29: colorbox.itemindex:=2;
30..39: colorbox.itemindex:=3;
40..49: colorbox.itemindex:=4;
50..59: colorbox.itemindex:=5;
60..69: colorbox.itemindex:=6;
70..79: colorbox.itemindex:=7;
200..255: colorbox.itemindex:=8;
end;
end;
4:
begin
value:=get_channel('gobo1');
case value of
0..10: gobobox1.itemindex:=0;
11..20: gobobox1.itemindex:=1;
21..30: gobobox1.itemindex:=2;
31..40: gobobox1.itemindex:=3;
41..50: gobobox1.itemindex:=4;
51..60: gobobox1.itemindex:=5;
61..70: gobobox1.itemindex:=6;
71..80: gobobox1.itemindex:=7;
81..95: gobobox1.itemindex:=8;
96..110: gobobox1.itemindex:=9;
111..125: gobobox1.itemindex:=10;
126..140: gobobox1.itemindex:=11;
141..155: gobobox1.itemindex:=12;
156..170: gobobox1.itemindex:=13;
171..185: gobobox1.itemindex:=14;
186..255: gobobox1.itemindex:=15;
end;
end;
5:
begin
value:=get_channel('gobo2');
case value of
0..10: gobobox2.itemindex:=0;
11..20: gobobox2.itemindex:=1;
21..30: gobobox2.itemindex:=2;
31..40: gobobox2.itemindex:=3;
41..50: gobobox2.itemindex:=4;
51..60: gobobox2.itemindex:=5;
61..70: gobobox2.itemindex:=6;
71..85: gobobox2.itemindex:=7;
86..100: gobobox2.itemindex:=8;
101..115: gobobox2.itemindex:=9;
116..130: gobobox2.itemindex:=10;
131..145: gobobox2.itemindex:=11;
146..160: gobobox2.itemindex:=12;
161..255: gobobox2.itemindex:=13;
end;
end;
6:
begin
gobo2rotslider8.position:=get_channel('gobo2rot');
end;
7:
begin
prismarotslider9.position:=get_channel('prismarot');
end;
8:
begin
focusslider10.position:=get_channel('focus');
end;
9:
begin
dimmerslider11.position:=get_channel('dimmer');
end;
10:
begin
shutterslider12.position:=get_channel('shutter');
end;
end;
DontRefresh:=false;
end;
procedure FormClose;
begin
end;
procedure PositionXYChange(Top, Left: Integer);
var
phi,r,x,y:Double;
pan, tilt, panfine, tiltfine:Double;
begin
if usemhcontrol.checked then
begin
// Moving-Head-Steuerung (Polarkoordinaten)
x:=((PositionXY.Left+(PositionXY.Width div 2)-(fadenkreuz.Width/2))/fadenkreuz.Width)*2; //-1..0..1
y:=((PositionXY.Top+(PositionXY.Height div 2)-(fadenkreuz.Width/2))/fadenkreuz.Height)*2; //-1..0..1
r:=sqrt(x*x+y*y);
if (r>0) then
begin
if (y>=0) then
phi:=arccos(x/r)
else
phi:=6.283185307179586476925286766559-arccos(x/r);
end else
phi:=64;
r:=128-((r/2)*255);
phi:=(phi/6.283185307179586476925286766559)*255;
if 64>=phi then
phi:=phi+191
else
phi:=phi-64;
pan:=255-phi;
tilt:=255-r;
end else
begin
// Scannersteuerung (Kartesische Koordinaten)
pan:=((PositionXY.Left+(PositionXY.Width div 2))/fadenkreuz.Width)*255;
tilt:=((PositionXY.Top+(PositionXY.Height div 2))/fadenkreuz.Height)*255;
end;
// Ausgabe
if panmirror.checked then
begin
dontrefresh:=true;
set_channel('pan',trunc(255-pan),trunc(255-pan),0);
dontrefresh:=true;
set_channel('panfine',trunc(frac(255-pan)*255),trunc(frac(255-pan)*255),0);
end else
begin
dontrefresh:=true;
set_channel('pan',trunc(pan),trunc(pan),0);
dontrefresh:=true;
set_channel('panfine',trunc(frac(pan)*255),trunc(frac(pan)*255),0);
end;
if tiltmirror.checked then
begin
dontrefresh:=true;
set_channel('tilt',trunc(255-tilt),trunc(255-tilt),0);
dontrefresh:=true;
set_channel('tiltfine',trunc(frac(255-tilt)*255),trunc(frac(255-tilt)*255),0);
end else
begin
dontrefresh:=true;
set_channel('tilt',trunc(tilt),trunc(tilt),0);
dontrefresh:=true;
set_channel('tiltfine',trunc(frac(tilt)*255),trunc(frac(tilt)*255),0);
end;
end;
procedure speedchange;
begin
DontRefresh:=true;
set_channel('speed',-1,speedslider4.position,0);
end;
procedure ColorBoxChange;
begin
case colorbox.itemindex of
0: set_channel('color1', -1, 0, 0);
1: set_channel('color1', -1, 10, 0);
2: set_channel('color1', -1, 20, 0);
3: set_channel('color1', -1, 30, 0);
4: set_channel('color1', -1, 40, 0);
5: set_channel('color1', -1, 50, 0);
6: set_channel('color1', -1, 60, 0);
7: set_channel('color1', -1, 70, 0);
8: set_channel('color1', -1, 200, 0);
end;
end;
procedure gobo1change;
begin
case gobobox1.itemindex of
0: set_channel('gobo1', -1, 0, 0);
1: set_channel('gobo1', -1, 11, 0);
2: set_channel('gobo1', -1, 21, 0);
3: set_channel('gobo1', -1, 31, 0);
4: set_channel('gobo1', -1, 41, 0);
5: set_channel('gobo1', -1, 51, 0);
6: set_channel('gobo1', -1, 61, 0);
7: set_channel('gobo1', -1, 71, 0);
8: set_channel('gobo1', -1, 81, 0);
9: set_channel('gobo1', -1, 96, 0);
10: set_channel('gobo1', -1, 111, 0);
11: set_channel('gobo1', -1, 126, 0);
12: set_channel('gobo1', -1, 141, 0);
13: set_channel('gobo1', -1, 156, 0);
14: set_channel('gobo1', -1, 171, 0);
15: set_channel('gobo1', -1, 186, 0);
end;
end;
procedure gobo2change;
begin
case gobobox2.itemindex of
0: set_channel('gobo2', -1, 0, 0);
1: set_channel('gobo2', -1, 11, 0);
2: set_channel('gobo2', -1, 21, 0);
3: set_channel('gobo2', -1, 31, 0);
4: set_channel('gobo2', -1, 41, 0);
5: set_channel('gobo2', -1, 51, 0);
6: set_channel('gobo2', -1, 61, 0);
7: set_channel('gobo2', -1, 71, 0);
8: set_channel('gobo2', -1, 86, 0);
9: set_channel('gobo2', -1, 101, 0);
10: set_channel('gobo2', -1, 116, 0);
11: set_channel('gobo2', -1, 131, 0);
12: set_channel('gobo2', -1, 146, 0);
13: set_channel('gobo2', -1, 161, 0);
end;
end;
procedure gobo2rotchange;
begin
set_channel('gobo2rot',-1,gobo2rotslider8.position,0);
end;
procedure prismarotchange;
begin
set_channel('prismarot',-1,prismarotslider10.position,0);
end;
procedure focuschange;
begin
DontRefresh:=true;
set_channel('focus',-1,focusslider10.position,0);
end;
procedure dimmerchange;
begin
DontRefresh:=true;
set_channel('dimmer',-1,dimmerslider11.position,0);
end;
procedure shutterchange;
begin
DontRefresh:=true;
set_channel('shutter',-1,shutterslider12.position,0);
end;
procedure Colorchange;
begin
case splitcolorbox4.itemindex of
0: set_channel('color1', -1, 89, 0);
1: set_channel('color1', -1, 109, 0);
2: set_channel('color1', -1, 129, 0);
3: set_channel('color1', -1, 149, 0);
4: set_channel('color1', -1, 169, 0);
5: set_channel('color1', -1, 189, 0);
6: set_channel('color1', -1, 209, 0);
end;
end;
procedure Gobo2rotchange2;
begin
set_channel('gobo2rot',-1,gobo2rotslider9.position,0);
end;
procedure prismarotchange2;
begin
set_channel('prismarot',-1,prismarotslider9.position,0);
end;
end.