commit #18
This commit is contained in:
parent
b56e907eca
commit
c08230732d
4 changed files with 111 additions and 68 deletions
|
@ -1,5 +1,6 @@
|
|||
package de.moritzruth.lampenfieber
|
||||
|
||||
import de.moritzruth.lampenfieber.device.devices
|
||||
import de.moritzruth.theaterdsl.dmx.EnttecOpenDmxUsb
|
||||
import de.moritzruth.theaterdsl.dmx.PerDeviceDmxDataWriter
|
||||
import kotlinx.coroutines.awaitCancellation
|
||||
|
|
|
@ -6,6 +6,10 @@ 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
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
|
@ -87,7 +91,7 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
|
|||
// Vorhang zu
|
||||
}
|
||||
|
||||
step(StepCue.Custom("Vorhang ist zu")) {
|
||||
step(StepCue.Curtain(StepCue.Curtain.State.CLOSED, false)) {
|
||||
actors {
|
||||
+"Tina / von links"
|
||||
+"Sandra / von rechts"
|
||||
|
@ -279,11 +283,15 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
|
|||
+"Andreas"
|
||||
+"Eva"
|
||||
+"Kathi"
|
||||
-"Kai"
|
||||
-"Adrian"
|
||||
}
|
||||
|
||||
onRun {
|
||||
// Vorhang auf
|
||||
// sideLights ist noch an
|
||||
FrontLights.all.forEach { it.brightness.fade(75.percent, 1.seconds) }
|
||||
|
||||
Washs.both.forEach { it.brightness.off(1.seconds) }
|
||||
spotLeft.brightness.off(1.seconds)
|
||||
spotRight.brightness.off(1.seconds)
|
||||
|
@ -291,7 +299,7 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
|
|||
}
|
||||
}
|
||||
|
||||
lightStep(StepCue.Custom("Washs sind aus")) {
|
||||
lightStep(StepCue.MusicStart("Paulas Monolog", 3.minutes + 45.seconds)) {
|
||||
Washs.both.forEach {
|
||||
it.beamAngle.static(100.percent)
|
||||
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.DarkBlue)
|
||||
|
@ -303,107 +311,140 @@ fun ShowBuilderContext.fourthAct() = act("Vierter Akt") {
|
|||
it.prismRotationSpeed.static(0.percent)
|
||||
it.pointAtStageCenterMarking()
|
||||
}
|
||||
|
||||
FrontLights.all.forEach { it.brightness.fade(25.percent, 20.seconds) }
|
||||
}
|
||||
|
||||
lightStep(StepCue.Text("Paula", "Starrt mich nicht so an.", "auf das letzt Wort")) {
|
||||
// TODO: Paula auf Markierung hinweisen
|
||||
step(StepCue.Text("Paula", "Starrt mich nicht so an.", "auf das letzt Wort")) {
|
||||
rightSpotTarget = "Paula"
|
||||
|
||||
onRun {
|
||||
// TODO: Paula auf Markierung hinweisen
|
||||
Tops.both.forEach { it.brightness.pulseOnce(200.milliseconds, 3.seconds) }
|
||||
FrontLights.all.forEach { it.brightness.off() }
|
||||
|
||||
spotRight.brightness.fade(50.percent, 6.seconds)
|
||||
|
||||
bar.color.static(Color(190.degrees))
|
||||
bar.brightness.static(100.percent)
|
||||
|
||||
sideLight.color3.fadeRandomAround(190.degrees, 10.degrees, 5.seconds)
|
||||
sideLight.color4.fadeRandomAround(190.degrees, 20.degrees, 6.seconds)
|
||||
|
||||
Washs.both.forEach {
|
||||
it.brightness.static(100.percent)
|
||||
it.beamAngle.fade(0.percent, 2.seconds)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lightStep(StepCue.Custom("Keyboard-Einsatz")) {
|
||||
Tops.both.forEach {
|
||||
it.brightness.pulseOnce(200.milliseconds, 3.seconds)
|
||||
}
|
||||
|
||||
bar.color.static(Color(190.degrees))
|
||||
bar.brightness.static(100.percent)
|
||||
|
||||
sideLight.color3.fadeRandomAround(190.degrees, 10.degrees, 5.seconds)
|
||||
sideLight.color4.fadeRandomAround(190.degrees, 20.degrees, 6.seconds)
|
||||
|
||||
Washs.both.forEach {
|
||||
it.brightness.static(100.percent)
|
||||
it.beamAngle.fade(0.percent, 2.seconds)
|
||||
it.startRoomMovement(6.0)
|
||||
it.brightness.fade(100.percent, 10.seconds)
|
||||
it.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.DarkBlue)
|
||||
it.prismRotationSpeed.static(20.percent)
|
||||
}
|
||||
}
|
||||
|
||||
step {
|
||||
trigger = StepCue.Stub
|
||||
|
||||
onRun {
|
||||
// Vorhang auf, Spot immer noch auf Paula
|
||||
spotLeft.brightness.fade(0.percent, 8.seconds)
|
||||
FrontLights.all.forEach { it.brightness.fade(75.percent, 5.seconds) }
|
||||
}
|
||||
lightStep(StepCue.Text("Paula", "Ihr könnt euch nicht entscheiden")) {
|
||||
Tops.both.forEach { it.brightness.off(10.seconds) }
|
||||
bar.brightness.off(10.seconds)
|
||||
sideLight.brightness.off(10.seconds)
|
||||
spotRight.brightness.fade(100.percent, 10.seconds)
|
||||
}
|
||||
|
||||
step {
|
||||
trigger = StepCue.MusicStart("Paulas Monolog", 69.seconds)
|
||||
|
||||
onRun {
|
||||
FrontLights.all.forEach { it.brightness.fade(20.percent, 15.seconds) }
|
||||
// blaues Licht
|
||||
step(StepCue.MusicEnd) {
|
||||
actors {
|
||||
-"Paula"
|
||||
-"Theaterlehrer"
|
||||
-"Sven"
|
||||
-"Heike"
|
||||
-"Andreas"
|
||||
-"Eva"
|
||||
-"Kathi"
|
||||
}
|
||||
}
|
||||
|
||||
step {
|
||||
trigger = StepCue.MusicEnd
|
||||
|
||||
onRun {
|
||||
// Vorhang zu
|
||||
// TODO: Vorhang zu und Umbau
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scene("8") {
|
||||
step {
|
||||
trigger = StepCue.MusicStart("Angstballet", 69.seconds)
|
||||
|
||||
step(StepCue.MusicStart("Angstballet", 69.seconds)) {
|
||||
onRun {
|
||||
// passend zur Musik
|
||||
// TODO: Song
|
||||
}
|
||||
}
|
||||
|
||||
step {
|
||||
trigger = StepCue.MusicEnd
|
||||
}
|
||||
}
|
||||
|
||||
scene("9") {
|
||||
step {
|
||||
trigger = StepCue.Stub
|
||||
step(StepCue.MusicEnd) {
|
||||
actors {
|
||||
// TODO: Wo stehen Kai und Adrian?
|
||||
+"Kai"
|
||||
+"Adrian"
|
||||
}
|
||||
|
||||
onRun {
|
||||
spotRight.brightness.fade(100.percent, 5.seconds)
|
||||
FrontLights.all.forEach { it.brightness.fade(25.percent, 5.seconds) }
|
||||
}
|
||||
}
|
||||
|
||||
step {
|
||||
trigger = StepCue.Custom("Bühne erreicht")
|
||||
step(StepCue.Custom("Kai wird gerufen")) {
|
||||
rightSpotTarget = "Kai (kurz suchend)"
|
||||
|
||||
onRun {
|
||||
// Vorhang auf
|
||||
spotRight.brightness.static(100.percent)
|
||||
|
||||
// für später
|
||||
// TODO: Nebel
|
||||
Tops.both.forEach {
|
||||
it.pointAtStageCenterMarking()
|
||||
it.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.White)
|
||||
it.prismRotationSpeed.static(0.percent)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
scene("10") {
|
||||
step {
|
||||
trigger = StepCue.Stub
|
||||
|
||||
onRun {
|
||||
// Paula steht mit dem Rücken zum Publikum in der Mitte der Bühne, relativ weit hinten
|
||||
// Sie wird von oben weiß beleuchtet
|
||||
step(StepCue.Text("Kai", "Hilfe, los, runter!")) {
|
||||
actors {
|
||||
// TODO: Alle Mitspieler
|
||||
+"Paula / steht bei Markierung"
|
||||
}
|
||||
}
|
||||
|
||||
step {
|
||||
trigger = StepCue.Custom("Bühne erreicht")
|
||||
|
||||
onRun {
|
||||
// Vorhang auf
|
||||
bar.color.static(Color(40.degrees, 50.percent))
|
||||
spotRight.brightness.off(5.seconds)
|
||||
}
|
||||
}
|
||||
|
||||
val steps = mutableListOf(75.percent)
|
||||
steps.addAll((0..30).map { 0.percent })
|
||||
// TODO: Crowd-Sound absprechen mit Büchner und Rein
|
||||
|
||||
bar.brightness.steps(steps, 100.milliseconds)
|
||||
step(StepCue.Curtain(StepCue.Curtain.State.OPEN, false)) {
|
||||
onRun {
|
||||
Tops.both.forEach { it.brightness.fade(50.percent, 1.5.seconds) }
|
||||
bar.color.static(Color.WHITE)
|
||||
|
||||
// val steps = MutableList(10) { 0.percent }
|
||||
// steps[0] = 100.percent
|
||||
// bar.brightness.steps(steps, 1.8.seconds / steps.size)
|
||||
|
||||
launch {
|
||||
while (isActive) {
|
||||
bar.brightness.pulseOnce(Duration.ZERO, 300.milliseconds)
|
||||
delay(Random.nextDouble(1.2, 2.5).seconds)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
step(StepCue.MusicStart("Gemeinsam packen wir es an", 5.minutes + 25.seconds)) {
|
||||
onRun {
|
||||
// TODO: Song
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -84,6 +84,7 @@ class FuturelightDmh160(override val firstChannel: DmxAddress, private val isRig
|
|||
val prismRotationSpeed = PercentageDV()
|
||||
|
||||
fun startRoomMovement(rotationsPerMinute: Double) {
|
||||
// TODO: Testen, alternativ spin statt sine
|
||||
pan.sine(1.minutes / rotationsPerMinute, 0.degrees, 360.degrees)
|
||||
tilt.fade(120.degrees, 3.seconds)
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ fun createShow(build: ShowBuilderContext.() -> Unit): Show {
|
|||
}
|
||||
|
||||
@TheaterDslMarker
|
||||
private fun buildAct(actIndex: Int, name: String, build: ActBuilderContext.() -> Unit): Act {
|
||||
private fun buildAct(actIndex: Int, @Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") actName: String, build: ActBuilderContext.() -> Unit): Act {
|
||||
val scenes = mutableListOf<Scene>()
|
||||
val actorsOnStage = mutableListOf<String>()
|
||||
val props = PropPosition.values().associateWith<PropPosition, StringWithDetails?> { null }.toMutableMap()
|
||||
|
@ -92,7 +92,7 @@ private fun buildAct(actIndex: Int, name: String, build: ActBuilderContext.() ->
|
|||
var rightSpotTarget: String?
|
||||
|
||||
object : ActBuilderContext {
|
||||
override fun scene(name: String, build: SceneBuilderContext.() -> Unit) {
|
||||
override fun scene(@Suppress("PARAMETER_NAME_CHANGED_ON_OVERRIDE") sceneName: String, build: SceneBuilderContext.() -> Unit) {
|
||||
val steps = mutableListOf<Step>()
|
||||
|
||||
object : SceneBuilderContext {
|
||||
|
@ -130,7 +130,7 @@ private fun buildAct(actIndex: Int, name: String, build: ActBuilderContext.() ->
|
|||
leftSpotTarget = builderContext.leftSpotTarget
|
||||
rightSpotTarget = builderContext.rightSpotTarget
|
||||
|
||||
val logger = KotlinLogging.logger("createAct / $name / #${steps.size + 1} ${cue.format()}")
|
||||
val logger = KotlinLogging.logger("createAct / $actName / $sceneName / #${steps.size + 1} ${cue.format()}")
|
||||
|
||||
val actorEntrancesNames = actorEntrances.map { it.main }
|
||||
val actorExitsNames = actorExits.map { it.main }
|
||||
|
@ -181,9 +181,9 @@ private fun buildAct(actIndex: Int, name: String, build: ActBuilderContext.() ->
|
|||
}
|
||||
}.build()
|
||||
|
||||
scenes.add(Scene(name, steps.toImmutableList()))
|
||||
scenes.add(Scene(sceneName, steps.toImmutableList()))
|
||||
}
|
||||
}.build()
|
||||
|
||||
return Act(name, scenes.toImmutableList())
|
||||
return Act(actName, scenes.toImmutableList())
|
||||
}
|
Loading…
Add table
Reference in a new issue