commit 83

This commit is contained in:
Moritz Ruth 2025-03-21 18:33:15 +01:00
parent 890abb5600
commit 72363fcf5e
Signed by: moritzruth
GPG key ID: C9BBAB79405EE56D
21 changed files with 121 additions and 110 deletions

View file

@ -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]") {

View file

@ -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
}
}

View file

@ -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))

View file

@ -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,24 +9,13 @@ 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 {
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)
}
}
}
step(StepCue.MusicEnd) {
BlinderBars.all { it.brightness.off(1.seconds) }

View file

@ -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 {

View file

@ -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) }
}

View file

@ -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)

View file

@ -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)

View file

@ -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"

View file

@ -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", "Unsre 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)

View file

@ -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()

View file

@ -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)

View file

@ -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)
@ -58,13 +59,11 @@ fun SceneBuilderContext.songLucy() {
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)

View file

@ -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)

View file

@ -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))

View file

@ -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()

View file

@ -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)

View file

@ -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"

View file

@ -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)

View file

@ -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

View file

@ -2,6 +2,8 @@
<button
:class="[$style.root, isActive ? 'bg-green-800' : 'bg-green-600']"
class="px-5 py-2 active:bg-green-800 transition duration-200 font-bold text-4"
@pointerdown="e => emit('pointerdown', e)"
@pointerup="e => emit('pointerup', e)"
@click="e => emit('click', e)"
>
<slot/>