commit #4
This commit is contained in:
parent
9a86b9be63
commit
02a03731ea
5 changed files with 303 additions and 10 deletions
|
@ -8,24 +8,314 @@ import de.moritzruth.theaterdsl.dmx.EnttecOpenDmxUsb
|
||||||
import de.moritzruth.theaterdsl.show.StepCue
|
import de.moritzruth.theaterdsl.show.StepCue
|
||||||
import de.moritzruth.theaterdsl.show.createShow
|
import de.moritzruth.theaterdsl.show.createShow
|
||||||
import de.moritzruth.theaterdsl.show.runShow
|
import de.moritzruth.theaterdsl.show.runShow
|
||||||
|
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 kotlinx.collections.immutable.persistentSetOf
|
import kotlinx.collections.immutable.persistentSetOf
|
||||||
|
import kotlin.time.Duration.Companion.seconds
|
||||||
|
|
||||||
val bar = StairvilleTriLedBar(DmxAddress(400u))
|
val bar = StairvilleTriLedBar(DmxAddress(400u))
|
||||||
val frontLights = (1..8).map { SimpleDimmer(DmxAddress(it.toUInt())) }
|
|
||||||
val washLeft = Wash(DmxAddress(85u))
|
|
||||||
val washRight = Wash(DmxAddress(101u))
|
|
||||||
|
|
||||||
val devices = persistentSetOf(bar, *frontLights.toTypedArray(), washLeft, washRight)
|
object FrontLights {
|
||||||
|
val left = listOf(SimpleDimmer(DmxAddress(1u)), SimpleDimmer(DmxAddress(2u)))
|
||||||
|
val center = listOf(SimpleDimmer(DmxAddress(4u)), SimpleDimmer(DmxAddress(5u)))
|
||||||
|
val right = listOf(SimpleDimmer(DmxAddress(7u)), SimpleDimmer(DmxAddress(8u)))
|
||||||
|
val all = left + center + right
|
||||||
|
}
|
||||||
|
|
||||||
|
val spotLeft = SimpleDimmer(DmxAddress(10u))
|
||||||
|
val spotRight = SimpleDimmer(DmxAddress(11u))
|
||||||
|
|
||||||
|
// Nebel: SF-1500
|
||||||
|
|
||||||
|
object Washs {
|
||||||
|
val left = Wash(DmxAddress(85u))
|
||||||
|
val right = Wash(DmxAddress(101u))
|
||||||
|
val all = listOf(left, right)
|
||||||
|
}
|
||||||
|
|
||||||
|
val devices = persistentSetOf(bar, *FrontLights.all.toTypedArray(), spotLeft, spotRight, *Washs.all.toTypedArray())
|
||||||
|
|
||||||
val show = createShow {
|
val show = createShow {
|
||||||
act("Erster Akt") {
|
act("Erster Akt") {
|
||||||
scene("Prolog") {
|
scene("I") {
|
||||||
step {
|
step {
|
||||||
trigger = StepCue.Custom("")
|
trigger = StepCue.MusicStart("Lampenfieber", 69.seconds)
|
||||||
|
|
||||||
onRun {
|
onRun {
|
||||||
frontLights.forEach { it.brightness.static(100.percent) }
|
// Lichteffekte in der Aula
|
||||||
|
spotRight.brightness.static(100.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("I.1") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicEnd
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
spotRight.brightness.static(0.percent)
|
||||||
|
|
||||||
|
FrontLights.center.forEach { it.brightness.fade(75.percent, 10.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicStart("Rap", 69.seconds)
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
// sehr viel
|
||||||
|
FrontLights.center.forEach { it.brightness.fade(20.percent, 10.seconds) }
|
||||||
|
bar.color.static(Color(100.degrees))
|
||||||
|
bar.brightness.fade(75.percent, 10.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicEnd
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.center.forEach { it.brightness.fade(0.percent, 10.seconds) }
|
||||||
|
bar.brightness.fade(0.percent, 2.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("I.2") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.left.forEach { it.brightness.fade(75.percent, 10.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.left.forEach { it.brightness.fade(0.percent, 5.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("I.3") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
spotRight.brightness.fade(10.percent, 5.seconds)
|
||||||
|
FrontLights.right.forEach { it.brightness.fade(75.percent, 10.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("I.3") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Custom("Bühne erreicht")
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
spotRight.brightness.fade(0.percent, 8.seconds)
|
||||||
|
FrontLights.all.forEach { it.brightness.fade(75.percent, 10.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// David spielt: Licht links
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("I.5") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.all.forEach { it.brightness.fade(0.percent, 10.seconds) }
|
||||||
|
FrontLights.right.forEach { it.brightness.fade(50.percent, 10.seconds) }
|
||||||
|
|
||||||
|
Washs.all.forEach {
|
||||||
|
it.brightness.fade(75.percent, 10.seconds)
|
||||||
|
// Blau
|
||||||
|
}
|
||||||
|
|
||||||
|
// Auftritt links:
|
||||||
|
spotRight.brightness.static(100.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicStart("Aus dem Schatten treten", 69.seconds)
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.right.forEach { it.brightness.fade(0.percent, 10.seconds) }
|
||||||
|
|
||||||
|
Washs.all.forEach {
|
||||||
|
it.brightness.fade(100.percent, 10.seconds)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nebel
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicEnd
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.right.forEach { it.brightness.off() }
|
||||||
|
Washs.all.forEach { it.brightness.off() }
|
||||||
|
// Nebel aus
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("II.1") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicStart("Computerspiel", 69.seconds)
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
// bunt, instrumental
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("II.2") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
// Umbau, vorm Vorhang
|
||||||
|
FrontLights.all.forEach { it.brightness.fade(75.percent, 4.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("II.3") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
// Vorhang auf
|
||||||
|
FrontLights.left.forEach { it.brightness.fade(0.percent, 4.seconds) }
|
||||||
|
FrontLights.center.forEach { it.brightness.fade(0.percent, 4.seconds) }
|
||||||
|
|
||||||
|
// Außerirdische in der Mitte und gehen nach links ab
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicEnd
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.right.forEach { it.brightness.off() }
|
||||||
|
spotRight.brightness.static(100.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicStart("Eine Rolle spielen I", 69.seconds)
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
// kühle Farben, sitzt rechts und steht dann auf zur Mitte
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicEnd
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
spotRight.brightness.off()
|
||||||
|
// Vorhang zu
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicStart("Eine Rolle spielen II", 69.seconds)
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
// instrumental, Umbau
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("III.1") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
spotRight.brightness.fade(100.percent, 5.seconds)
|
||||||
|
FrontLights.all.forEach { it.brightness.fade(75.percent, 20.seconds) }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Maria singt etwas
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("III.2") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.right.forEach { it.brightness.fade(0.percent, 10.seconds) }
|
||||||
|
FrontLights.center.forEach { it.brightness.fade(0.percent, 10.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Custom("letzte Worte")
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.left.forEach { it.brightness.fade(0.percent, 2.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("III.3") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicStart("Tischballet", 69.seconds)
|
||||||
|
// Instrumental, Umbau zu Musiksaal
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("III.4") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.MusicEnd
|
||||||
|
// Vorhang auf
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
FrontLights.all.forEach { it.brightness.fade(50.percent, 5.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Stub
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
spotRight.brightness.fade(100.percent, 4.seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("III.5") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Custom("Ende")
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
// Vorhang zu
|
||||||
|
FrontLights.all.forEach { it.brightness.fade(0.percent, 5.seconds) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Umbau-Musik
|
||||||
|
}
|
||||||
|
|
||||||
|
scene("III.6") {
|
||||||
|
step {
|
||||||
|
trigger = StepCue.Custom("Vorhang auf, Musik Ende")
|
||||||
|
|
||||||
|
onRun {
|
||||||
|
spotRight.brightness.static(100.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package de.moritzruth.lampenfieber
|
||||||
|
|
||||||
import de.moritzruth.theaterdsl.dmx.EnttecOpenDmxUsb
|
import de.moritzruth.theaterdsl.dmx.EnttecOpenDmxUsb
|
||||||
import de.moritzruth.theaterdsl.dmx.PerDeviceDmxDataWriter
|
import de.moritzruth.theaterdsl.dmx.PerDeviceDmxDataWriter
|
||||||
import de.moritzruth.theaterdsl.value.percent
|
|
||||||
import kotlinx.coroutines.awaitCancellation
|
import kotlinx.coroutines.awaitCancellation
|
||||||
|
|
||||||
suspend fun main() {
|
suspend fun main() {
|
||||||
|
@ -24,5 +23,4 @@ suspend fun main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
washRight.brightness.static(100.percent)
|
|
||||||
}
|
}
|
|
@ -25,7 +25,6 @@ class Wash(override val firstChannel: DmxAddress) : Device {
|
||||||
|
|
||||||
val fullTilt = (tilt.getCurrentValue().degrees.mod(TILT_LIMIT) / TILT_LIMIT * 65536).roundToInt()
|
val fullTilt = (tilt.getCurrentValue().degrees.mod(TILT_LIMIT) / TILT_LIMIT * 65536).roundToInt()
|
||||||
val (mTilt, lTilt) = fullTilt.get16BitChannelValues()
|
val (mTilt, lTilt) = fullTilt.get16BitChannelValues()
|
||||||
println((fullTilt.rotateRight(8) and 0x11111111))
|
|
||||||
|
|
||||||
writer.writeRaw(DmxValue(130u))
|
writer.writeRaw(DmxValue(130u))
|
||||||
writer.writeRaw(DmxValue(200u))
|
writer.writeRaw(DmxValue(200u))
|
||||||
|
|
|
@ -83,6 +83,8 @@ abstract class FloatDV<T>(private val initialStaticValue: Float) : DynamicValue<
|
||||||
state = State.Static(fromDomain(value))
|
state = State.Static(fromDomain(value))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun off() = static(toDomain(0f))
|
||||||
|
|
||||||
fun fade(end: T, duration: Duration, start: T = getCurrentValue()) {
|
fun fade(end: T, duration: Duration, start: T = getCurrentValue()) {
|
||||||
state = State.Fade(fromDomain(start), fromDomain(end), duration)
|
state = State.Fade(fromDomain(start), fromDomain(end), duration)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,10 @@ import kotlin.time.Duration
|
||||||
sealed interface StepCue {
|
sealed interface StepCue {
|
||||||
fun format(): String
|
fun format(): String
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val Stub = Custom("stub")
|
||||||
|
}
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
@SerialName("TEXT")
|
@SerialName("TEXT")
|
||||||
data class Text(val speaker: String, val text: String, val clarification: String? = null) : StepCue {
|
data class Text(val speaker: String, val text: String, val clarification: String? = null) : StepCue {
|
||||||
|
|
Loading…
Add table
Reference in a new issue