From f5afb6fbdb6231800a66fefc2ed0db289b6509af Mon Sep 17 00:00:00 2001 From: Moritz Ruth Date: Sat, 8 Mar 2025 20:50:46 +0100 Subject: [PATCH] commit 62 --- .../de/moritzruth/dracula_musical/act/Act1.kt | 106 +++++++++++++++++- .../dracula_musical/device/Devices.kt | 6 +- .../moritzruth/dracula_musical/song/Duett.kt | 50 +++++++++ .../moritzruth/dracula_musical/song/Lucy.kt | 74 ++++++++++++ 4 files changed, 229 insertions(+), 7 deletions(-) create mode 100644 src/main/kotlin/de/moritzruth/dracula_musical/song/Duett.kt diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/act/Act1.kt b/src/main/kotlin/de/moritzruth/dracula_musical/act/Act1.kt index 55a05a3..0c93e37 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/act/Act1.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/act/Act1.kt @@ -1,10 +1,7 @@ package de.moritzruth.dracula_musical.act import de.moritzruth.dracula_musical.device.* -import de.moritzruth.dracula_musical.song.songAdelIstGeil -import de.moritzruth.dracula_musical.song.songIrrenhaus -import de.moritzruth.dracula_musical.song.songLucy -import de.moritzruth.dracula_musical.song.songMittsommernacht +import de.moritzruth.dracula_musical.song.* import de.moritzruth.theaterdsl.show.CurtainState import de.moritzruth.theaterdsl.show.PropPosition import de.moritzruth.theaterdsl.show.ShowBuilderContext @@ -171,9 +168,110 @@ fun ShowBuilderContext.act1() = act("Erster Akt") { +"Tochter Nickelby" } } + + step(StepCue.Text("Mina", "Es gibt hier noch mehr Irre.")) { + actors { + -"Mina" + } + } } scene("Blockflötenkreis") { songLucy() + + lightStep(StepCue.Custom("Gardine wird geöffnet")) { + FrontLights.all { it.brightness.fade(100.percent, 2.seconds) } + sidelight.brightness.off(3.seconds) + } + + step(StepCue.Text("Mr. Nickelby", "…als du die Vorhänge aufgemacht hast.")) { + actors { + +"Mrs. Ascot" + } + + onRun { + sidelight.colors.forEach { it.fadeRandomAround(0.degrees, 5.degrees, 3.seconds) } + } + } + + step(StepCue.Text("Mrs. Ascot", "Sie Flötenguru!")) { + actors { + +"Dr. Sewart" + } + } + + repeat(2) { + lightStep(StepCue.Custom("Gardine wird geschlossen")) { + FrontLights.all { it.brightness.fade(40.percent, 2.seconds) } + sidelight.brightness.fade(80.percent, 2.seconds) + } + + lightStep(StepCue.Custom("Gardine wird geöffnet")) { + FrontLights.all { it.brightness.fade(100.percent, 2.seconds) } + sidelight.brightness.off(2.seconds) + } + } + + step(StepCue.Text("Dr. Sewart", "Und dass mir ja die Gardine aufbleibt!")) { + actors { + -"Dr. Sewart" + -"Mrs. Ascot" + -"Lucy" + -"Mr. Nickelby" + -"Mrs. Nickelby" + -"Tochter Nickelby" + } + + onRun { + FrontLights.all { it.brightness.off(5.seconds) } + } + } + } + + scene("Männerbesuch") { + step(StepCue.Custom("Es klingelt")) { + actors { + +"Mina" + +"Jonathan / hinter der Tür" + } + + onRun { + FrontLights.all { it.brightness.fade(75.percent, 5.seconds) } + } + } + + step(StepCue.Text("Mina", "Sehr merkwürdig.")) { + actors { + +"Mrs. Ascot" + } + } + + step(StepCue.Text("Mrs. Ascot", "Miss Murray!", "beim dritten Mal")) { + actors { + -"Mrs. Ascot" + } + } + + songDuett() + + step(StepCue.Text("Mina", "So markiere ich, was mir gehört.")) { + actors { + +"Mrs. Ascot" + } + } + + step(StepCue.Text("Jonathan", "Gute Nacht.")) { + actors { + -"Mina" + -"Jonathan" + -"Mrs. Ascot" + } + + leftSpotTarget = null + + onRun { + FrontLights.all { it.brightness.off(5.seconds) } + } + } } } \ No newline at end of file diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/device/Devices.kt b/src/main/kotlin/de/moritzruth/dracula_musical/device/Devices.kt index 0ad77f3..bb56068 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/device/Devices.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/device/Devices.kt @@ -29,9 +29,9 @@ object Washs { } object BlinderBars { - val left = DeviceGroup(StairvilleSplb(DmxAddress(155u)), StairvilleSplb(DmxAddress(178u))) - val right = DeviceGroup(StairvilleSplb(DmxAddress(201u)), StairvilleSplb(DmxAddress(224u))) - val all = left + right + val inner = DeviceGroup(StairvilleSplb(DmxAddress(155u)), StairvilleSplb(DmxAddress(178u))) + val outer = DeviceGroup(StairvilleSplb(DmxAddress(201u)), StairvilleSplb(DmxAddress(224u))) + val all = inner + outer } val backlightBar = StairvilleTlb(DmxAddress(130u)) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/Duett.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/Duett.kt new file mode 100644 index 0000000..657d282 --- /dev/null +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Duett.kt @@ -0,0 +1,50 @@ +package de.moritzruth.dracula_musical.song + +import de.moritzruth.dracula_musical.device.* +import de.moritzruth.theaterdsl.show.SceneBuilderContext +import de.moritzruth.theaterdsl.show.StepCue +import de.moritzruth.theaterdsl.value.Color +import de.moritzruth.theaterdsl.value.degrees +import de.moritzruth.theaterdsl.value.percent +import kotlin.time.Duration.Companion.minutes +import kotlin.time.Duration.Companion.seconds + +fun SceneBuilderContext.songDuett() { + lightStep(StepCue.MusicStart("Duett", 3.minutes + 15.seconds)) { + FrontLights.all { it.brightness.fade(40.percent, 5.seconds) } + Washs.both { + it.pointAtCeiling() + it.colorWheelMode.static(CoemarProWash.ColorWheelMode.White) + it.magenta.static(100.percent) + } + } + + lightStep(StepCue.Custom("Strophe")) { + BlinderBars.all { + it.preset.static(StairvilleSplb.Preset.STUB) // dreamy, flowy, pink, warm + it.presetSpeed.static(10.percent) + it.brightness.fade(25.percent, 5.seconds) + } + } + + lightStep(StepCue.Text("Mina & Jonathan", "Von dem Gefühl im Bauch…")) { + backlightBar.color.static(Color(300.degrees)) + backlightBar.brightness.fade(40.percent, 6.seconds) + } + + step(StepCue.Text("Mina & Jonathan", "Ich weiß nur eins…")) { + leftSpotTarget = "Mina & Jonathan" + + onRun { + Spots.left.brightness.fade(100.percent, 8.seconds) + } + } + + lightStep(StepCue.MusicEnd) { + Spots.left.brightness.off(10.seconds) + FrontLights.all { it.brightness.fade(75.percent, 10.seconds) } + BlinderBars.all { it.brightness.off(4.seconds) } + Washs.both { it.brightness.off(4.seconds) } + backlightBar.brightness.off(6.seconds) + } +} \ No newline at end of file diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/Lucy.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/Lucy.kt index 6ca5a8c..66e4b84 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/Lucy.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Lucy.kt @@ -1,7 +1,81 @@ package de.moritzruth.dracula_musical.song +import de.moritzruth.dracula_musical.device.* import de.moritzruth.theaterdsl.show.SceneBuilderContext +import de.moritzruth.theaterdsl.show.StepCue +import de.moritzruth.theaterdsl.value.Color +import de.moritzruth.theaterdsl.value.degrees +import de.moritzruth.theaterdsl.value.percent +import kotlin.time.Duration.Companion.minutes +import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songLucy() { + lightStep(StepCue.MusicStart("Lucy", 2.minutes + 45.seconds)) { + backlightBar.color.fade(Color(hue = 315.degrees), 15.seconds) + Washs.both { + it.pointAtCeiling() + it.colorWheelMode.static(CoemarProWash.ColorWheelMode.White) + it.magenta.static(100.percent) + it.beamAngle.static(100.percent) + } + Tops.both { + it.startRoomMovement(4.0) + it.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.LightPink) + it.prismMode.static(FuturelightDmh160.PrismMode.OPEN) + } + } + + // TODO: Do more during the first part + + lightStep(StepCue.Custom("Refrain")) { + BlinderBars.all { + it.brightness.fade(25.percent, 2.seconds) + it.preset.static(StairvilleSplb.Preset.STUB) // red, flowy + } + + Washs.left.brightness.sine(6.seconds, start = 0.percent) + Washs.right.brightness.sine(6.seconds, start = 100.percent) + } + + lightStep(StepCue.Custom("Strophe")) { + Tops.both { it.brightness.sine(8.seconds, 20.percent, 100.percent) } + } + + lightStep(StepCue.Custom("Bridge")) { + Tops.both { it.brightness.sine(8.seconds, 20.percent, 100.percent) } + BlinderBars.all { + it.brightness.fade(40.percent, 10.seconds) + it.preset.static(StairvilleSplb.Preset.STUB) // different, red, flowy + } + } + + lightStep(StepCue.Custom("Refrain")) { + BlinderBars.all { it.brightness.fade(25.percent, 3.seconds) } + // TODO + } + + lightStep(StepCue.Text("Lucy", "oh Nick", "letzte Silbe")) { + Tops.both { it.brightness.pulseOnce(0.1.seconds, 1.seconds) } + } + + lightStep(StepCue.Custom("Interludium")) { + // TODO + } + + lightStep(StepCue.Custom("Refrain")) { + // TODO + } + + lightStep(StepCue.Custom("Schlussschlag")) { + // TODO + Washs.both { it.brightness.pulseOnce(0.1.seconds, 2.seconds) } + } + + step(StepCue.MusicEnd) { + Tops.both { it.pointAtStageMiddleSingleCenterMarking() } + Washs.both { it.magenta.reset() } + BlinderBars.all { it.brightness.off(3.seconds) } + backlightBar.brightness.off(3.seconds) + } } \ No newline at end of file