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 6bb852b..7c12985 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/act/Act1.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/act/Act1.kt @@ -9,11 +9,12 @@ 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 ShowBuilderContext.act1() = act("1. Akt") { scene("Ouvertüre [4]") { - step(StepCue.MusicStart("Ouvertüre", 10.seconds)) { + step(StepCue.MusicStart("Ouvertüre", 1.minutes)) { curtainState = CurtainState.CLOSED props { @@ -96,12 +97,19 @@ fun ShowBuilderContext.act1() = act("1. Akt") { } } - step(StepCue.MusicStart("Umbau (Adel ist geil)", 10.seconds)) { + step(StepCue.MusicStart("Umbau (Adel ist geil)", 1.minutes + 30.seconds)) { actors { -"Hawkins / durch Mitte" -"Sekretärinnen / durch Mitte" } + curtainState = CurtainState.CLOSED + + props { + it[PropPosition.BACKDROP] = "Irrenanstalt" + it[PropPosition.CENTER] = "Medikamenten-Schrank" + } + onRun { FrontLights.all { it.brightness.off(6.seconds) } sidelight.brightness.off(6.seconds) @@ -286,7 +294,7 @@ fun ShowBuilderContext.act1() = act("1. Akt") { } } - step(StepCue.MusicStart("Umbau (Duett)", 10.seconds)) {} + step(StepCue.MusicStart("Umbau (Duett)", 1.minutes + 35.seconds)) {} } scene("Kaffeeklatsch [24]") { diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/device/AdjFogFury3000.kt b/src/main/kotlin/de/moritzruth/dracula_musical/device/AdjFogFury3000.kt index 248a6ba..d6ee4e4 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/device/AdjFogFury3000.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/device/AdjFogFury3000.kt @@ -8,14 +8,14 @@ import de.moritzruth.theaterdsl.dmx.DmxValue import kotlinx.collections.immutable.persistentSetOf class AdjFogFury3000(override val firstChannel: DmxAddress) : Device { - override val numberOfChannels = 4u + override val numberOfChannels = 3u val power = PercentageDV() override val dvs = persistentSetOf(power) override fun writeDmxData(writer: DmxDataWriter, isLightBehindCurtainOn: Boolean) { writer.writePercentage(power.getCurrentValue()) - writer.writeRaw(DmxValue(255u)) // interval (ignored) + writer.writeRaw(DmxValue(0u)) // interval (ignored) writer.writeRaw(DmxValue(255u)) // duration = constant } } \ No newline at end of file diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/device/CoemarProWash.kt b/src/main/kotlin/de/moritzruth/dracula_musical/device/CoemarProWash.kt index 99c4b89..351c5e3 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/device/CoemarProWash.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/device/CoemarProWash.kt @@ -84,6 +84,7 @@ class CoemarProWash(override val firstChannel: DmxAddress, private val invertAng writer.writeLowByte(pan) writer.writeLowByte(tilt) writer.writeRaw(DmxValue(0u)) // pan/tilt speed = maximum + // TODO: Turn off lamp when not in use writer.writeRaw(DmxValue(255u)) // fan speed and lamp control = no function writer.writeRaw(colorWheelMode.getCurrentValue().getDmxValue()) writer.writePercentage(cyan.getCurrentValue()) @@ -92,6 +93,7 @@ class CoemarProWash(override val firstChannel: DmxAddress, private val invertAng writer.writeRaw(DmxValue(0u)) // dimmer and color speed = maximum writer.writeRaw(DmxValue(0u)) // colour macro = off + // TODO: Fix // writer.writeRaw(DmxValue((beamAngle.getCurrentValue().value * 54 + 125).roundToInt().toUByte())) writer.writeRaw(DmxValue(0u)) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/AdelIstGeil.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/AdelIstGeil.kt index c414d3a..a604759 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/AdelIstGeil.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/AdelIstGeil.kt @@ -2,8 +2,6 @@ package de.moritzruth.dracula_musical.song import de.moritzruth.dracula_musical.device.BlinderBars import de.moritzruth.dracula_musical.device.StairvilleSplb -import de.moritzruth.theaterdsl.show.CurtainState -import de.moritzruth.theaterdsl.show.PropPosition import de.moritzruth.theaterdsl.show.SceneBuilderContext import de.moritzruth.theaterdsl.show.StepCue import de.moritzruth.theaterdsl.value.percent @@ -11,22 +9,11 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songAdelIstGeil() { - // TODO - - step(StepCue.MusicStart("Adel ist geil", 2.minutes + 15.seconds)) { - curtainState = CurtainState.CLOSED - - props { - it[PropPosition.BACKDROP] = "Irrenanstalt" - it[PropPosition.CENTER] = "Medikamenten-Schrank" - } - - onRun { - BlinderBars.all { - it.brightness.fade(25.percent, 5.seconds) - it.preset.static(StairvilleSplb.Preset.STUB) // jumpy, green - it.presetSpeed.static(40.percent) - } + lightStep(StepCue.MusicStart("Adel ist geil", 2.minutes + 40.seconds)) { + BlinderBars.all { + it.brightness.fade(25.percent, 5.seconds) + it.preset.static(StairvilleSplb.Preset.STUB) // jumpy, green + it.presetSpeed.static(40.percent) } } diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/DraculasZorn.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/DraculasZorn.kt index 79ddb6c..793d226 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/DraculasZorn.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/DraculasZorn.kt @@ -14,7 +14,7 @@ private fun StairvilleTlb.pulseSlow() = brightness.pulse(1.5.seconds, 0.15.secon private fun StairvilleTlb.pulseFast() = brightness.pulse(0.5.seconds, 0.1.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 100.percent) fun SceneBuilderContext.songDraculasZorn() { - step(StepCue.MusicStart("Draculas Zorn", 3.minutes + 50.seconds)) { + step(StepCue.MusicStart("Draculas Zorn", 4.minutes + 30.seconds)) { actors { +"Dracula / durchs Publikum" } @@ -162,7 +162,7 @@ fun SceneBuilderContext.songDraculasZorn() { } } - lightStep(StepCue.Custom("Musik: Einsetzen der E-Gitarre")) { + lightStep(StepCue.Custom("Musik: Tiefer Ton nach »brav«")) { backlightBar.color.fade(Color(hue = 0.degrees, saturation = 100.percent), 2.seconds) backlightBar.brightness.fade(75.percent, 2.seconds) @@ -217,14 +217,14 @@ fun SceneBuilderContext.songDraculasZorn() { } lightStep(StepCue.Custom("Musik: Fill-in")) { - FrontLights.all { it.brightness.off(2.seconds) } + FrontLights.all { it.brightness.off(3.seconds) } - sidelight.brightness.off(3.seconds) + sidelight.brightness.off(4.seconds) BlinderBars.all { it.preset.static(null) it.color.static(Color.WHITE) - it.brightness.pulseOnce(1.5.seconds, 3.seconds) + it.brightness.pulseOnce(1.5.seconds, 4.seconds) } } @@ -245,7 +245,7 @@ fun SceneBuilderContext.songDraculasZorn() { Washs.both { it.brightness.fade(100.percent, 2.seconds) } } - lightStep(StepCue.Custom("Musik: Einsetzen der E-Gitarre")) { + lightStep(StepCue.Text("Alle", "…deiner Macht.", "letzte Silbe")) { backlightBar.strobeSpeed.fade(80.percent, 3.seconds) BlinderBars.all { diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/DuettDraculaMina.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/DuettDraculaMina.kt index 163725a..cd67827 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/DuettDraculaMina.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/DuettDraculaMina.kt @@ -10,7 +10,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songDuettDraculaMina() { - step(StepCue.MusicStart("Duett: Dracula & Mina", 4.minutes + 30.seconds)) { + step(StepCue.MusicStart("Duett: Dracula & Mina", 4.minutes + 10.seconds)) { rightSpotTarget = "Mina" rightSpotTarget = "Dracula" @@ -29,7 +29,7 @@ fun SceneBuilderContext.songDuettDraculaMina() { } } - lightStep(StepCue.Custom("Musik: Strophe")) { + lightStep(StepCue.Text("Dracula", "Ich kenne dich!")) { FrontLights.all { it.brightness.off(15.seconds) } } diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/DuettMinaJonathan.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/DuettMinaJonathan.kt index f3cb4ca..74cb4ed 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/DuettMinaJonathan.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/DuettMinaJonathan.kt @@ -10,7 +10,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songDuettMinaJonathan() { - lightStep(StepCue.MusicStart("Duett", 3.minutes + 15.seconds)) { + lightStep(StepCue.MusicStart("Duett", 3.minutes + 50.seconds)) { FrontLights.all { it.brightness.fade(40.percent, 5.seconds) } Washs.both { it.pointAtCeiling() @@ -19,7 +19,7 @@ fun SceneBuilderContext.songDuettMinaJonathan() { } } - lightStep(StepCue.Custom("Musik: Strophe")) { + lightStep(StepCue.Text("Mina", "Ich hab seit gestern…", "Anfang")) { BlinderBars.all { it.preset.static(StairvilleSplb.Preset.STUB) // dreamy, flowy, pink, warm it.presetSpeed.static(10.percent) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/EsIstAngerichtet.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/EsIstAngerichtet.kt index b8afdb9..367b931 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/EsIstAngerichtet.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/EsIstAngerichtet.kt @@ -3,6 +3,7 @@ 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.show.greedyCueStep import de.moritzruth.theaterdsl.value.Color import de.moritzruth.theaterdsl.value.degrees import de.moritzruth.theaterdsl.value.percent @@ -10,7 +11,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songEsIstAngerichtet() { - step(StepCue.MusicStart("Es ist angerichtet", 2.minutes + 30.seconds)) { + step(StepCue.MusicStart("Es ist angerichtet", 2.minutes + 20.seconds)) { actors { // TODO: Expand +"Vampire" @@ -76,11 +77,9 @@ fun SceneBuilderContext.songEsIstAngerichtet() { backlightBar.brightness.pulse(1.seconds, 0.1.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 50.percent) } - lightStep(StepCue.Text("Vampire", "Aaah")) { - // Empty to prevent confusion with the next step - } + greedyCueStep(StepCue.Text("Vampire", "Aaah")) - repeat(2) { + repeat(3) { lightStep(StepCue.Text("Vampire", "Aaah")) { sidelight.brightness.fade(80.percent, 3.seconds) backlightBar.brightness.pulse(0.5.seconds, 0.1.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 50.percent) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/Finale.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/Finale.kt index fb11550..3d174d7 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/Finale.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Finale.kt @@ -5,10 +5,11 @@ import de.moritzruth.theaterdsl.show.SceneBuilderContext import de.moritzruth.theaterdsl.show.StepCue import de.moritzruth.theaterdsl.value.Color import de.moritzruth.theaterdsl.value.percent +import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songFinale() { - step(StepCue.MusicStart("Finale", 10.seconds)) { + step(StepCue.MusicStart("Finale", 4.minutes)) { actors { -"Mina" -"Jonathan" diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/FinaleErsterAkt.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/FinaleErsterAkt.kt index f06baae..79ef97e 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/FinaleErsterAkt.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/FinaleErsterAkt.kt @@ -1,10 +1,7 @@ package de.moritzruth.dracula_musical.song import de.moritzruth.dracula_musical.device.* -import de.moritzruth.theaterdsl.show.CurtainState -import de.moritzruth.theaterdsl.show.PropPosition -import de.moritzruth.theaterdsl.show.SceneBuilderContext -import de.moritzruth.theaterdsl.show.StepCue +import de.moritzruth.theaterdsl.show.* import de.moritzruth.theaterdsl.value.Color import de.moritzruth.theaterdsl.value.degrees import de.moritzruth.theaterdsl.value.percent @@ -16,7 +13,7 @@ private fun StairvilleTlb.pulseSlow() = brightness.pulse(0.8.seconds, 0.1.second private fun StairvilleTlb.pulseFast() = brightness.pulse(0.6.seconds, 0.1.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 100.percent) fun SceneBuilderContext.songFinaleErsterAkt() { - step(StepCue.MusicStart("Finale (1. Akt)", 4.minutes)) { + step(StepCue.MusicStart("Finale (1. Akt)", 4.minutes + 40.seconds)) { onRun { Washs.both { it.pointAtAudience() @@ -116,6 +113,8 @@ fun SceneBuilderContext.songFinaleErsterAkt() { } } + greedyCueStep(StepCue.Text("Vampire", "Wir sollen wohl gar nichts haben!", "Anfang")) + lightStep(StepCue.Text("Vampire", "Uns’re Kehlen sind verdorrt!", "Anfang")) { backlightBar.pulseSlow() backlightBar.color.fade(Color.WHITE, 0.4.seconds) @@ -175,6 +174,8 @@ fun SceneBuilderContext.songFinaleErsterAkt() { } } + greedyCueStep(StepCue.Text("Dracula", "…habt doch Geduld!", "Anfang")) + lightStep(StepCue.Text("Françoise", "Du sorgst für uns?", "Anfang")) { backlightBar.breathe() backlightBar.color.fade(Color.WHITE, 0.4.seconds) @@ -268,6 +269,8 @@ fun SceneBuilderContext.songFinaleErsterAkt() { } } + greedyCueStep(StepCue.Text("Dracula", "Viel schöner als er!", "Anfang")) + lightStep(StepCue.Text("Vampire", "Das ist uns egal!", "Anfang")) { backlightBar.brightness.fade(100.percent, 0.4.seconds) backlightBar.color.fade(Color.WHITE, 0.4.seconds) @@ -348,6 +351,8 @@ fun SceneBuilderContext.songFinaleErsterAkt() { } } + greedyCueStep(StepCue.Text("Vampire", "Das ist egal!", "Anfang")) + lightStep(StepCue.Text("Vampire", "Das ist egal!", "letzte Silbe")) { sidelight.brightness.fade(start = 0.percent, end = 100.percent, duration = 0.4.seconds) sidelight.strobeSpeed.static(0.percent) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/Irrenhaus.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/Irrenhaus.kt index 5e6cd40..ad89d9a 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/Irrenhaus.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Irrenhaus.kt @@ -9,7 +9,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songIrrenhaus() { - step(StepCue.MusicStart("Irrenhaus", 3.minutes)) { + step(StepCue.MusicStart("Irrenhaus", 3.minutes + 10.seconds)) { actors { +"Dr. Sewart / von rechts, 1. Tür" // TODO: Expand @@ -74,7 +74,7 @@ fun SceneBuilderContext.songIrrenhaus() { backlightBar.brightness.off(2.seconds) } - lightStep(StepCue.Custom("Musik: Strophe")) { + lightStep(StepCue.Text("Dr. Sewart", "Überall herrscht Größenwahn…", "Anfang")) { Spots.right.brightness.fade(100.percent, 1.seconds) BlinderBars.all { @@ -125,7 +125,7 @@ fun SceneBuilderContext.songIrrenhaus() { backlightBar.brightness.fade(50.percent, 1.seconds) } - lightStep(StepCue.Custom("Musik: Strophe")) { + lightStep(StepCue.Text("Dr. Sewart", "Wer nicht völlig spinnt…", "Anfang")) { Spots.right.brightness.fade(100.percent, 1.seconds) BlinderBars.all { @@ -180,7 +180,9 @@ fun SceneBuilderContext.songIrrenhaus() { } } - lightStep(StepCue.Text("Alle", "Gott sei Dank!")) { + lightStep(StepCue.Text("Alle", "Gott sei Dank!", "Anfang")) { + BlinderBars.all { it.presetSpeed.fade(80.percent, 4.seconds) } + Washs.both { it.brightness.off(0.5.seconds) it.pointAtAudience() diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/Kaffeeklatsch.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/Kaffeeklatsch.kt index 31d4f8f..be36a02 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/Kaffeeklatsch.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Kaffeeklatsch.kt @@ -9,7 +9,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songKaffeeklatsch() { - step(StepCue.MusicStart("Kaffeeklatsch", 3.minutes)) { + step(StepCue.MusicStart("Kaffeeklatsch", 2.minutes + 35.seconds)) { BlinderBars.all { it.preset.static(StairvilleSplb.Preset.STUB) // idk it.presetSpeed.static(50.percent) 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 d174120..c544224 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/Lucy.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Lucy.kt @@ -4,6 +4,7 @@ import de.moritzruth.dracula_musical.device.* import de.moritzruth.theaterdsl.device.reset import de.moritzruth.theaterdsl.show.SceneBuilderContext import de.moritzruth.theaterdsl.show.StepCue +import de.moritzruth.theaterdsl.show.greedyCueStep import de.moritzruth.theaterdsl.value.Color import de.moritzruth.theaterdsl.value.degrees import de.moritzruth.theaterdsl.value.percent @@ -11,7 +12,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songLucy() { - lightStep(StepCue.MusicStart("Lucy", 2.minutes + 45.seconds)) { + lightStep(StepCue.MusicStart("Lucy", 2.minutes + 25.seconds)) { sidelight.brightness.fade(30.percent, 15.seconds) backlightBar.brightness.fade(40.percent, 15.seconds) backlightBar.color.static(Color(hue = 315.degrees, saturation = 20.percent)) @@ -31,7 +32,7 @@ fun SceneBuilderContext.songLucy() { } lightStep(StepCue.Custom("Musik: Nächster Beat")) { - backlightBar.brightness.pulseOnce(0.4.seconds, 2.5.seconds, end = 40.percent) + backlightBar.brightness.pulseOnce(0.4.seconds, 4.seconds, end = 40.percent) BlinderBars.all { it.brightness.pulseOnce(0.4.seconds, 2.5.seconds, peak = 75.percent) @@ -52,19 +53,17 @@ fun SceneBuilderContext.songLucy() { } lightStep(StepCue.Custom("Musik: Nächster Beat")) { - BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 0.5.seconds, end = 25.percent)} + BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 0.5.seconds, end = 25.percent) } Washs.left.brightness.sine(6.seconds, start = 0.percent) Washs.right.brightness.sine(6.seconds, start = 100.percent) } - lightStep(StepCue.Custom("Musik: Strophe")) { + lightStep(StepCue.Text("Lucy", "Du hast den besten Hintern…", "Anfang")) { Tops.both { it.brightness.sine(8.seconds, 20.percent, 100.percent) } } - lightStep(StepCue.Text("Lucy", "Oh Nick…")) { - // To prevent confusion with the next step - } + greedyCueStep(StepCue.Text("Lucy", "Oh Nick…")) lightStep(StepCue.Text("Lucy", "oh Nick", "letzte Silbe")) { Tops.both { it.brightness.pulseOnce(0.1.seconds, 1.seconds) } @@ -82,8 +81,8 @@ fun SceneBuilderContext.songLucy() { lightStep(StepCue.Custom("Musik: Langes Fill-in beginnt")) { BlinderBars.all { - it.presetSpeed.fade(100.percent, 4.seconds) - it.brightness.fade(50.percent, 4.seconds) + it.presetSpeed.fade(100.percent, 5.seconds) + it.brightness.fade(50.percent, 5.seconds) } } @@ -129,16 +128,14 @@ fun SceneBuilderContext.songLucy() { } } - lightStep(StepCue.Custom("Nächster Beat")) { + lightStep(StepCue.Custom("1. Beat")) { BlinderBars.all { it.brightness.off(0.5.seconds) } FrontLights.all { it.brightness.off(0.5.seconds) } } - lightStep(StepCue.Custom("Nächster Beat")) { - // intentionally left blank - } + greedyCueStep(StepCue.Custom("2. Beat")) - lightStep(StepCue.Custom("Nächster Beat")) { + lightStep(StepCue.Custom("3. Beat")) { Washs.both { it.brightness.pulseOnce(0.1.seconds, 2.seconds) } backlightBar.brightness.pulseOnce(0.1.seconds, 2.seconds) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/Maskenball.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/Maskenball.kt index d9096fb..1b185bb 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/Maskenball.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Maskenball.kt @@ -6,13 +6,27 @@ import de.moritzruth.theaterdsl.show.PropPosition 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.songMaskenball() { - step(StepCue.MusicStart("Maskenball", 2.minutes + 20.seconds)) { + step(StepCue.MusicStart("Maskenball", 3.minutes + 10.seconds)) { + props { + it[PropPosition.BACKDROP] = "Dorfplatz" + } + } + + step(StepCue.Custom("Musik: Vierter Glockenschlag")) { + curtainState = CurtainState.OPEN + + onRun { + backlightBar.color.static(Color.DARK_BLUE) + backlightBar.brightness.fade(50.percent, 5.seconds) + } + } + + step(StepCue.Custom("Musik: Einsetzen der Drums")) { actors { +"Hawkins / von links" +"Eloïse / von links" @@ -22,15 +36,10 @@ fun SceneBuilderContext.songMaskenball() { +"Besucher des Maskenballs / von links & durch Mitte" } - curtainState = CurtainState.OPEN - - props { - it[PropPosition.BACKDROP] = "Dorfplatz" - } - onRun { - backlightBar.color.static(Color(hue = 310.degrees, saturation = 80.percent)) - backlightBar.brightness.fade(40.percent, 5.seconds) + backlightBar.brightness.off(4.seconds) + + FrontLights.all { it.brightness.fade(100.percent, 2.seconds) } Tops.both { it.startRoomMovement(5.0) @@ -46,7 +55,7 @@ fun SceneBuilderContext.songMaskenball() { } } - lightStep(StepCue.Custom("Musik: Einsetzen der Drums")) { + lightStep(StepCue.Text("Alle", "Maskenball!", "Anfang")) { backlightBar.color.cycle(8.seconds) backlightBar.brightness.fade(80.percent, 5.seconds) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/Mittsommernacht.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/Mittsommernacht.kt index ecd4b58..bae40d8 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/Mittsommernacht.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Mittsommernacht.kt @@ -11,7 +11,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songMittsommernacht() { - step(StepCue.MusicStart("Mittsommernacht", 4.minutes + 30.seconds)) { + step(StepCue.MusicStart("Mittsommernacht", 5.minutes)) { actors { // TODO: Expand +"Einwohner / von links & durch Mitte" @@ -24,19 +24,8 @@ fun SceneBuilderContext.songMittsommernacht() { it.brightness.fade(100.percent, 6.seconds) } - Tops.both { - it.startRoomMovement(3.0) - it.brightness.fade(100.percent, 2.seconds) - it.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.Rotate(10.percent)) - it.prismMode.static(FuturelightDmh160.PrismMode.FACETS_8) - it.prismRotationSpeed.static(20.percent) - } - - backlightBar.brightness.fade(75.percent, 2.seconds) - backlightBar.color.cycle(20.seconds) - Washs.both { - it.brightness.pulseOnce(2.seconds, 5.seconds, 100.percent) + it.brightness.pulseOnce(2.seconds, 5.seconds, 75.percent) it.beamAngle.fade(0.percent, 2.seconds) it.pointAtCeiling(6.seconds) } @@ -49,6 +38,9 @@ fun SceneBuilderContext.songMittsommernacht() { } lightStep(StepCue.Custom("Musik: Drums-Pattern wechselt")) { + backlightBar.color.cycle(20.seconds) + backlightBar.brightness.fade(75.percent, 2.seconds) + BlinderBars.all { it.brightness.fade(25.percent, 1.seconds) it.white.static(0.percent) @@ -57,11 +49,7 @@ fun SceneBuilderContext.songMittsommernacht() { } } - lightStep(StepCue.Custom("Musik: Strophe")) { - Tops.both { - it.brightness.off(2.seconds) - } - + lightStep(StepCue.Text("Alle", "Heute sind die Gespenster los…", "Anfang")) { BlinderBars.all { it.presetSpeed.static(50.percent) it.preset.static(StairvilleSplb.Preset.STUB) // jumpy, warm @@ -105,15 +93,9 @@ fun SceneBuilderContext.songMittsommernacht() { } } - lightStep(StepCue.Custom("Musik: Refrain")) { - BlinderBars.all { - it.brightness.fade(25.percent, 1.seconds) - it.presetSpeed.static(50.percent) - it.preset.static(StairvilleSplb.Preset.STUB) // jumpy, warm - } - - backlightBar.brightness.fade(75.percent, 2.seconds) - backlightBar.color.cycle(12.seconds) + lightStep(StepCue.Text("Alle", "…grusel, grusel, aaah", "letzte Silbe")) { + backlightBar.brightness.fade(75.percent, 5.seconds) + backlightBar.color.static(Color.WARM_WHITE) Washs.both { it.pointAtStageCenter() @@ -121,6 +103,16 @@ fun SceneBuilderContext.songMittsommernacht() { } } + lightStep(StepCue.Text("Alle", "Mittsommernacht!", "Anfang")) { + backlightBar.color.cycle(12.seconds) + + BlinderBars.all { + it.brightness.fade(25.percent, 1.seconds) + it.presetSpeed.static(50.percent) + it.preset.static(StairvilleSplb.Preset.STUB) // jumpy, warm + } + } + lightStep(StepCue.Text("Alle", "Heute ist die Mittsommer…", "letzte Silbe")) { BlinderBars.all { it.brightness.fade(start = 40.percent, end = 0.percent, duration = 5.seconds) @@ -133,7 +125,7 @@ fun SceneBuilderContext.songMittsommernacht() { Washs.both { it.brightness.static(100.percent) } } - step(StepCue.Custom("Musik: 1. Hit")) { + step(StepCue.Custom("Musik: 1. Beat")) { actors { +"Dracula / durch Mitte" +"Eloïse / durch Mitte" @@ -146,15 +138,15 @@ fun SceneBuilderContext.songMittsommernacht() { } } - lightStep(StepCue.Custom("Musik: 2. Hit")) { + lightStep(StepCue.Custom("Musik: 2. Beat")) { backlightBar.brightness.off(0.5.seconds) } - lightStep(StepCue.Custom("Musik: 3. Hit")) { + lightStep(StepCue.Custom("Musik: 3. Beat")) { Washs.both { it.brightness.off(0.5.seconds) } } - lightStep(StepCue.Custom("Musik: 4. Hit")) { + lightStep(StepCue.Custom("Musik: 4. Beat")) { BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 0.3.seconds, 100.percent) } Washs.both { @@ -162,7 +154,7 @@ fun SceneBuilderContext.songMittsommernacht() { } } - lightStep(StepCue.Custom("Musik: 5. Hit")) { + lightStep(StepCue.Custom("Musik: 5. Beat")) { BlinderBars.all { it.white.off() it.color.static(Color(hue = 345.degrees)) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/Quartett.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/Quartett.kt index 1be2cd6..86f8a8a 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/Quartett.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/Quartett.kt @@ -13,7 +13,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songQuartett() { - step(StepCue.MusicStart("Quartett", 3.minutes)) { + step(StepCue.MusicStart("Quartett", 2.minutes + 40.seconds)) { onRun { Washs.both { it.pointAtStageCenter() diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/RepriseDuett.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/RepriseDuett.kt index c995241..879534e 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/RepriseDuett.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/RepriseDuett.kt @@ -11,7 +11,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songRepriseDuett() { - lightStep(StepCue.MusicStart("Reprise: Duett", 1.minutes + 15.seconds)) { + lightStep(StepCue.MusicStart("Reprise: Duett", 2.minutes + 10.seconds)) { Washs.both { it.pointAtCeiling() it.colorWheelMode.static(CoemarProWash.ColorWheelMode.White) diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/RepriseMaskenball.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/RepriseMaskenball.kt index 31565b7..d9a92bf 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/RepriseMaskenball.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/RepriseMaskenball.kt @@ -5,10 +5,11 @@ import de.moritzruth.theaterdsl.show.SceneBuilderContext import de.moritzruth.theaterdsl.show.StepCue import de.moritzruth.theaterdsl.value.Color import de.moritzruth.theaterdsl.value.percent +import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songRepriseMaskenball() { - step(StepCue.MusicStart("Reprise: Maskenball", 50.seconds)) { + step(StepCue.MusicStart("Reprise: Maskenball", 1.minutes + 30.seconds)) { actors { // TODO: Expand +"Besucher des Maskenballs / durch Mitte" diff --git a/src/main/kotlin/de/moritzruth/dracula_musical/song/StreitDerVampire.kt b/src/main/kotlin/de/moritzruth/dracula_musical/song/StreitDerVampire.kt index 5556eef..9a3db64 100644 --- a/src/main/kotlin/de/moritzruth/dracula_musical/song/StreitDerVampire.kt +++ b/src/main/kotlin/de/moritzruth/dracula_musical/song/StreitDerVampire.kt @@ -10,7 +10,7 @@ import kotlin.time.Duration.Companion.minutes import kotlin.time.Duration.Companion.seconds fun SceneBuilderContext.songStreitDerVampire() { - lightStep(StepCue.MusicStart("Streit der Vampire", 1.minutes + 30.seconds)) { + lightStep(StepCue.MusicStart("Streit der Vampire", 1.minutes + 40.seconds)) { BlinderBars.all { it.preset.static(StairvilleSplb.Preset.STUB) // chase, single direction it.presetSpeed.static(40.percent) diff --git a/src/main/kotlin/de/moritzruth/theaterdsl/show/Dsl.kt b/src/main/kotlin/de/moritzruth/theaterdsl/show/Dsl.kt index bdb2f6f..98918ca 100644 --- a/src/main/kotlin/de/moritzruth/theaterdsl/show/Dsl.kt +++ b/src/main/kotlin/de/moritzruth/theaterdsl/show/Dsl.kt @@ -27,6 +27,12 @@ interface SceneBuilderContext { fun lightStep(cue: StepCue, runner: StepRunner) } +/** + * Inserts a step doing nothing. + * Intended to be for cases where the cue of the following step could be confused with the cue of this step if this step would not exist. + */ +fun SceneBuilderContext.greedyCueStep(cue: StepCue) {} + @TheaterDslMarker interface StepDataBuilderContext { val props: PropsBuilderMap diff --git a/ui/src/components/Button.vue b/ui/src/components/Button.vue index 5d2d97d..4119ffc 100644 --- a/ui/src/components/Button.vue +++ b/ui/src/components/Button.vue @@ -2,6 +2,8 @@