public Halloween2017(IEnumerable <string> args)
{
mainSchedule.AddRange("5:00 pm", "9:00 pm",
DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Sunday);
mainSchedule.AddRange("5:00 pm", "9:00 pm",
DayOfWeek.Friday, DayOfWeek.Saturday);
string expFilesParam = args.FirstOrDefault(x => x.StartsWith("EXPFILES"));
if (!string.IsNullOrEmpty(expFilesParam))
{
string[] parts = expFilesParam.Split('=');
if (parts.Length == 2)
{
Exec.ExpanderSharedFiles = parts[1];
}
}
//expanderServer.AddInstance("4ea781ef257442edb524493da8f52220", expanderAudio2); // rpi-eba6cbc7
expanderServer.AddInstance("ed86c3dc166f41ee86626897ba039ed2", expanderLedmx); // rpi-eb0092ca
expanderServer.AddInstance("1583f686014345888c15d7fc9c55ca3c", expanderCat); // rpi-eb81c94e
expanderServer.AddInstance("d6fc4e752af04022bf3c1a1166a557bb", expanderHifi); // rpi-eb428ef1
expanderServer.AddInstance("60023fcde5b549b89fa828d31741dd0c", expanderPicture); // rpi-eb91bc26
expanderServer.AddInstance("e41d2977931d4887a9417e8adcd87306", expanderGhost); // rpi-eb6a047c
expanderServer.AddInstance("999861affa294fd7bbf0601505e9ae09", expanderMrPumpkin); // rpi-ebd43a38
expanderServer.AddInstance("992f8db68e874248b5ee667d23d74ac3", expanderSpider); // rpi-eb9b3145
expanderServer.AddInstance("db9b41a596cb4ed28e91f11a59afb95a", expanderRocking); // rpi-eb32e5f9
expanderServer.AddInstance("acbfada45c674077b9154f6a0e0df359", expanderFlying); // rpi-eb35666e
expanderServer.AddInstance("2e105175a66549d4a0ab7f8d446c2e29", expanderPopper); // rpi-eb997095
masterVolume.ConnectTo(Exec.MasterVolume);
grumpyCat = new Modules.HalloweenGrumpyCat(
air: catAir,
light: catLights,
audioPlayer: audioCat,
name: nameof(grumpyCat));
stateMachine.WhenStates(States.BackgroundFull, States.BackgroundSmall).Controls(grumpyCat.InputPower);
pictureFrame = new Modules.HalloweenPictureFrame(
medeaWizPlayer: pictureFrame1,
name: nameof(pictureFrame));
stateMachine.WhenStates(States.BackgroundFull).Controls(pictureFrame.InputPower);
flyingSkeleton = new Modules.HalloweenFlying(
eyes: flyingSkeletonEyes,
fogStairsLight1: fogStairsLight1,
fogStairsLight2: fogStairsLight2,
fogStairsPump1: fogStairsPump1,
fogStairsPump2: fogStairsPump2,
audioPlayer: audioFlying,
name: nameof(flyingSkeleton));
stateMachine.WhenStates(States.BackgroundFull).Controls(flyingSkeleton.InputPower);
firstBeam.Output.Controls(flyingSkeleton.InputTrigger);
rockingChair = new Modules.HalloweenRocker(
rockingMotor: rockingChairMotor,
ladyEyes: ladyMovingEyes,
strobeLight: rockingChairLight,
audioPlayer: audioRocking,
name: nameof(pictureFrame));
stateMachine.WhenStates(States.BackgroundFull).Controls(rockingChair.InputPower);
rockingMotion.Output.Controls(rockingChair.InputTrigger);
mrPumpkin = new Modules.HalloweenMrPumpkin(
air: mrPumpkinAir,
light: pumpkinLights,
audioPlayer: audioPumpkin,
name: nameof(mrPumpkin));
stateMachine.WhenStates(States.BackgroundFull, States.BackgroundSmall).Controls(mrPumpkin.InputPower);
frankGhost = new Modules.HalloweenFrankGhost(
air: frankGhostAir,
light: pixelsFrankGhost,
audioPlayer: audioFrankGhost,
name: nameof(frankGhost));
stateMachine.WhenStates(States.BackgroundFull, States.BackgroundSmall).Controls(frankGhost.InputPower);
spiderDrop = new Modules.HalloweenSpiderDrop(
smallSpiderEyes: smallSpiderEyes,
eyesLight: spiderEyes,
drop: spiderDropRelease,
venom: spiderVenom,
strobeLight: flashUnderSpider,
audioPlayer: audioSpider,
name: nameof(spiderDrop));
stateMachine.WhenStates(States.BackgroundFull).Controls(spiderDrop.InputPower);
fireProjector = new Modules.FireProjector(
fire: fire,
name: nameof(fireProjector));
stateMachine.WhenStates(States.BackgroundFull, States.Setup).Controls(fireProjector.InputPower);
buttonOverrideHours.Output.Subscribe(x =>
{
if (x)
{
mainSchedule.SetForced(true);
}
else
{
mainSchedule.SetForced(null);
}
});
flashBaby.Output.Subscribe(x =>
{
// Flash
if (x)
{
allLights.TakeAndHoldControl(100, "FlashBaby");
allLights.SetData(null, Utils.Data(1.0), Utils.Data(Color.White));
}
else
{
allLights.ReleaseControl();
}
});
testButton1.Output.Subscribe(x =>
{
});
testButton2.Output.Subscribe(x =>
{
});
testButton3.Output.Subscribe(x =>
{
});
testButton4.Output.Subscribe(x =>
{
});
setupMode.Output.Subscribe(x =>
{
if (x)
{
stateMachine.GoToState(States.Setup);
}
else
{
stateMachine.GoToDefaultState();
}
});
fullOn.Output.Subscribe(x =>
{
if (x)
{
stateMachine.GoToState(States.BackgroundFull);
}
else
{
stateMachine.GoToDefaultState();
}
});
floodLights.Output.Subscribe(x =>
{
// Flash
if (x)
{
allLights.TakeAndHoldControl(200, "FlashBaby");
allLights.SetData(null, Utils.Data(Color.White, 1.0));
}
else
{
allLights.ReleaseControl();
}
});
emergencyStop.Output.Subscribe(x =>
{
if (x)
{
stateMachine.GoToState(States.EmergencyStop);
}
else
{
if (mainSchedule.IsOpen)
{
stateMachine.GoToDefaultState();
}
else
{
stateMachine.GoToIdle();
}
}
});
mainSchedule.Output.Subscribe(x =>
{
if (x)
{
stateMachine.SetDefaultState(States.BackgroundSmall);
stateMachine.GoToDefaultState();
}
else
{
stateMachine.GoToIdle();
stateMachine.SetDefaultState(null);
}
SetManualColor();
});
popOut1.ConnectTo(wall1Light);
popOut1.ConnectTo(wall4Light);
popOut1.ConnectTo(wall6Light);
popOut1.ConnectTo(flashTree);
popOut2.ConnectTo(wall2Light);
//popOut2.ConnectTo(wall7Light);
//popOut2.ConnectTo(flashUnderSpider);
popOutAll.ConnectTo(wall1Light);
popOutAll.ConnectTo(wall2Light);
popOutAll.ConnectTo(wall3Light);
popOutAll.ConnectTo(wall4Light);
popOutAll.ConnectTo(wall5Light);
popOutAll.ConnectTo(wall6Light);
//popOutAll.ConnectTo(wall7Light);
//popOutAll.ConnectTo(wall8Light);
//popOutAll.ConnectTo(wall9Light);
popOutAll.ConnectTo(flashTree);
//popOutAll.ConnectTo(flashUnderSpider);
popOutAll.ConnectTo(pixelsRoofEdge);
popOutAll.ConnectTo(pixelsFrankGhost);
// popOutAll.ConnectTo(pinSpot);
allLights.Add(
wall1Light,
wall2Light,
wall3Light,
wall4Light,
wall5Light,
wall6Light,
rockingChairLight,
//wall7Light,
//wall8Light,
//wall9Light,
flashTree,
flashUnderSpider,
pixelsRoofEdge,
pixelsFrankGhost,
// pinSpot,
spiderLight,
fogStairsLight1,
fogStairsLight2,
spiderWebLights,
pumpkinLights);
purpleLights.Add(
wall1Light,
wall2Light,
wall3Light,
wall4Light,
wall5Light,
wall6Light,
//wall7Light,
//wall8Light,
//wall9Light,
pixelsRoofEdge);
flickerEffect.ConnectTo(stairs1Light);
flickerEffect.ConnectTo(stairs2Light);
flickerEffect.ConnectTo(gargoyleLightsEyes);
//flickerEffect.ConnectTo(flyingSkeletonEyes);
flickerEffect.ConnectTo(streetNumberEyes);
flickerEffect.ConnectTo(bigSpiderEyes);
pulsatingGargoyle.ConnectTo(gargoyleLightsCrystal);
pulsatingGargoyle.ConnectTo(treeSkulls);
//pulsatingGargoyle.ConnectTo(spiderEyes);
//pulsatingEffect1.ConnectTo(pinSpot, Tuple.Create<DataElements, object>(DataElements.Color, Color.FromArgb(0, 255, 0)));
//pulsatingEffect2.ConnectTo(pinSpot, Tuple.Create<DataElements, object>(DataElements.Color, Color.FromArgb(255, 0, 0)));
pulsatingGargoyle.ConnectTo(spiderWebLights);
stateMachine.For(States.Setup)
.Controls(1, flickerEffect, pulsatingGargoyle)
.Execute(ins =>
{
ins.WaitUntilCancel();
});
stateMachine.For(States.BackgroundSmall)
.Controls(1, flickerEffect, pulsatingGargoyle)
.Execute(i =>
{
treeGhosts.SetBrightness(1.0);
treeSkulls.SetBrightness(1.0);
audioHifi.SetBackgroundVolume(0.5);
audioHifi.PlayBackground();
ladyMovingEyes.SetValue(true);
var purpleColor = new ColorBrightness(HSV.ColorFromRGB(0.73333333333333328, 0, 1),
0.16470588235294117);
purpleLights.SetData(null,
Utils.Data(purpleColor.Brightness),
Utils.Data(purpleColor.Color),
Utils.Data(DataElements.ColorUltraViolet, 1.0));
i.WaitUntilCancel();
})
.TearDown(instance =>
{
ladyMovingEyes.SetValue(false);
Exec.Cancel(sub3dfxLady);
audioHifi.PauseBackground();
purpleLights.SetBrightness(0.0);
treeGhosts.SetBrightness(0.0);
treeSkulls.SetBrightness(0.0);
});
stateMachine.For(States.BackgroundFull)
.Controls(1, flickerEffect, pulsatingGargoyle)
.Execute(i =>
{
treeGhosts.SetBrightness(1.0);
treeSkulls.SetBrightness(1.0);
audioHifi.PlayBackground();
audioHifi.SetBackgroundVolume(0.7);
//Exec.Execute(sub3dfxLady);
var purpleColor = new ColorBrightness(HSV.ColorFromRGB(0.73333333333333328, 0, 1),
0.16470588235294117);
purpleLights.SetData(null, Utils.Data(purpleColor.Color, purpleColor.Brightness));
while (!i.IsCancellationRequested && stateMachine.CurrentState == States.BackgroundFull)
{
i.WaitFor(S(0.5));
if (!this.lastFogRun.HasValue || (DateTime.Now - this.lastFogRun.Value).TotalMinutes > 5)
{
// Run the fog for a little while
lastFog.SetValue(true);
i.WaitFor(S(4));
lastFog.SetValue(false);
this.lastFogRun = DateTime.Now;
}
}
})
.TearDown(instance =>
{
purpleLights.SetBrightness(0.0);
treeGhosts.SetBrightness(0.0);
treeSkulls.SetBrightness(0.0);
audioHifi.PauseBackground();
timelineThunder1.Stop();
timelineThunder2.Stop();
timelineThunder3.Stop();
timelineThunder4.Stop();
timelineThunder5.Stop();
timelineThunder6.Stop();
timelineThunder7.Stop();
timelineThunder8.Stop();
flickerEffect.Stop();
treeGhosts.SetBrightness(0.0);
treeSkulls.SetBrightness(0.0);
});
stateMachine.For(States.EmergencyStop)
.Execute(i =>
{
// Do nothing
i.WaitUntilCancel();
});
stateMachine.For(States.Special1)
.Execute(i =>
{
//audio2.PlayNewEffect("640 The Demon Exorcised.wav");
i.WaitUntilCancel();
});
inputBrightness.Output.Subscribe(x =>
{
// testLight1.SetBrightness(x);
});
inputH.WhenOutputChanges(x =>
{
// testLight1.SetColor(HSV.ColorFromHSV(x.GetByteScale(), inputS.Value, 1.0));
});
inputS.Output.Subscribe(x =>
{
// testLight1.SetColor(HSV.ColorFromHSV(inputH.Value.GetByteScale(), x, 1.0));
});
expanderHifi.AudioTrackStart.Subscribe(x =>
{
// Next track
switch (x.Item2)
{
case "Thunder1.wav":
timelineThunder1.Start();
audioHifi.PlayEffect("scream.wav");
break;
case "Thunder2.wav":
timelineThunder2.Start();
break;
case "Thunder3.wav":
timelineThunder3.Start();
break;
case "Thunder4.wav":
timelineThunder4.Start();
audioHifi.PlayEffect("424 Coyote Howling.wav");
break;
case "Thunder5.wav":
timelineThunder5.Start();
// audioEeebox.PlayEffect("sixthsense-deadpeople.wav");
break;
case "Thunder6.wav":
timelineThunder6.Start();
break;
case "Thunder7.wav":
timelineThunder7.Start();
break;
case "Thunder8.wav":
timelineThunder8.Start();
break;
default:
log.Debug("Unknown track {0}", x);
break;
}
});
timelineThunder1.AddMs(500, "A");
timelineThunder1.AddMs(3500, "B");
timelineThunder1.AddMs(4500, "C");
timelineThunder1.TimelineTrigger += TriggerThunderTimeline;
timelineThunder2.AddMs(500, "A");
timelineThunder2.AddMs(1500, "B");
timelineThunder2.AddMs(1600, "C");
timelineThunder2.AddMs(3700, "C");
timelineThunder2.TimelineTrigger += TriggerThunderTimeline;
timelineThunder3.AddMs(100, "A");
timelineThunder3.AddMs(200, "B");
timelineThunder3.AddMs(300, "C");
timelineThunder3.TimelineTrigger += TriggerThunderTimeline;
timelineThunder4.AddMs(0, "A");
timelineThunder4.AddMs(3500, "B");
timelineThunder4.AddMs(4500, "C");
timelineThunder4.TimelineTrigger += TriggerThunderTimeline;
timelineThunder5.AddMs(1100, "A");
timelineThunder5.AddMs(3500, "B");
timelineThunder5.AddMs(4700, "C");
timelineThunder5.TimelineTrigger += TriggerThunderTimeline;
timelineThunder6.AddMs(1000, "A");
timelineThunder6.AddMs(1800, "B");
timelineThunder6.AddMs(6200, "C");
timelineThunder6.TimelineTrigger += TriggerThunderTimeline;
timelineThunder7.AddMs(0, "A");
timelineThunder7.AddMs(200, "B");
timelineThunder7.AddMs(300, "C");
timelineThunder7.TimelineTrigger += TriggerThunderTimeline;
timelineThunder8.AddMs(500, "A");
timelineThunder8.AddMs(4000, "B");
timelineThunder8.AddMs(4200, "C");
timelineThunder8.TimelineTrigger += TriggerThunderTimeline;
acnOutput.Connect(new Physical.Pixel1D(pixelsRoofEdge, 0, 50, true), SacnUniversePixel50, 1);
acnOutput.Connect(new Physical.Pixel1D(pixelsRoofEdge, 50, 100), SacnUniversePixel100, 1);
acnOutput.Connect(new Physical.Pixel1D(pixelsFrankGhost, 0, 5), SacnUniverseFrankGhost, 1);
acnOutput.Connect(new Physical.FogMachineA(fogStairsPump1, fogStairsLight1, 1), SacnUniverseDMXFogA);
acnOutput.Connect(new Physical.FogMachineA(fogStairsPump2, fogStairsLight2, 10), SacnUniverseDMXFogA);
//acnOutput.Connect(new Physical.SmallRGBStrobe(spiderLight, 1), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.RGBStrobe(wall6Light, 60), SacnUniverseEdmx4A);
//acnOutput.Connect(new Physical.RGBStrobe(wall9Light, 70), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.RGBStrobe(rockingChairLight, 40), SacnUniverseEdmx4A);
//acnOutput.Connect(new Physical.RGBStrobe(wall7Light, 80), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.DMXCommandOutput(pictureFrame1, 1, TimeSpan.FromMilliseconds(500), 0), SacnUniverseEdmx4B);
acnOutput.Connect(new Physical.DMXCommandOutput(lady3dfx, 1, TimeSpan.FromMilliseconds(500), 0), SacnUniverseEdmx4A);
acnOutput.Connect(new Physical.MarcGamutParH7(wall1Light, 340, 8), SacnUniverseEdmx4A);
acnOutput.Connect(new Physical.RGBStrobe(wall2Light, 80), SacnUniverseEdmx4A);
acnOutput.Connect(new Physical.MarcGamutParH7(wall3Light, 330, 8), SacnUniverseEdmx4A);
acnOutput.Connect(new Physical.MarcGamutParH7(wall4Light, 310, 8), SacnUniverseEdmx4A);
acnOutput.Connect(new Physical.MarcGamutParH7(wall5Light, 300, 8), SacnUniverseEdmx4A);
// acnOutput.Connect(new Physical.MarcGamutParH7(wall6Light, 350, 8), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(stairs1Light, 66), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(stairs2Light, 51), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(treeGhosts, 67), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(treeSkulls, 131), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(spiderEyes, 128), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(popperEyes, 132), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(popper, 133), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.AmericanDJStrobe(flashTree, 100), SacnUniverseEdmx4A);
acnOutput.Connect(new Physical.EliminatorFlash192(flashUnderSpider, 110), SacnUniverseDMXFogA);
// acnOutput.Connect(new Physical.MonopriceRGBWPinSpot(pinSpot, 20), 1);
acnOutput.Connect(new Physical.GenericDimmer(fire, 1), SacnUniverseFire);
acnOutput.Connect(new Physical.GenericDimmer(frankGhostAir, 10), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(mrPumpkinAir, 11), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(spiderWebLights, 99), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(catAir, 64), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(catLights, 65), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(pumpkinLights, 50), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(gargoyleLightsCrystal, 128), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(gargoyleLightsEyes, 129), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(flyingSkeletonEyes, 134), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(smallSpiderEyes, 135), SacnUniverseDMXLedmx);
acnOutput.Connect(new Physical.GenericDimmer(streetNumberEyes, 131), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(bigSpiderEyes, 132), SacnUniverseDMXCat);
acnOutput.Connect(new Physical.GenericDimmer(hazerFanSpeed, 500), SacnUniverseDMXFogA);
acnOutput.Connect(new Physical.GenericDimmer(hazerHazeOutput, 501), SacnUniverseDMXFogA);
// acnOutput.Connect(new Physical.RGBIS(testLight1, 260), 1);
expanderLedmx.DigitalInputs[4].Connect(frankGhostMotion, false);
expanderLedmx.DigitalInputs[5].Connect(mrPumpkinMotion, false);
expanderLedmx.DigitalInputs[6].Connect(rockingMotion, false);
expanderCat.DigitalInputs[7].Connect(catMotion);
expanderCat.DigitalInputs[6].Connect(secondBeam);
expanderCat.DigitalInputs[5].Connect(spiderDropTrigger, inverted: true);
expanderCat.DigitalInputs[4].Connect(firstBeam);
expanderLedmx.DigitalInputs[7].Connect(lastBeam);
//expanderMrPumpkin.DigitalOutputs[7].Connect(popper);
expanderLedmx.DigitalOutputs[2].Connect(lastFog, inverted: true);
expanderMrPumpkin.DigitalOutputs[7].Connect(rockingChairMotor);
expanderMrPumpkin.DigitalOutputs[4].Connect(ladyMovingEyes);
expanderLedmx.DigitalOutputs[0].Connect(spiderDropRelease);
expanderLedmx.DigitalOutputs[1].Connect(spiderVenom);
expanderCat.DigitalOutputs[6].Connect(spiderJump2);
expanderLedmx.Connect(audioFrankGhost);
expanderCat.Connect(audioCat);
expanderHifi.Connect(audioHifi);
expanderMrPumpkin.Connect(audioPumpkin);
//expanderAudio2.Connect(audio2);
expanderFlying.Connect(audioFlying);
expanderSpider.Connect(audioSpider);
expanderRocking.Connect(audioRocking);
expanderPopper.Connect(audioPopper);
expanderHifi.BackgroundAudioFiles = new string[]
{
"Thunder1.wav",
"Thunder2.wav",
"Thunder3.wav",
"Thunder4.wav",
"Thunder5.wav",
"Thunder6.wav",
"Thunder7.wav",
"Thunder8.wav"
};
expanderRocking.BackgroundAudioFiles = new string[]
{
"68 Creaky Wooden Floorboards.wav"
};
blockMaster.WhenOutputChanges(x => UpdateOSC());
blockCat.WhenOutputChanges(x => UpdateOSC());
blockFirst.WhenOutputChanges(x => UpdateOSC());
blockPicture.WhenOutputChanges(x => UpdateOSC());
blockGhost.WhenOutputChanges(x => UpdateOSC());
blockLast.WhenOutputChanges(x => UpdateOSC());
blockPumpkin.WhenOutputChanges(x => UpdateOSC());
Utils.ReactiveOr(blockCat, blockMaster).Controls(grumpyCat.InputTriggerBlock);
Utils.ReactiveOr(blockPumpkin, blockMaster).Controls(mrPumpkin.InputTriggerBlock);
Utils.ReactiveOr(blockFrankGhost, blockMaster).Controls(frankGhost.InputTriggerBlock);
Utils.ReactiveOr(blockSpiderDrop, blockMaster).Controls(spiderDrop.InputTriggerBlock);
Utils.ReactiveOr(blockFire, blockMaster).Controls(fireProjector.InputTriggerBlock);
Utils.ReactiveOr(blockPicture, blockMaster).Controls(pictureFrame.InputTriggerBlock);
Utils.ReactiveOr(blockRocking, blockMaster).Controls(rockingChair.InputTriggerBlock);
Utils.ReactiveOr(blockFirst, blockMaster).Controls(flyingSkeleton.InputTriggerBlock);
catMotion.Controls(grumpyCat.InputTrigger);
secondBeam.Controls(pictureFrame.InputTrigger);
mrPumpkinMotion.Controls(mrPumpkin.InputTrigger);
frankGhostMotion.Controls(frankGhost.InputTrigger);
spiderDropTrigger.Controls(spiderDrop.InputTrigger);
spiderDropTrigger.Output.Subscribe(x =>
{
if (x)
{
Exec.Execute(sub3dfxLady);
}
});
lastBeam.Output.Subscribe(x =>
{
UpdateOSC();
if (x && (stateMachine.CurrentState == States.BackgroundFull || stateMachine.CurrentState == States.Setup) && !emergencyStop.Value && !blockMaster.Value && !blockLast.Value)
{
subLast.Run();
}
});
subFog
.RunAction(i =>
{
lastFog.SetValue(true);
lastFogRun = DateTime.Now;
i.WaitFor(S(4));
lastFog.SetValue(false);
});
sub3dfxLady
.RunAction(i =>
{
i.WaitFor(S(1));
if (random.Next(2) == 0)
{
lady3dfx.SendCommand(null, 99);
i.WaitFor(S(30));
}
else
{
lady3dfx.SendCommand(null, (byte)(random.Next(4) + 1));
i.WaitFor(S(60 * 2.0));
}
})
.TearDown(i =>
{
lady3dfx.SendCommand(null, 255);
});
subLast
.RunAction(ins =>
{
popperEyes.SetBrightness(1.0);
lastFog.SetValue(true);
lastFogRun = DateTime.Now;
audioPopper.PlayEffect("Short Laugh.wav");
ins.WaitFor(S(1.0));
popper.SetValue(true);
ins.WaitFor(S(2.0));
audioPopper.PlayEffect("Leave Now.wav");
ins.WaitFor(S(3.0));
var tsk = Exec.MasterEffect.Fade(popperEyes, 1.0, 0.0, 2000, token: ins.Token);
popper.SetValue(false);
tsk.Wait();
})
.TearDown(ins =>
{
lastFog.SetValue(false);
ins.WaitFor(S(1.0));
});
motionSeq.WhenExecuted
.Execute(instance =>
{
//video2.PlayVideo("DancingDead_Wall_HD.mp4");
// instance.WaitFor(S(10));
})
.TearDown(instance =>
{
});
faderR.WhenOutputChanges(v => { SetManualColor(); });
faderG.WhenOutputChanges(v => { SetManualColor(); });
faderB.WhenOutputChanges(v => { SetManualColor(); });
faderBright.WhenOutputChanges(v => { SetManualColor(); });
manualFader.WhenOutputChanges(v =>
{
if (v)
{
this.manualFaderToken = pixelsRoofEdge.TakeControl(200);
}
else
{
this.manualFaderToken?.Dispose();
this.manualFaderToken = null;
}
oscServer.SendAllClients("/ManualFader/x", v ? 1 : 0);
SetManualColor();
});
ConfigureOSC();
ConfigureMIDI();
}