This commit is contained in:
Moritz Ruth 2023-05-25 14:57:54 +02:00
parent 96a23c0c38
commit 1b9a83b8ba
Signed by: moritzruth
GPG key ID: C9BBAB79405EE56D
2 changed files with 93 additions and 50 deletions

View file

@ -603,49 +603,10 @@ val show = createShow {
} }
lightStep(StepCue.Text("Maria", "Hallo, Ingo", "beim ersten Laut")) { lightStep(StepCue.Text("Maria", "Hallo, Ingo", "beim ersten Laut")) {
Tops.left.brightness.fade(20.percent, 3.seconds)
Tops.right.brightness.fade(100.percent, 3.seconds) Tops.right.brightness.fade(100.percent, 3.seconds)
} }
lightStep(StepCue.Text("Kathi", "Tag, Christine", "beim ersten Laut")) { step(StepCue.MusicStart("Rope-Skipping-Tanz", 3.minutes)) {
Tops.right.brightness.fade(20.percent, 3.seconds)
Tops.left.brightness.fade(100.percent, 3.seconds)
}
lightStep(StepCue.Text("Maria", "Hallo, Jakob", "beim ersten Laut")) {
Tops.left.brightness.fade(20.percent, 3.seconds)
Tops.right.brightness.fade(100.percent, 3.seconds)
}
lightStep(StepCue.Text("Kathi", "Tag, Gudrun", "beim ersten Laut")) {
Tops.right.brightness.fade(20.percent, 3.seconds)
Tops.left.brightness.fade(100.percent, 3.seconds)
}
lightStep(StepCue.Text("Maria", "Hallo, Achim", "beim ersten Laut")) {
Tops.left.brightness.fade(20.percent, 3.seconds)
Tops.right.brightness.fade(100.percent, 3.seconds)
}
lightStep(StepCue.Text("Kathi", "Hallo, Moni", "beim ersten Laut")) {
Tops.right.brightness.fade(50.percent, 3.seconds)
Tops.left.brightness.fade(100.percent, 3.seconds)
}
lightStep(StepCue.Text("Kathi", "in dem Musical?", "beim letzten Wort")) {
Tops.left.brightness.fade(50.percent, 3.seconds)
}
}
scene("3.7") {
step(StepCue.MusicStart("Terminhektik", 1.minutes + 30.seconds)) {
actors {
// TODO: Woher?
+"Sven"
+"Tina"
+"Eva"
}
onRun { onRun {
Washs.both.forEach { Washs.both.forEach {
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite) it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite)
@ -682,10 +643,8 @@ val show = createShow {
} }
lightStep(StepCue.Custom("Nächster Klavier-Ton")) { lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.both.forEach { it.brightness.fade(100.percent, 200.milliseconds) }
Washs.left.beamAngle.sine(2.seconds, start = 0.percent) Washs.left.beamAngle.sine(2.seconds, start = 0.percent)
Washs.right.beamAngle.sine(2.seconds, start = 100.percent) Washs.right.beamAngle.sine(2.seconds, start = 100.percent)
FrontLights.all.forEach { it.brightness.fade(50.percent, 30.seconds) }
} }
lightStep(StepCue.Custom("5× gleicher Klavier-Ton")) { lightStep(StepCue.Custom("5× gleicher Klavier-Ton")) {
@ -713,18 +672,97 @@ val show = createShow {
Washs.left.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, false)) Washs.left.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, false))
Washs.right.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, true)) Washs.right.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, true))
} }
lightStep(StepCue.Custom("Crash-Becken, Klavier-Solo")) {
Washs.both.forEach { it.brightness.off(200.milliseconds) }
}
lightStep(StepCue.Custom("+2 Takte")) {
FrontLights.all.forEach { it.brightness.fade(50.percent, 30.seconds) }
bar.brightness.sine(4.seconds, 20.percent, 50.percent)
bar.color.static(Color(40.degrees, 25.percent))
Washs.both.forEach {
it.brightness.fade(100.percent, 200.milliseconds)
it.beamAngle.sine(4.seconds, start = 100.percent)
}
}
lightStep(StepCue.Custom("Crash-Becken, Klavier-Solo")) {
Washs.both.forEach { it.brightness.fade(0.percent, 200.seconds) }
}
lightStep(StepCue.Custom("+1 Takt")) {
Washs.both.forEach {
it.tilt.static(270.degrees)
it.beamAngle.fade(100.percent, 500.milliseconds)
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite)
}
}
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent) // TODO: Mit dem Schlagzeug matchen
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(0.percent)
it.tilt.static(180.degrees)
}
Washs.left.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, false))
Washs.right.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, true))
}
lightStep(StepCue.Custom("Hi-Hat-Kuppe wird malträtiert")) {
bar.brightness.sine(2.seconds, 20.percent, 50.percent)
}
lightStep(StepCue.Custom("Breakdown am Ende")) {
bar.brightness.fade(25.percent, 200.milliseconds)
FrontLights.all.forEach { it.brightness.off() }
Washs.both.forEach { it.brightness.off(200.milliseconds) }
launch {
delay(200)
Washs.both.forEach { it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite) }
}
}
lightStep(StepCue.Custom("Schlussschlag")) {
bar.brightness.pulseOnce(200.milliseconds, 1.seconds)
FrontLights.all.forEach { it.brightness.pulseOnce(0.milliseconds, 1.seconds) }
Washs.both.forEach { it.brightness.pulseOnce(0.milliseconds, 1.seconds) }
}
}
scene("3.7") {
step(StepCue.MusicEnd) {
}
step(StepCue.MusicStart("Terminhektik", 1.minutes + 30.seconds)) {
actors {
// TODO: Woher?
+"Sven"
+"Tina"
+"Eva"
}
onRun {
FrontLights.all.forEach { it.brightness.fade(50.percent, 8.seconds) }
}
}
} }
scene("3.8") { scene("3.8") {
step(StepCue.MusicEnd) { step(StepCue.MusicEnd) {
onRun {
FrontLights.all.forEach { it.brightness.static(50.percent) }
}
} }
step { step(StepCue.Custom("Auftritt Paula")) {
trigger = StepCue.Custom("Auftritt Paula")
onRun { onRun {
(FrontLights.right + FrontLights.left).forEach { it.brightness.fade(0.percent, 5.seconds) } (FrontLights.right + FrontLights.left).forEach { it.brightness.fade(0.percent, 5.seconds) }
// kühle Farben // kühle Farben
@ -751,8 +789,12 @@ val show = createShow {
} }
// RnR entfällt // RnR entfällt
}
scene("4.1") { // Pause
act("Vierter Akt") {
scene("1") {
step { step {
trigger = StepCue.MusicStart("Pause", 69.seconds) trigger = StepCue.MusicStart("Pause", 69.seconds)
} }

View file

@ -108,7 +108,8 @@ abstract class FloatDV<T>(private val initialStaticValue: Float) : DynamicValue<
} }
fun sine(period: Duration, minimum: T = minimumValue, maximum: T = maximumValue, start: T = getCurrentValue()) { fun sine(period: Duration, minimum: T = minimumValue, maximum: T = maximumValue, start: T = getCurrentValue()) {
val offset = asin((fromDomain(start) - State.Sine.calculateD(fromDomain(minimum))) / State.Sine.calculateA(fromDomain(minimum), fromDomain(maximum))) val coercedStart = fromDomain(start).coerceIn(fromDomain(minimum), fromDomain(maximum))
val offset = asin((coercedStart - State.Sine.calculateD(fromDomain(minimum))) / State.Sine.calculateA(fromDomain(minimum), fromDomain(maximum)))
state = State.Sine(offset, fromDomain(minimum), fromDomain(maximum), period) state = State.Sine(offset, fromDomain(minimum), fromDomain(maximum), period)
} }