This commit is contained in:
Moritz Ruth 2023-06-13 18:10:57 +02:00
parent 82337e4890
commit c8c4b6e175
Signed by: moritzruth
GPG key ID: C9BBAB79405EE56D
8 changed files with 524 additions and 391 deletions

View file

@ -0,0 +1,61 @@
package de.moritzruth.lampenfieber
import de.moritzruth.theaterdsl.show.PropPosition
import de.moritzruth.theaterdsl.show.PropsBuilderMap
object PropConfigurations {
fun empty(props: PropsBuilderMap) {
PropPosition.values().forEach {
props[it] = null
}
}
fun classroom(props: PropsBuilderMap) {
empty(props)
props[PropPosition.BACKDROP] = "grüne + bemalte + grüne Rückwand"
props[PropPosition.LEFT] = "7 Stühle"
props[PropPosition.RIGHT] = "7 Stühle, Plakat"
props[PropPosition.PROSCENIUM_LEFT] = "E-Piano mit Stuhl"
}
fun tvRoom(props: PropsBuilderMap) {
empty(props)
props[PropPosition.BACKDROP] = "2 schwarze Wände"
props[PropPosition.RIGHT] = "Sofa"
}
fun casting(props: PropsBuilderMap) {
empty(props)
props[PropPosition.BACKDROP] = "grüne Wand"
props[PropPosition.LEFT] = "grüne Wand"
props[PropPosition.CENTER] = "Casting-Schild"
props[PropPosition.RIGHT] = "schwarze Wand"
props[PropPosition.PROSCENIUM_LEFT] = "E-Piano mit Stuhl"
}
fun calling(props: PropsBuilderMap) {
empty(props)
props[PropPosition.BACKDROP] = "schwarze Wand"
props[PropPosition.LEFT] = "grüne Wand, Stuhl bei Markierung"
props[PropPosition.RIGHT] = "grüne Wand, Stuhl bei Markierung"
}
fun bathroom(props: PropsBuilderMap) {
empty(props)
props[PropPosition.BACKDROP] = "Duschvorhang + Toilette + Toilette + Duschvorhang"
props[PropPosition.LEFT] = "Waschbecken, Hocker, Spiegel"
props[PropPosition.RIGHT] = "Waschbecken, Hocker, Spiegel"
}
fun richy(props: PropsBuilderMap) {
empty(props)
props[PropPosition.BACKDROP] = "2 blaue Wände"
props[PropPosition.LEFT] = "3 Stühle"
props[PropPosition.RIGHT] = "2 Stühle"
}
fun backstage(props: PropsBuilderMap) {
empty(props)
props[PropPosition.BACKDROP] = "grüne + schwarze + grüne Rückwand"
}
}

View file

@ -1,8 +1,8 @@
package de.moritzruth.lampenfieber.act
import de.moritzruth.lampenfieber.PropConfigurations
import de.moritzruth.lampenfieber.device.*
import de.moritzruth.theaterdsl.show.CurtainState
import de.moritzruth.theaterdsl.show.PropPosition
import de.moritzruth.theaterdsl.show.ShowBuilderContext
import de.moritzruth.theaterdsl.show.StepCue
import de.moritzruth.theaterdsl.value.Color
@ -18,9 +18,7 @@ fun ShowBuilderContext.firstAct() = act("Erster Akt") {
@Suppress("DuplicatedCode")
scene("Intro") {
step(StepCue.MusicStart("Lampenfieber", 5.minutes + 30.seconds)) {
props {
it[PropPosition.BACKDROP] = "Klassenraum"
}
props(PropConfigurations::classroom)
onRun {
Washs.both.forEach {
@ -36,7 +34,6 @@ fun ShowBuilderContext.firstAct() = act("Erster Akt") {
Tops.both.forEach { it.startRoomMovement(5.5) }
}
@Suppress("DuplicatedCode")
lightStep(StepCue.Custom("Gitarren-Ton")) {
launch {
delay(500)
@ -144,7 +141,6 @@ fun ShowBuilderContext.firstAct() = act("Erster Akt") {
}
onRun {
// Nebel, rot-orange faden
FrontLights.center.forEach { it.brightness.fade(20.percent, 10.seconds) }
bar.brightness.fade(50.percent, 10.seconds)
@ -177,8 +173,6 @@ fun ShowBuilderContext.firstAct() = act("Erster Akt") {
}
step(StepCue.MusicEnd) {
curtainState = CurtainState.CLOSED
actors {
-"Richy"
-"Christine"
@ -193,10 +187,6 @@ fun ShowBuilderContext.firstAct() = act("Erster Akt") {
scene("Szene 2") {
step(StepCue.Light(StepCue.Light.State.OFF, false)) {
props {
it[PropPosition.LEFT] = "Klavier mit Hocker"
}
actors {
+"David / sitzt am Klavier"
+"Klavierlehrerin / steht neben David"

View file

@ -1,8 +1,10 @@
package de.moritzruth.lampenfieber.act
import de.moritzruth.lampenfieber.PropConfigurations
import de.moritzruth.lampenfieber.device.*
import de.moritzruth.lampenfieber.song.songRichy
import de.moritzruth.lampenfieber.song.songSchauMichMit
import de.moritzruth.theaterdsl.show.CurtainState
import de.moritzruth.theaterdsl.show.PropPosition
import de.moritzruth.theaterdsl.show.ShowBuilderContext
import de.moritzruth.theaterdsl.show.StepCue
import de.moritzruth.theaterdsl.value.Color
@ -84,109 +86,7 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
}
}
step(StepCue.MusicStart("Schau mich mit anderen Augen an", 10.minutes)) {
actors {
-"Bianca / nach rechts"
}
onRun {
spotLeft.brightness.off(5.seconds)
spotRight.brightness.off(5.seconds)
sideLight.moveColorsPinkAndBlue()
Washs.left.brightness.switch(0.percent, 100.percent, 1.seconds, false)
Washs.right.brightness.switch(100.percent, 0.percent, 1.seconds, false)
Tops.both { it.brightness.fade(100.percent, 1.seconds) }
}
}
lightStep(StepCue.Custom("Bridge")) {
bar.color.static(Color(50.degrees))
bar.brightness.fade(100.percent, 200.milliseconds)
sideLight.colors.forEach { it.fade(Color(50.degrees), 100.milliseconds) }
Washs.both { it.brightness.off() }
Tops.both { it.startRoomMovement(2.0) }
}
lightStep(StepCue.Custom("Refrain")) {
bar.color.fadeRandomAround(50.degrees, 10.degrees, 2.seconds)
bar.brightness.fade(100.percent, 200.milliseconds)
Tops.both { it.brightness.sine(8.seconds, minimum = 50.percent) }
sideLight.colors.forEach {
launch {
val downDuration = 1000.milliseconds
val upDuration = 400.milliseconds
while (isActive) {
delay(Random.nextInt(0, 3000).milliseconds)
it.fade(Color(50.degrees, brightness = 0.percent), downDuration)
delay(downDuration)
it.fade(Color(50.degrees, brightness = 100.percent), upDuration)
delay(upDuration)
}
}
}
}
lightStep(StepCue.Custom("Strophe (mit dem ersten Wort)")) {
val interval = 800.milliseconds
bar.brightness.switch(0.percent, 100.percent, interval, false)
sideLight.brightness.switch(100.percent, 0.percent, interval, false)
sideLight.colors.forEach { it.static(Color(60.degrees, saturation = 10.percent)) }
Washs.both { it.strobeSpeed.static(80.percent) }
Tops.both { it.brightness.off(200.milliseconds) }
}
// 3:06
lightStep(StepCue.Custom("Pause nach »rotiere«")) {
bar.brightness.off(500.milliseconds)
sideLight.brightness.off(500.milliseconds)
}
lightStep(StepCue.Custom("Refrain")) {
sideLight.moveColorsPinkAndBlue()
sideLight.brightness.static(100.percent)
Washs.both { it.brightness.static(100.percent) }
Tops.both {
it.startRoomMovement(8.0)
it.brightness.static(100.percent)
}
}
step(StepCue.MusicEnd) {
actors {
-"Tina / nach links"
-"Sandra / nach rechts"
}
onRun {
sideLight.brightness.off(500.milliseconds)
Washs.both {
it.brightness.off(500.milliseconds)
it.strobeSpeed.off()
it.cyan.off()
it.magenta.off()
}
Tops.both {
it.pointAtStageMiddleSingleCenterMarking()
it.brightness.off(500.milliseconds)
}
}
}
songSchauMichMit()
// Schau-mich-an-Tanz entfällt
}
@ -197,6 +97,8 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
}
step(StepCue.Curtain(CurtainState.CLOSED, false)) {
props(PropConfigurations::richy)
actors {
+"Tina / von der linken Treppe"
+"Sandra / von der rechten Treppe"
@ -313,20 +215,16 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
spotRight.brightness.fade(25.percent, 10.seconds)
Washs.both.forEach { it.brightness.fade(75.percent, 15.seconds) }
}
lightStep(StepCue.Custom("Nach etwa einer Minute")) {
launch {
delay(1.minutes)
Washs.both.forEach { it.brightness.fade(100.percent, 20.seconds) }
}
}
}
scene("Szene 5") {
step(StepCue.MusicEnd) {
props {
it[PropPosition.LEFT] = "Zwei Stühle"
it[PropPosition.RIGHT] = "Zwei Stühle"
}
actors {
+"Richy"
+"Sandra"
@ -346,137 +244,13 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
}
}
step(StepCue.MusicStart("Richy", 3.minutes)) {
onRun {
Washs.both {
it.magenta.static(0.percent)
it.pointAtCeiling()
it.beamAngle.fade(100.percent, 20.seconds, start = 0.percent)
it.brightness.fade(100.percent, 10.seconds)
}
FrontLights.all { it.brightness.fade(0.percent, 30.seconds) }
}
}
lightStep(StepCue.Text("Mädchen", "Ach, ist es nicht fürchterlich")) {
Washs.both.forEach {
it.pointAtGuests()
it.brightness.off(1.seconds)
}
}
// 0:40
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent)
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both.forEach {
it.strobeSpeed.static(0.percent)
it.pointAtCeiling()
}
Washs.left.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, false))
Washs.right.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, true))
}
// 1:00
lightStep(StepCue.Custom("Crash-Becken")) {
Washs.both.forEach { it.brightness.off(200.milliseconds) }
}
lightStep(StepCue.Custom("+2 Takte")) {
bar.brightness.sine(4.seconds, 20.percent, 50.percent)
bar.color.static(Color(40.degrees, 25.percent))
Washs.both {
it.brightness.fade(100.percent, 200.milliseconds)
it.beamAngle.sine(4.seconds, start = 100.percent)
}
}
// 1:24
lightStep(StepCue.Custom("Crash-Becken")) {
Washs.both { it.brightness.off(200.seconds) }
}
lightStep(StepCue.Custom("+1 Takt")) {
Washs.both {
it.pointAtGuests()
it.beamAngle.fade(100.percent, 500.milliseconds)
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite)
}
}
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent)
}
}
// 1:28
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both {
it.brightness.pulseOnce(200.milliseconds, 1.seconds)
it.strobeSpeed.static(0.percent)
}
bar.brightness.pulseOnce(200.milliseconds, 1.seconds)
}
// 1:51
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent)
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both {
it.strobeSpeed.static(0.percent)
it.pointAtCeiling()
}
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(100.percent, 200.milliseconds)
bar.color.fade(Color(0.degrees), 200.milliseconds)
FrontLights.all { it.brightness.off() }
Washs.both { it.brightness.off(200.milliseconds) }
launch {
delay(200)
Washs.both { it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite) }
}
}
step(StepCue.Custom("Schlussschlag")) {
curtainState = CurtainState.CLOSED
onRun {
bar.brightness.pulseOnce(200.milliseconds, 1.seconds)
FrontLights.all { it.brightness.pulseOnce(0.milliseconds, 3.seconds) }
Washs.both { it.brightness.pulseOnce(0.milliseconds, 1.seconds) }
}
}
songRichy()
}
scene("Szene 6") {
step(StepCue.MusicEnd) {
props(PropConfigurations::classroom)
actors {
-"Richy"
-"Sandra"
@ -484,6 +258,8 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
-"Eva"
}
curtainState = CurtainState.CLOSED
rightSpotTarget = "Paula & David (rechts)"
onRun {
@ -597,6 +373,8 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
}
step(StepCue.MusicEnd) {
props(PropConfigurations::backstage)
actors {
-"Paula"
-"David"

View file

@ -1,5 +1,6 @@
package de.moritzruth.lampenfieber.act
import de.moritzruth.lampenfieber.PropConfigurations
import de.moritzruth.lampenfieber.device.*
import de.moritzruth.theaterdsl.show.CurtainState
import de.moritzruth.theaterdsl.show.ShowBuilderContext
@ -16,6 +17,7 @@ import kotlin.time.Duration.Companion.seconds
fun ShowBuilderContext.secondAct() = act("Zweiter Akt") {
scene("Szene 1") {
step(StepCue.MusicStart("Umbaumusik", 10.minutes)) {
props(PropConfigurations::tvRoom)
}
}

View file

@ -1,15 +1,14 @@
package de.moritzruth.lampenfieber.act
import de.moritzruth.lampenfieber.PropConfigurations
import de.moritzruth.lampenfieber.device.*
import de.moritzruth.lampenfieber.song.songRopeSkippingTanz
import de.moritzruth.theaterdsl.show.CurtainState
import de.moritzruth.theaterdsl.show.ShowBuilderContext
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 kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
@ -17,8 +16,13 @@ import kotlin.time.Duration.Companion.seconds
fun ShowBuilderContext.thirdAct() = act("Dritter Akt") {
scene("Szene 1") {
step(StepCue.Stub) {
// TODO: Alles, was hier passiert.
props(PropConfigurations::casting)
actors {
+"Richy"
+"David"
}
onRun {
@ -77,7 +81,9 @@ fun ShowBuilderContext.thirdAct() = act("Dritter Akt") {
}
}
step(StepCue.Light(StepCue.Light.State.OFF, false)) {
step(StepCue.Curtain(CurtainState.CLOSED, false)) {
props(PropConfigurations::classroom)
actors {
-"David"
-"Paula"
@ -92,6 +98,7 @@ fun ShowBuilderContext.thirdAct() = act("Dritter Akt") {
step(StepCue.MusicStart("Tischballett", 10.minutes)) {
actors {
+"David"
+"Paula"
}
curtainState = CurtainState.OPEN
@ -158,6 +165,8 @@ fun ShowBuilderContext.thirdAct() = act("Dritter Akt") {
scene("Szene 6") {
step(StepCue.MusicStart("Umbaumusik", 10.minutes)) {
props(PropConfigurations::calling)
onRun {
Tops.both.forEach {
it.pointAtStageMiddleOffCenterMarking()
@ -168,14 +177,13 @@ fun ShowBuilderContext.thirdAct() = act("Dritter Akt") {
step(StepCue.MusicEnd) {
actors {
+"Kathi / steht links bei Markierung"
+"Maria / steht rechts bei Markierung"
+"Kathi / sitzt links"
+"Maria / sitzt rechts"
}
curtainState = CurtainState.OPEN
onRun {
// irgendwann kommt Musik
Tops.left.brightness.fade(100.percent, 3.seconds)
}
}
@ -184,138 +192,7 @@ fun ShowBuilderContext.thirdAct() = act("Dritter Akt") {
Tops.right.brightness.fade(100.percent, 3.seconds)
}
step(StepCue.MusicStart("Rope-Skipping-Tanz", 3.minutes)) {
onRun {
Washs.both.forEach {
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite)
it.beamAngle.static(0.percent)
}
}
}
lightStep(StepCue.Custom("Erster Klavier-Ton")) {
Washs.both.forEach {
it.beamAngle.fade(100.percent, 500.milliseconds)
it.brightness.pulseOnce(200.milliseconds, 1300.milliseconds)
}
}
lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.both.forEach {
it.beamAngle.sine(6.seconds)
it.brightness.pulseOnce(100.milliseconds, 500.milliseconds)
}
}
repeat(10) {
lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.both.forEach { it.brightness.pulseOnce(100.milliseconds, 500.milliseconds) }
}
}
lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.both.forEach {
it.brightness.fade(100.percent, 200.milliseconds)
it.beamAngle.fade(0.percent, 200.milliseconds)
}
}
lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.left.beamAngle.sine(2.seconds, start = 0.percent)
Washs.right.beamAngle.sine(2.seconds, start = 100.percent)
}
lightStep(StepCue.Custom("5× gleicher Klavier-Ton")) {
Washs.both.forEach {
it.pointAtGuests()
it.beamAngle.fade(100.percent, 500.milliseconds)
it.brightness.fade(0.percent, 1.seconds)
}
}
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent)
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(0.percent)
it.pointAtCeiling()
}
Washs.left.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, false))
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.pointAtGuests()
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)
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(0.percent)
it.pointAtCeiling()
}
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) }
}
songRopeSkippingTanz()
}
scene("Szene 7") {
@ -332,7 +209,7 @@ fun ShowBuilderContext.thirdAct() = act("Dritter Akt") {
}
onRun {
FrontLights.all.forEach { it.brightness.fade(50.percent, 8.seconds) }
FrontLights.all.forEach { it.brightness.fade(75.percent, 8.seconds) }
}
}
}
@ -401,6 +278,8 @@ fun ShowBuilderContext.thirdAct() = act("Dritter Akt") {
}
step(StepCue.MusicEnd) {
props(PropConfigurations::bathroom)
actors {
-"Paula"
-"Maria"

View file

@ -0,0 +1,149 @@
package de.moritzruth.lampenfieber.song
import de.moritzruth.lampenfieber.device.CoemarProWash
import de.moritzruth.lampenfieber.device.FrontLights
import de.moritzruth.lampenfieber.device.Washs
import de.moritzruth.lampenfieber.device.bar
import de.moritzruth.theaterdsl.show.CurtainState
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 kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
fun SceneBuilderContext.songRichy() {
step(StepCue.MusicStart("Richy", 3.minutes)) {
onRun {
Washs.both {
it.magenta.static(0.percent)
it.pointAtCeiling()
it.beamAngle.fade(100.percent, 20.seconds, start = 0.percent)
it.brightness.fade(100.percent, 10.seconds)
}
FrontLights.all { it.brightness.fade(0.percent, 30.seconds) }
}
}
lightStep(StepCue.Text("Mädchen", "Ach, ist es nicht fürchterlich")) {
Washs.both.forEach {
it.pointAtGuests()
it.brightness.off(1.seconds)
}
}
// 0:40
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent)
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both.forEach {
it.strobeSpeed.static(0.percent)
it.pointAtCeiling()
}
Washs.left.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, false))
Washs.right.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, true))
}
// 1:00
lightStep(StepCue.Custom("Crash-Becken")) {
Washs.both.forEach { it.brightness.off(200.milliseconds) }
}
lightStep(StepCue.Custom("+2 Takte")) {
bar.brightness.sine(4.seconds, 20.percent, 50.percent)
bar.color.static(Color(40.degrees, 25.percent))
Washs.both {
it.brightness.fade(100.percent, 200.milliseconds)
it.beamAngle.sine(4.seconds, start = 100.percent)
}
}
// 1:24
lightStep(StepCue.Custom("Crash-Becken")) {
Washs.both { it.brightness.off(200.seconds) }
}
lightStep(StepCue.Custom("+1 Takt")) {
Washs.both {
it.pointAtGuests()
it.beamAngle.fade(100.percent, 500.milliseconds)
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite)
}
}
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent)
}
}
// 1:28
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both {
it.brightness.pulseOnce(200.milliseconds, 1.seconds)
it.strobeSpeed.static(0.percent)
}
bar.brightness.pulseOnce(200.milliseconds, 1.seconds)
}
// 1:51
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent)
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both {
it.strobeSpeed.static(0.percent)
it.pointAtCeiling()
}
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(100.percent, 200.milliseconds)
bar.color.fade(Color(0.degrees), 200.milliseconds)
FrontLights.all { it.brightness.off() }
Washs.both { it.brightness.off(200.milliseconds) }
launch {
delay(200)
Washs.both { it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite) }
}
}
step(StepCue.Custom("Schlussschlag")) {
curtainState = CurtainState.CLOSED
onRun {
bar.brightness.pulseOnce(200.milliseconds, 1.seconds)
FrontLights.all { it.brightness.pulseOnce(0.milliseconds, 3.seconds) }
Washs.both { it.brightness.pulseOnce(0.milliseconds, 1.seconds) }
}
}
// + Ende in der nächsten Szene
}

View file

@ -0,0 +1,153 @@
package de.moritzruth.lampenfieber.song
import de.moritzruth.lampenfieber.device.CoemarProWash
import de.moritzruth.lampenfieber.device.FrontLights
import de.moritzruth.lampenfieber.device.Washs
import de.moritzruth.lampenfieber.device.bar
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 kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
fun SceneBuilderContext.songRopeSkippingTanz() {
step(StepCue.MusicStart("Rope-Skipping-Tanz", 3.minutes)) {
onRun {
Washs.both.forEach {
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.WarmWhite)
it.beamAngle.static(0.percent)
}
}
}
lightStep(StepCue.Custom("Erster Klavier-Ton")) {
Washs.both.forEach {
it.beamAngle.fade(100.percent, 500.milliseconds)
it.brightness.pulseOnce(200.milliseconds, 1300.milliseconds)
}
}
lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.both.forEach {
it.beamAngle.sine(6.seconds)
it.brightness.pulseOnce(100.milliseconds, 500.milliseconds)
}
}
repeat(10) {
lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.both.forEach { it.brightness.pulseOnce(100.milliseconds, 500.milliseconds) }
}
}
lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.both.forEach {
it.brightness.fade(100.percent, 200.milliseconds)
it.beamAngle.fade(0.percent, 200.milliseconds)
}
}
lightStep(StepCue.Custom("Nächster Klavier-Ton")) {
Washs.left.beamAngle.sine(2.seconds, start = 0.percent)
Washs.right.beamAngle.sine(2.seconds, start = 100.percent)
}
lightStep(StepCue.Custom("5× gleicher Klavier-Ton")) {
Washs.both.forEach {
it.pointAtGuests()
it.beamAngle.fade(100.percent, 500.milliseconds)
it.brightness.fade(0.percent, 1.seconds)
}
}
lightStep(StepCue.Custom("Schlagzeug-Einsatz")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(50.percent)
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(0.percent)
it.pointAtCeiling()
}
Washs.left.colorWheelMode.static(CoemarProWash.ColorWheelMode.Rotate(30.percent, false))
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.pointAtGuests()
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)
}
}
lightStep(StepCue.Custom("Nächster Takt-Anfang")) {
Washs.both.forEach {
it.brightness.static(100.percent)
it.strobeSpeed.static(0.percent)
it.pointAtCeiling()
}
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) }
}
// + Ende in der nächsten Szene
}

View file

@ -0,0 +1,121 @@
package de.moritzruth.lampenfieber.song
import de.moritzruth.lampenfieber.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 kotlinx.coroutines.delay
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import kotlin.random.Random
import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
fun SceneBuilderContext.songSchauMichMit() {
step(StepCue.MusicStart("Schau mich mit anderen Augen an", 10.minutes)) {
actors {
-"Bianca / nach rechts"
}
onRun {
spotLeft.brightness.off(5.seconds)
spotRight.brightness.off(5.seconds)
sideLight.moveColorsPinkAndBlue()
Washs.left.brightness.switch(0.percent, 100.percent, 1.seconds, false)
Washs.right.brightness.switch(100.percent, 0.percent, 1.seconds, false)
Tops.both { it.brightness.fade(100.percent, 1.seconds) }
}
}
lightStep(StepCue.Custom("Bridge")) {
bar.color.static(Color(50.degrees))
bar.brightness.fade(100.percent, 200.milliseconds)
sideLight.colors.forEach { it.fade(Color(50.degrees), 100.milliseconds) }
Washs.both { it.brightness.off() }
Tops.both { it.startRoomMovement(2.0) }
}
lightStep(StepCue.Custom("Refrain")) {
bar.color.fadeRandomAround(50.degrees, 10.degrees, 2.seconds)
bar.brightness.fade(100.percent, 200.milliseconds)
Tops.both { it.brightness.sine(8.seconds, minimum = 50.percent) }
sideLight.colors.forEach {
launch {
val downDuration = 1000.milliseconds
val upDuration = 400.milliseconds
while (isActive) {
delay(Random.nextInt(0, 3000).milliseconds)
it.fade(Color(50.degrees, brightness = 0.percent), downDuration)
delay(downDuration)
it.fade(Color(50.degrees, brightness = 100.percent), upDuration)
delay(upDuration)
}
}
}
}
lightStep(StepCue.Custom("Strophe (mit dem ersten Wort)")) {
val interval = 800.milliseconds
bar.brightness.switch(0.percent, 100.percent, interval, false)
sideLight.brightness.switch(100.percent, 0.percent, interval, false)
sideLight.colors.forEach { it.static(Color(60.degrees, saturation = 10.percent)) }
Washs.both { it.strobeSpeed.static(80.percent) }
Tops.both { it.brightness.off(200.milliseconds) }
}
// 3:06
lightStep(StepCue.Custom("Pause nach »rotiere«")) {
bar.brightness.off(500.milliseconds)
sideLight.brightness.off(500.milliseconds)
}
lightStep(StepCue.Custom("Refrain")) {
sideLight.moveColorsPinkAndBlue()
sideLight.brightness.static(100.percent)
Washs.both { it.brightness.static(100.percent) }
Tops.both {
it.startRoomMovement(8.0)
it.brightness.static(100.percent)
}
}
step(StepCue.MusicEnd) {
actors {
-"Tina / nach links"
-"Sandra / nach rechts"
}
onRun {
sideLight.brightness.off(500.milliseconds)
Washs.both {
it.brightness.off(500.milliseconds)
it.strobeSpeed.off()
it.cyan.off()
it.magenta.off()
}
Tops.both {
it.pointAtStageMiddleSingleCenterMarking()
it.brightness.off(500.milliseconds)
}
}
}
}