commit 69
This commit is contained in:
parent
2153b67d8f
commit
9114af9b2c
11 changed files with 538 additions and 43 deletions
|
@ -13,17 +13,6 @@ import kotlin.time.Duration.Companion.seconds
|
||||||
|
|
||||||
fun ShowBuilderContext.act1() = act("Erster Akt") {
|
fun ShowBuilderContext.act1() = act("Erster Akt") {
|
||||||
scene("Ouvertüre") {
|
scene("Ouvertüre") {
|
||||||
lightStep(StepCue.Custom("1%")) {
|
|
||||||
backlightBar.color.static(Color.WHITE)
|
|
||||||
backlightBar.brightness.static(1.percent)
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i in 10.rangeTo(100) step 10) {
|
|
||||||
lightStep(StepCue.Custom("$i%")) {
|
|
||||||
backlightBar.brightness.static(i.percent)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
step(StepCue.MusicStart("Ouvertüre", 10.seconds)) {
|
step(StepCue.MusicStart("Ouvertüre", 10.seconds)) {
|
||||||
curtainState = CurtainState.CLOSED
|
curtainState = CurtainState.CLOSED
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package de.moritzruth.dracula_musical.act
|
package de.moritzruth.dracula_musical.act
|
||||||
|
|
||||||
import de.moritzruth.dracula_musical.device.*
|
import de.moritzruth.dracula_musical.device.*
|
||||||
import de.moritzruth.dracula_musical.song.songDuettDraculaMina
|
import de.moritzruth.dracula_musical.song.*
|
||||||
import de.moritzruth.dracula_musical.song.songMaskenball
|
import de.moritzruth.theaterdsl.show.CurtainState
|
||||||
import de.moritzruth.dracula_musical.song.songRepriseMaskenball
|
import de.moritzruth.theaterdsl.show.PropPosition
|
||||||
import de.moritzruth.theaterdsl.show.ShowBuilderContext
|
import de.moritzruth.theaterdsl.show.ShowBuilderContext
|
||||||
import de.moritzruth.theaterdsl.show.StepCue
|
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 de.moritzruth.theaterdsl.value.percent
|
||||||
import kotlin.time.Duration.Companion.seconds
|
import kotlin.time.Duration.Companion.seconds
|
||||||
|
|
||||||
|
@ -56,6 +58,8 @@ fun ShowBuilderContext.act2() = act("Zweiter Akt") {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
step(StepCue.Text("Ascot", "Oberschwester!")) {}
|
||||||
|
|
||||||
step(StepCue.Text("Ascot", "Oberschwester!")) {
|
step(StepCue.Text("Ascot", "Oberschwester!")) {
|
||||||
actors {
|
actors {
|
||||||
-"Ascot / durch Mitte"
|
-"Ascot / durch Mitte"
|
||||||
|
@ -93,14 +97,290 @@ fun ShowBuilderContext.act2() = act("Zweiter Akt") {
|
||||||
-"Kaffeetanten / durch Mitte"
|
-"Kaffeetanten / durch Mitte"
|
||||||
-"Hawkins / durch Mitte"
|
-"Hawkins / durch Mitte"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.all { it.brightness.fade(75.percent, 10.seconds) }
|
||||||
|
backlightBar.brightness.fade(25.percent, 10.seconds)
|
||||||
|
|
||||||
|
Tops.both {
|
||||||
|
it.startRoomMovement(2.0)
|
||||||
|
it.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.White)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Custom("Lucy bedroht Dr. Sewart (mit Musik)")) {
|
lightStep(StepCue.Custom("Van Helsing zückt das Kreuz (mit Musik)")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.brightness.fade(100.percent, 2.seconds)
|
||||||
|
it.preset.static(StairvilleSplb.Preset.STUB) // switching, hectic
|
||||||
|
it.presetSpeed.static(100.percent)
|
||||||
|
}
|
||||||
|
|
||||||
|
Tops.both {
|
||||||
|
it.pointAtStageMiddleSingleCenterMarking()
|
||||||
|
it.strobeSpeed.rampDown(4.seconds)
|
||||||
|
it.brightness.static(100.percent)
|
||||||
|
}
|
||||||
|
|
||||||
|
FrontLights.all { it.brightness.fade(100.percent, 2.seconds) }
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Custom("Lucy ist geflüchtet")) {
|
||||||
|
actors {
|
||||||
|
-"Lucy"
|
||||||
|
}
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
Tops.both { it.brightness.off() }
|
||||||
|
BlinderBars.all { it.brightness.off(1.seconds) }
|
||||||
|
FrontLights.all { it.brightness.fade(75.percent, 1.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
songVanHelsing()
|
||||||
|
|
||||||
|
step(StepCue.Text("Van Helsing", "… stirbt sie einen qualvollen Tod.")) {
|
||||||
|
actors {
|
||||||
|
+"Hawkins"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Text("Van Helsing", "Dann schnell!")) {
|
||||||
|
actors {
|
||||||
|
-"Van Helsing"
|
||||||
|
-"Dr. Sewart"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Text("Hawkins", "… ein Bad nehmen – vorher!")) {
|
||||||
|
actors {
|
||||||
|
-"Hawkins"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.MusicStart("Umbau (Adel ist geil)", 10.seconds)) {
|
||||||
|
curtainState = CurtainState.CLOSED
|
||||||
|
|
||||||
|
props {
|
||||||
|
it[PropPosition.BACKDROP] = "Irrenanstalt"
|
||||||
|
it[PropPosition.CENTER] = "Medikamenten-Schrank"
|
||||||
|
}
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.center { it.brightness.off(10.seconds) }
|
||||||
|
backlightBar.brightness.off(15.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("Wiederholungstäter") {
|
||||||
|
step(StepCue.MusicEnd) {
|
||||||
|
actors {
|
||||||
|
+"Mina / von rechts, 2. Tür"
|
||||||
|
+"Ascot / von rechts, 2. Tür"
|
||||||
|
}
|
||||||
|
|
||||||
|
curtainState = CurtainState.OPEN
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.center { it.brightness.fade(40.percent, 8.seconds) }
|
||||||
|
|
||||||
|
sidelight.color1.fadeRandomAround(230.degrees, 30.degrees, 2.seconds)
|
||||||
|
sidelight.color2.fadeRandomAround(230.degrees, 35.degrees, 4.seconds)
|
||||||
|
sidelight.color3.static(Color(hue = 230.degrees, saturation = 20.percent))
|
||||||
|
sidelight.color4.static(Color(hue = 230.degrees, saturation = 20.percent))
|
||||||
|
sidelight.brightness.fade(50.percent, 8.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Text("Ascot", "… an der Nase herumführen!")) {
|
||||||
|
actors {
|
||||||
|
-"Mina / nach links"
|
||||||
|
-"Ascot / nach links"
|
||||||
|
+"Backe / durch Mitte"
|
||||||
|
+"Timmy / durch Mitte"
|
||||||
|
}
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.center { it.brightness.off(8.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Text("Backe", "Nein, dir, du Pfeife!")) {
|
||||||
|
actors {
|
||||||
|
+"Ascot / von links"
|
||||||
|
}
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.center { it.brightness.fade(40.percent, 5.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Text("Backe", "… und ruckzuck sind alle glücklich.")) {
|
||||||
|
actors {
|
||||||
|
-"Ascot / nach rechts, 1. Tür"
|
||||||
|
-"Backe / nach rechts, 1. Tür"
|
||||||
|
-"Timmy / nach rechts, 1. Tür"
|
||||||
|
+"Dracula / von rechts"
|
||||||
|
+"Renfield / hinter Fenster"
|
||||||
|
}
|
||||||
|
|
||||||
|
rightSpotTarget = "Dracula (rechts)"
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Dracula erscheint")) {
|
||||||
|
Spots.right.brightness.fade(100.percent, 2.seconds)
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Text("Dracula", "Still wie eine Leiche. Idiot.")) {
|
||||||
|
actors {
|
||||||
|
-"Renfield / tot"
|
||||||
|
-"Dracula / nach rechts, 2. Tür"
|
||||||
|
+"Jonathan / von rechts, 1. Tür"
|
||||||
|
}
|
||||||
|
|
||||||
|
rightSpotTarget = null
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
Spots.right.brightness.off(2.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("So viele Vampire!") {
|
||||||
|
step(StepCue.Text("Jonathan", "Ich bin’s! Jonathan!")) {
|
||||||
|
actors {
|
||||||
|
+"Eloïse / durch Mitte"
|
||||||
|
+"Françoise / durch Mitte"
|
||||||
|
+"Bernadette / durch Mitte"
|
||||||
|
+"Lucy / von links"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
songQuartett()
|
||||||
|
|
||||||
|
step(StepCue.Custom("Die Vampire nähern sich Jonathan")) {
|
||||||
|
actors {
|
||||||
|
+"Van Helsing / durch Mitte"
|
||||||
|
+"Dr. Sewart / von rechts"
|
||||||
|
}
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
Tops.both {
|
||||||
|
it.startRoomMovement(2.0)
|
||||||
|
it.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.White)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Van Helsing zückt das Kreuz (mit Musik)")) {
|
||||||
|
Tops.both {
|
||||||
|
it.pointAtStageMiddleSingleCenterMarking()
|
||||||
|
it.strobeSpeed.rampDown(4.seconds)
|
||||||
|
it.brightness.static(100.percent)
|
||||||
|
}
|
||||||
|
|
||||||
|
FrontLights.all { it.brightness.fade(100.percent, 2.seconds) }
|
||||||
|
|
||||||
|
backlightBar.brightness.pulseOnce(1.seconds, 3.seconds)
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(100.percent, 2.seconds)
|
it.brightness.fade(100.percent, 2.seconds)
|
||||||
it.preset.static(StairvilleSplb.Preset.STUB) // switching, hectic
|
it.preset.static(StairvilleSplb.Preset.STUB) // switching, hectic
|
||||||
it.presetSpeed.static(100.percent)
|
it.presetSpeed.static(100.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
step(StepCue.Custom("Die Vampire sind geflüchtet")) {
|
||||||
|
actors {
|
||||||
|
-"Bernadette / nach links"
|
||||||
|
-"Eloïse / durch Mitte"
|
||||||
|
-"Françoise / nach rechts"
|
||||||
|
-"Lucy / nach rechts"
|
||||||
|
}
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
BlinderBars.all { it.brightness.off(1.seconds) }
|
||||||
|
Tops.both { it.brightness.off() }
|
||||||
|
FrontLights.all { it.brightness.fade(75.percent, 1.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Custom("Van Helsing öffnet die Tür")) {
|
||||||
|
actors {
|
||||||
|
+"Dracula / hinter 2. Tür von rechts"
|
||||||
|
+"Mina / in Draculas Armen"
|
||||||
|
}
|
||||||
|
|
||||||
|
rightSpotTarget = "Dracula & Mina (2. Tür von rechts)"
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
Spots.right.brightness.static(100.percent)
|
||||||
|
Tops.both { it.startRoomMovement(2.0) }
|
||||||
|
Washs.both {
|
||||||
|
it.pointAtCeiling()
|
||||||
|
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Van Helsing zückt das Kreuz (mit Musik)")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.brightness.fade(100.percent, 2.seconds)
|
||||||
|
it.preset.static(StairvilleSplb.Preset.STUB) // switching, hectic
|
||||||
|
it.presetSpeed.static(100.percent)
|
||||||
|
}
|
||||||
|
|
||||||
|
Tops.both {
|
||||||
|
it.pointAtStageMiddleSingleCenterMarking()
|
||||||
|
it.strobeSpeed.rampDown(4.seconds)
|
||||||
|
it.brightness.static(100.percent)
|
||||||
|
}
|
||||||
|
|
||||||
|
FrontLights.all { it.brightness.fade(100.percent, 2.seconds) }
|
||||||
|
|
||||||
|
Washs.both {
|
||||||
|
it.pointAtAudience(2.seconds)
|
||||||
|
it.brightness.rampUp(1.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Custom("Dracula ist geflüchtet")) {
|
||||||
|
actors {
|
||||||
|
-"Dracula"
|
||||||
|
-"Mina"
|
||||||
|
}
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
BlinderBars.all { it.brightness.off(1.seconds) }
|
||||||
|
Tops.both { it.brightness.off() }
|
||||||
|
Washs.both { it.brightness.off() }
|
||||||
|
FrontLights.all { it.brightness.fade(75.percent, 1.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Einsetzen der Drums")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.preset.static(StairvilleSplb.Preset.STUB) // chase, back-and-forth, hectic
|
||||||
|
it.presetSpeed.static(40.percent)
|
||||||
|
it.brightness.fade(40.percent, 0.5.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.Text("Van Helsing", "Wir müssen sie finden! Schnell!")) {
|
||||||
|
actors {
|
||||||
|
-"Van Helsing / nach rechts, 1. Tür"
|
||||||
|
-"Dr. Sewart / nach rechts, 1. Tür"
|
||||||
|
-"Jonathan / nach rechts, 1. Tür"
|
||||||
|
}
|
||||||
|
|
||||||
|
curtainState = CurtainState.CLOSED // fast
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.all { it.brightness.off(3.seconds) }
|
||||||
|
sidelight.brightness.off(3.seconds)
|
||||||
|
BlinderBars.all { it.brightness.off(2.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -62,13 +62,13 @@ class CoemarProWash(override val firstChannel: DmxAddress, private val invertAng
|
||||||
}
|
}
|
||||||
|
|
||||||
fun pointAtCeiling(fadeDuration: Duration = Duration.ZERO) {
|
fun pointAtCeiling(fadeDuration: Duration = Duration.ZERO) {
|
||||||
pan.fade(if (invertAngles) 300.degrees else 400.degrees, fadeDuration) // TODO: Fade von guests aus testen, soll über die Wand gehen
|
pan.fade(360.degrees, fadeDuration)
|
||||||
tilt.fade(120.degrees, fadeDuration)
|
tilt.fade(120.degrees, fadeDuration)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun pointAtAudience() {
|
fun pointAtAudience(fadeDuration: Duration = Duration.ZERO) {
|
||||||
pan.static(360.degrees)
|
pan.fade(360.degrees, fadeDuration)
|
||||||
tilt.static(240.degrees)
|
tilt.fade(240.degrees, fadeDuration)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val dvs = persistentSetOf(
|
override val dvs = persistentSetOf(
|
||||||
|
|
|
@ -2,18 +2,23 @@ package de.moritzruth.dracula_musical.device
|
||||||
|
|
||||||
import de.moritzruth.theaterdsl.device.DeviceGroup
|
import de.moritzruth.theaterdsl.device.DeviceGroup
|
||||||
import de.moritzruth.theaterdsl.dmx.DmxAddress
|
import de.moritzruth.theaterdsl.dmx.DmxAddress
|
||||||
|
import de.moritzruth.theaterdsl.dmx.DmxValue
|
||||||
import kotlinx.collections.immutable.persistentSetOf
|
import kotlinx.collections.immutable.persistentSetOf
|
||||||
|
|
||||||
object FrontLights {
|
object FrontLights {
|
||||||
val left = DeviceGroup(SimpleDimmer(DmxAddress(1u)), SimpleDimmer(DmxAddress(2u)))
|
private const val GAMMA = 4.0
|
||||||
val center = DeviceGroup(SimpleDimmer(DmxAddress(4u)), SimpleDimmer(DmxAddress(5u)))
|
private val MINIMUM_VISIBLE_VALUE = DmxValue(40u)
|
||||||
val right = DeviceGroup(SimpleDimmer(DmxAddress(7u)), SimpleDimmer(DmxAddress(8u)))
|
val left = DeviceGroup(SimpleDimmer(DmxAddress(1u), GAMMA, MINIMUM_VISIBLE_VALUE), SimpleDimmer(DmxAddress(2u), GAMMA, MINIMUM_VISIBLE_VALUE))
|
||||||
|
val center = DeviceGroup(SimpleDimmer(DmxAddress(4u), GAMMA, MINIMUM_VISIBLE_VALUE), SimpleDimmer(DmxAddress(5u), GAMMA, MINIMUM_VISIBLE_VALUE))
|
||||||
|
val right = DeviceGroup(SimpleDimmer(DmxAddress(7u), GAMMA, MINIMUM_VISIBLE_VALUE), SimpleDimmer(DmxAddress(8u), GAMMA, MINIMUM_VISIBLE_VALUE))
|
||||||
val all = left + center + right
|
val all = left + center + right
|
||||||
}
|
}
|
||||||
|
|
||||||
object Spots {
|
object Spots {
|
||||||
val left = SimpleDimmer(DmxAddress(10u))
|
private const val GAMMA = 2.0
|
||||||
val right = SimpleDimmer(DmxAddress(11u))
|
private val MINIMUM_VISIBLE_VALUE = DmxValue(40u)
|
||||||
|
val left = SimpleDimmer(DmxAddress(10u), GAMMA, MINIMUM_VISIBLE_VALUE)
|
||||||
|
val right = SimpleDimmer(DmxAddress(11u), GAMMA, MINIMUM_VISIBLE_VALUE)
|
||||||
}
|
}
|
||||||
|
|
||||||
object Tops {
|
object Tops {
|
||||||
|
|
|
@ -4,14 +4,24 @@ import de.moritzruth.theaterdsl.device.Device
|
||||||
import de.moritzruth.theaterdsl.device.PercentageDV
|
import de.moritzruth.theaterdsl.device.PercentageDV
|
||||||
import de.moritzruth.theaterdsl.dmx.DmxAddress
|
import de.moritzruth.theaterdsl.dmx.DmxAddress
|
||||||
import de.moritzruth.theaterdsl.dmx.DmxDataWriter
|
import de.moritzruth.theaterdsl.dmx.DmxDataWriter
|
||||||
|
import de.moritzruth.theaterdsl.dmx.DmxValue
|
||||||
|
import de.moritzruth.theaterdsl.value.Percentage
|
||||||
import kotlinx.collections.immutable.persistentSetOf
|
import kotlinx.collections.immutable.persistentSetOf
|
||||||
|
import kotlin.math.pow
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
class SimpleDimmer(channel: DmxAddress) : Device {
|
class SimpleDimmer(channel: DmxAddress, private val gamma: Double = 1.0, private val minimumVisibleValue: DmxValue = DmxValue(0u)) : Device {
|
||||||
override val firstChannel = channel
|
override val firstChannel = channel
|
||||||
override val numberOfChannels: UInt = 1u
|
override val numberOfChannels: UInt = 1u
|
||||||
|
|
||||||
override fun writeDmxData(writer: DmxDataWriter, isLightBehindCurtainOn: Boolean) {
|
override fun writeDmxData(writer: DmxDataWriter, isLightBehindCurtainOn: Boolean) {
|
||||||
writer.writePercentage(brightness.getCurrentValue())
|
val adjustedBrightness = Percentage(brightness.getCurrentValue().value.pow(gamma))
|
||||||
|
if (adjustedBrightness.value == 0.0) writer.writeRaw(DmxValue(0u))
|
||||||
|
else writer.writeRaw(
|
||||||
|
DmxValue(
|
||||||
|
adjustedBrightness.ofRange(minimumVisibleValue.value.toDouble()..DmxValue.VALUE_RANGE.endInclusive.toDouble()).roundToInt().toUByte()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val brightness = PercentageDV()
|
val brightness = PercentageDV()
|
||||||
|
|
|
@ -43,7 +43,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
step(StepCue.Custom("Musik: Takt nach »Macht«")) {
|
step(StepCue.Custom("Musik: Breakdown")) {
|
||||||
rightSpotTarget = "Dracula"
|
rightSpotTarget = "Dracula"
|
||||||
|
|
||||||
onRun {
|
onRun {
|
||||||
|
@ -58,7 +58,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Text("Eloïse", "Was?")) {
|
lightStep(StepCue.Text("Eloïse", "Was?")) {
|
||||||
sidelight.brightness.fade(40.percent, 10.seconds)
|
sidelight.brightness.fade(100.percent, 10.seconds)
|
||||||
FrontLights.all { it.brightness.fade(75.percent, 10.seconds) }
|
FrontLights.all { it.brightness.fade(75.percent, 10.seconds) }
|
||||||
Washs.both { it.brightness.pulse(1.5.seconds, 0.1.seconds, 0.4.seconds) }
|
Washs.both { it.brightness.pulse(1.5.seconds, 0.1.seconds, 0.4.seconds) }
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Text("Bernadette", "Er ist bei uns eingebrochen", "Anfang")) {
|
lightStep(StepCue.Text("Bernadette", "Er ist bei uns eingebrochen", "Anfang")) {
|
||||||
sidelight.brightness.fade(40.percent, 10.seconds)
|
sidelight.brightness.fade(100.percent, 10.seconds)
|
||||||
backlightBar.pulseSlow()
|
backlightBar.pulseSlow()
|
||||||
FrontLights.all { it.brightness.fade(75.percent, 10.seconds) }
|
FrontLights.all { it.brightness.fade(75.percent, 10.seconds) }
|
||||||
Washs.both { it.brightness.pulse(1.5.seconds, 0.1.seconds, 0.4.seconds) }
|
Washs.both { it.brightness.pulse(1.5.seconds, 0.1.seconds, 0.4.seconds) }
|
||||||
|
@ -139,8 +139,8 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Custom("Musik: Fill-in")) {
|
lightStep(StepCue.Custom("Musik: Fill-in")) {
|
||||||
backlightBar.color.fade(Color.WARM_WHITE, 2.seconds)
|
backlightBar.color.static(Color.WARM_WHITE)
|
||||||
backlightBar.brightness.fade(50.percent, 2.seconds)
|
backlightBar.brightness.fade(50.percent, 4.seconds)
|
||||||
|
|
||||||
Washs.both {
|
Washs.both {
|
||||||
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(20.percent))
|
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(20.percent))
|
||||||
|
@ -166,7 +166,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
backlightBar.color.fade(Color(hue = 0.degrees, saturation = 100.percent), 2.seconds)
|
backlightBar.color.fade(Color(hue = 0.degrees, saturation = 100.percent), 2.seconds)
|
||||||
backlightBar.brightness.fade(75.percent, 2.seconds)
|
backlightBar.brightness.fade(75.percent, 2.seconds)
|
||||||
|
|
||||||
sidelight.brightness.fade(50.percent, 10.seconds)
|
sidelight.brightness.fade(100.percent, 10.seconds)
|
||||||
Tops.both { it.brightness.fade(100.percent, 1.5.seconds) }
|
Tops.both { it.brightness.fade(100.percent, 1.5.seconds) }
|
||||||
FrontLights.all { it.brightness.off(2.seconds) }
|
FrontLights.all { it.brightness.off(2.seconds) }
|
||||||
BlinderBars.all { it.brightness.off(1.5.seconds) }
|
BlinderBars.all { it.brightness.off(1.5.seconds) }
|
||||||
|
@ -284,7 +284,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
lightStep(StepCue.Text("Alle", "Du bist unser…", "Anfang")) {
|
lightStep(StepCue.Text("Alle", "Du bist unser…", "Anfang")) {
|
||||||
backlightBar.strobeSpeed.fade(10.percent, 2.seconds)
|
backlightBar.strobeSpeed.fade(10.percent, 2.seconds)
|
||||||
sidelight.brightness.fade(30.percent, 1.seconds)
|
sidelight.brightness.fade(40.percent, 1.seconds)
|
||||||
Washs.both { it.brightness.ramp(1.seconds, 100.percent, 50.percent) }
|
Washs.both { it.brightness.ramp(1.seconds, 100.percent, 50.percent) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,9 @@ fun SceneBuilderContext.songDuettDraculaMina() {
|
||||||
|
|
||||||
sidelight.brightness.fade(50.percent, 50.seconds)
|
sidelight.brightness.fade(50.percent, 50.seconds)
|
||||||
sidelight.color1.fadeRandomAround(25.degrees, 30.degrees, 10.seconds)
|
sidelight.color1.fadeRandomAround(25.degrees, 30.degrees, 10.seconds)
|
||||||
sidelight.color2.fadeRandomAround(230.degrees, 30.degrees, 10.seconds)
|
sidelight.color2.fadeRandomAround(230.degrees, 40.degrees, 10.seconds)
|
||||||
sidelight.color3.fadeRandomAround(25.degrees, 30.degrees, 10.seconds)
|
sidelight.color3.fadeRandomAround(25.degrees, 30.degrees, 10.seconds)
|
||||||
sidelight.color4.fadeRandomAround(230.degrees, 30.degrees, 10.seconds)
|
sidelight.color4.fadeRandomAround(230.degrees, 40.degrees, 10.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,14 +80,13 @@ fun SceneBuilderContext.songDuettDraculaMina() {
|
||||||
sidelight.brightness.off(6.seconds)
|
sidelight.brightness.off(6.seconds)
|
||||||
|
|
||||||
backlightBar.color.static(Color.RED)
|
backlightBar.color.static(Color.RED)
|
||||||
backlightBar.brightness.fade(100.percent, 6.seconds)
|
backlightBar.brightness.pulseOnce(8.seconds, 6.seconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.MusicEnd) {
|
lightStep(StepCue.MusicEnd) {
|
||||||
Spots.left.brightness.off(3.seconds)
|
Spots.left.brightness.off(3.seconds)
|
||||||
|
|
||||||
backlightBar.brightness.pulse(1.8.seconds, 0.15.seconds, 0.2.seconds, startDelay = 0.seconds)
|
backlightBar.brightness.pulse(1.8.seconds, 0.15.seconds, 0.2.seconds, peak = 40.percent, startDelay = 0.seconds)
|
||||||
sidelight.brightness.pulse(1.8.seconds, 0.15.seconds, 0.3.seconds, startDelay = 0.4.seconds)
|
|
||||||
Washs.both { it.brightness.pulse(1.8.seconds, 0.15.seconds, 0.3.seconds, startDelay = 0.4.seconds) }
|
Washs.both { it.brightness.pulse(1.8.seconds, 0.15.seconds, 0.3.seconds, startDelay = 0.4.seconds) }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,7 +18,7 @@ fun SceneBuilderContext.songEsIstAngerichtet() {
|
||||||
|
|
||||||
onRun {
|
onRun {
|
||||||
backlightBar.color.static(Color(hue = 0.degrees, saturation = 80.percent))
|
backlightBar.color.static(Color(hue = 0.degrees, saturation = 80.percent))
|
||||||
backlightBar.brightness.pulse(1.8.seconds, 0.15.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 20.percent)
|
backlightBar.brightness.pulse(1.8.seconds, 0.15.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 50.percent)
|
||||||
|
|
||||||
Washs.both {
|
Washs.both {
|
||||||
it.pointAtStageCenter()
|
it.pointAtStageCenter()
|
||||||
|
@ -49,8 +49,8 @@ fun SceneBuilderContext.songEsIstAngerichtet() {
|
||||||
|
|
||||||
repeat(2) {
|
repeat(2) {
|
||||||
lightStep(StepCue.Text("Vampire", "Aaah")) {
|
lightStep(StepCue.Text("Vampire", "Aaah")) {
|
||||||
sidelight.brightness.fade(80.percent, 3.seconds)
|
sidelight.brightness.fade(60.percent, 3.seconds)
|
||||||
backlightBar.brightness.pulse(0.5.seconds, 0.1.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 20.percent)
|
backlightBar.brightness.pulse(0.5.seconds, 0.1.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 40.percent)
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Text("Vampire", "…angerichtet!", "erste Silbe")) {
|
lightStep(StepCue.Text("Vampire", "…angerichtet!", "erste Silbe")) {
|
||||||
|
@ -83,7 +83,7 @@ fun SceneBuilderContext.songEsIstAngerichtet() {
|
||||||
repeat(2) {
|
repeat(2) {
|
||||||
lightStep(StepCue.Text("Vampire", "Aaah")) {
|
lightStep(StepCue.Text("Vampire", "Aaah")) {
|
||||||
sidelight.brightness.fade(80.percent, 3.seconds)
|
sidelight.brightness.fade(80.percent, 3.seconds)
|
||||||
backlightBar.brightness.pulse(0.5.seconds, 0.1.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 20.percent)
|
backlightBar.brightness.pulse(0.5.seconds, 0.1.seconds, 0.2.seconds, startDelay = 0.seconds, peak = 40.percent)
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Text("Vampire", "…angerichtet!", "erste Silbe")) {
|
lightStep(StepCue.Text("Vampire", "…angerichtet!", "erste Silbe")) {
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package de.moritzruth.dracula_musical.song
|
||||||
|
|
||||||
|
import de.moritzruth.dracula_musical.device.CoemarProWash
|
||||||
|
import de.moritzruth.dracula_musical.device.Spots
|
||||||
|
import de.moritzruth.dracula_musical.device.Washs
|
||||||
|
import de.moritzruth.dracula_musical.device.backlightBar
|
||||||
|
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.songQuartett() {
|
||||||
|
step(StepCue.MusicStart("Quartett", 3.minutes)) {
|
||||||
|
onRun {
|
||||||
|
Washs.both {
|
||||||
|
it.pointAtStageCenter()
|
||||||
|
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.Violet)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
leftSpotTarget = "Vampire (Ziel wechseln, wenn aus)"
|
||||||
|
rightSpotTarget = "Vampire (Ziel wechseln, wenn aus)"
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Einsetzen des Klaviers")) {
|
||||||
|
backlightBar.color.fadeRandomAround(270.degrees, 50.degrees, 10.seconds)
|
||||||
|
backlightBar.brightness.fade(50.percent, 6.seconds)
|
||||||
|
|
||||||
|
Washs.both { it.brightness.fade(100.percent, 5.seconds) }
|
||||||
|
|
||||||
|
Spots.left.brightness.sine(16.seconds)
|
||||||
|
Spots.right.brightness.sine(12.seconds)
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Text("Eloïse", "Findest du nur bei mir.")) {
|
||||||
|
Washs.both { it.brightness.off(3.seconds) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Hoher Ton von Violine")) {
|
||||||
|
Spots.left.brightness.off(3.seconds)
|
||||||
|
Spots.right.brightness.off(3.seconds)
|
||||||
|
|
||||||
|
backlightBar.color.static(Color.RED)
|
||||||
|
backlightBar.brightness.pulse(1.8.seconds, 0.15.seconds, 0.2.seconds, peak = 40.percent, startDelay = 0.seconds)
|
||||||
|
|
||||||
|
Washs.both {
|
||||||
|
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.Red)
|
||||||
|
it.brightness.pulse(1.8.seconds, 0.15.seconds, 0.3.seconds, startDelay = 0.4.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.MusicEnd) {
|
||||||
|
leftSpotTarget = null
|
||||||
|
rightSpotTarget = null
|
||||||
|
}
|
||||||
|
}
|
|
@ -52,7 +52,7 @@ fun SceneBuilderContext.songRepriseMaskenball() {
|
||||||
}
|
}
|
||||||
|
|
||||||
backlightBar.color.fade(Color.WARM_WHITE, 0.5.seconds)
|
backlightBar.color.fade(Color.WARM_WHITE, 0.5.seconds)
|
||||||
backlightBar.brightness.pulseOnce(2.seconds, 6.seconds, end = 30.percent)
|
backlightBar.brightness.pulseOnce(2.seconds, 6.seconds, end = 50.percent)
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.presetSpeed.fade(0.percent, 2.seconds)
|
it.presetSpeed.fade(0.percent, 2.seconds)
|
||||||
|
|
153
src/main/kotlin/de/moritzruth/dracula_musical/song/VanHelsing.kt
Normal file
153
src/main/kotlin/de/moritzruth/dracula_musical/song/VanHelsing.kt
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
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.songVanHelsing() {
|
||||||
|
step(StepCue.MusicStart("Van Helsing", 2.minutes + 30.seconds)) {
|
||||||
|
rightSpotTarget = "Van Helsing"
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
Spots.right.brightness.fade(100.percent, 20.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Text("Van Helsing", "Dann werde ich es Ihnen sagen.")) {
|
||||||
|
backlightBar.brightness.off(10.seconds)
|
||||||
|
FrontLights.left { it.brightness.off(10.seconds) }
|
||||||
|
FrontLights.center { it.brightness.fade(25.percent, 10.seconds) }
|
||||||
|
FrontLights.right { it.brightness.off(10.seconds) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Text("Van Helsing", "Menschenblut…", "Anfang")) {
|
||||||
|
backlightBar.brightness.sine(0.75.seconds, minimum = 50.percent, maximum = 100.percent)
|
||||||
|
backlightBar.color.static(Color(hue = 200.degrees, saturation = 40.percent))
|
||||||
|
|
||||||
|
Tops.both {
|
||||||
|
it.startRoomMovement(5.0)
|
||||||
|
it.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.DarkBlue)
|
||||||
|
it.prismMode.static(FuturelightDmh160.PrismMode.OPEN)
|
||||||
|
}
|
||||||
|
|
||||||
|
Washs.both {
|
||||||
|
it.pointAtCeiling()
|
||||||
|
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.DarkBlue)
|
||||||
|
it.beamAngle.static(100.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Beat nach »Kreatur des Bösen«")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.preset.static(null)
|
||||||
|
it.color.reset()
|
||||||
|
it.white.static(100.percent)
|
||||||
|
it.brightness.pulseOnce(0.1.seconds, 0.3.seconds)
|
||||||
|
}
|
||||||
|
|
||||||
|
Tops.both { it.brightness.pulseOnce(0.1.seconds, 0.3.seconds) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Text("Van Helsing", "Ein höllischer Dämon ist hier!", "letzte Silbe")) {
|
||||||
|
BlinderBars.all { it.brightness.pulseOnce(2.seconds, 0.3.seconds, peak = 50.percent) }
|
||||||
|
Washs.both {
|
||||||
|
it.pointAtAudience(3.seconds)
|
||||||
|
it.brightness.pulseOnce(2.seconds, 0.3.seconds, peak = 60.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Text("Van Helsing", "Ein Vampir!", "Anfang")) {
|
||||||
|
Washs.both { it.colorWheelMode.static(CoemarProWash.ColorWheelMode.Red) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Text("Van Helsing", "Ein Vampir!", "letzte Silbe")) {
|
||||||
|
BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 1.seconds, peak = 50.percent) }
|
||||||
|
Washs.both { it.brightness.pulseOnce(0.1.seconds, 1.seconds, peak = 100.percent) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Beat nach »Meute«")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.preset.static(null)
|
||||||
|
it.color.reset()
|
||||||
|
it.white.static(100.percent)
|
||||||
|
it.brightness.pulseOnce(0.1.seconds, 0.3.seconds)
|
||||||
|
}
|
||||||
|
|
||||||
|
Tops.both { it.brightness.pulseOnce(0.1.seconds, 0.3.seconds) }
|
||||||
|
|
||||||
|
Washs.both {
|
||||||
|
it.pointAtCeiling()
|
||||||
|
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.DarkBlue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Text("Van Helsing", "Ein höllischer Dämon ist hier!", "letzte Silbe")) {
|
||||||
|
BlinderBars.all { it.brightness.pulseOnce(2.seconds, 0.3.seconds, peak = 50.percent) }
|
||||||
|
Washs.both {
|
||||||
|
it.pointAtAudience(3.seconds)
|
||||||
|
it.brightness.pulseOnce(2.seconds, 0.3.seconds, peak = 60.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Text("Van Helsing", "Ein Vampir!", "Anfang")) {
|
||||||
|
Washs.both { it.colorWheelMode.static(CoemarProWash.ColorWheelMode.Red) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Nächster Beat")) {
|
||||||
|
backlightBar.brightness.off(0.1.seconds)
|
||||||
|
BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 0.6.seconds, peak = 50.percent) }
|
||||||
|
Washs.both { it.brightness.pulseOnce(0.1.seconds, 0.6.seconds, peak = 100.percent) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Nächster Beat")) {
|
||||||
|
backlightBar.brightness.pulseOnce(0.1.seconds, 0.6.seconds)
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Nächster Beat")) {
|
||||||
|
BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 0.6.seconds, peak = 50.percent) }
|
||||||
|
Washs.both { it.brightness.pulseOnce(0.1.seconds, 0.6.seconds, peak = 100.percent) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Nächster Beat")) {
|
||||||
|
backlightBar.brightness.pulseOnce(0.1.seconds, 0.6.seconds)
|
||||||
|
Tops.both { it.brightness.pulseOnce(0.1.seconds, 0.3.seconds) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Nächster Beat")) {
|
||||||
|
BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 0.6.seconds, peak = 50.percent) }
|
||||||
|
Washs.both { it.brightness.pulseOnce(0.1.seconds, 0.6.seconds, peak = 100.percent) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Nächster Beat")) {
|
||||||
|
backlightBar.brightness.pulseOnce(0.1.seconds, 0.6.seconds)
|
||||||
|
Tops.both { it.brightness.pulseOnce(0.1.seconds, 0.3.seconds) }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Nächster Beat")) {
|
||||||
|
BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 0.6.seconds, peak = 50.percent) }
|
||||||
|
Washs.both { it.brightness.pulseOnce(0.1.seconds, 0.6.seconds, peak = 100.percent) }
|
||||||
|
Tops.both { it.pointAtStageMiddleSingleCenterMarking() }
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("Musik: Nächster Beat")) {
|
||||||
|
backlightBar.brightness.fade(100.percent, 0.1.seconds)
|
||||||
|
Tops.both { it.brightness.fade(100.percent, 0.1.seconds) }
|
||||||
|
Spots.right.brightness.off(2.seconds)
|
||||||
|
}
|
||||||
|
|
||||||
|
step(StepCue.MusicEnd) {
|
||||||
|
rightSpotTarget = null
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
Tops.both { it.brightness.off(4.seconds) }
|
||||||
|
FrontLights.center { it.brightness.fade(75.percent, 10.seconds) }
|
||||||
|
backlightBar.brightness.fade(40.percent, 10.seconds)
|
||||||
|
backlightBar.color.fade(Color.WARM_WHITE, 10.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue