commit 100
This commit is contained in:
parent
ae105a69e6
commit
c3a0bea5eb
24 changed files with 267 additions and 111 deletions
|
@ -2,6 +2,7 @@ package de.moritzruth.dracula_musical
|
||||||
|
|
||||||
import de.moritzruth.dracula_musical.act.act1
|
import de.moritzruth.dracula_musical.act.act1
|
||||||
import de.moritzruth.dracula_musical.act.act2
|
import de.moritzruth.dracula_musical.act.act2
|
||||||
|
import de.moritzruth.dracula_musical.act.testingAct
|
||||||
import de.moritzruth.dracula_musical.device.devices
|
import de.moritzruth.dracula_musical.device.devices
|
||||||
import de.moritzruth.dracula_musical.device.fogMachine
|
import de.moritzruth.dracula_musical.device.fogMachine
|
||||||
import de.moritzruth.theaterdsl.dmx.EnttecOpenDmxUsb
|
import de.moritzruth.theaterdsl.dmx.EnttecOpenDmxUsb
|
||||||
|
@ -9,6 +10,7 @@ import de.moritzruth.theaterdsl.show.createShow
|
||||||
import de.moritzruth.theaterdsl.show.runShow
|
import de.moritzruth.theaterdsl.show.runShow
|
||||||
|
|
||||||
val show = createShow {
|
val show = createShow {
|
||||||
|
testingAct()
|
||||||
act1()
|
act1()
|
||||||
act2()
|
act2()
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,7 @@ fun ShowBuilderContext.act2() = act("2. Akt") {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(100.percent, 2.seconds)
|
it.brightness.fade(100.percent, 2.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(100.percent)
|
it.effect.speed.static(100.percent)
|
||||||
}
|
}
|
||||||
|
|
||||||
Tops.both {
|
Tops.both {
|
||||||
|
@ -307,7 +307,7 @@ fun ShowBuilderContext.act2() = act("2. Akt") {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(100.percent, 2.seconds)
|
it.brightness.fade(100.percent, 2.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(100.percent)
|
it.effect.speed.static(100.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -349,7 +349,7 @@ fun ShowBuilderContext.act2() = act("2. Akt") {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(100.percent, 2.seconds)
|
it.brightness.fade(100.percent, 2.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(100.percent)
|
it.effect.speed.static(100.percent)
|
||||||
}
|
}
|
||||||
|
|
||||||
Tops.both {
|
Tops.both {
|
||||||
|
@ -391,7 +391,7 @@ fun ShowBuilderContext.act2() = act("2. Akt") {
|
||||||
lightStep(StepCue.Custom("Musik: Einsetzen der Drums")) {
|
lightStep(StepCue.Custom("Musik: Einsetzen der Drums")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
it.brightness.fade(40.percent, 0.5.seconds)
|
it.brightness.fade(40.percent, 0.5.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -488,14 +488,14 @@ fun ShowBuilderContext.act2() = act("2. Akt") {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(50.percent, 2.seconds)
|
it.brightness.fade(50.percent, 2.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(100.percent)
|
it.effect.speed.static(100.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Custom("Hawkins entreißt Van Helsing das Kreuz")) {
|
lightStep(StepCue.Custom("Hawkins entreißt Van Helsing das Kreuz")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.off(2.seconds)
|
it.brightness.off(2.seconds)
|
||||||
it.presetSpeed.off(0.5.seconds)
|
it.effect.speed.off(0.5.seconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
Washs.both {
|
Washs.both {
|
||||||
|
|
47
src/main/kotlin/de/moritzruth/dracula_musical/act/Testing.kt
Normal file
47
src/main/kotlin/de/moritzruth/dracula_musical/act/Testing.kt
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package de.moritzruth.dracula_musical.act
|
||||||
|
|
||||||
|
import de.moritzruth.dracula_musical.device.BlinderBars
|
||||||
|
import de.moritzruth.dracula_musical.device.StairvilleSplb
|
||||||
|
import de.moritzruth.theaterdsl.show.ShowBuilderContext
|
||||||
|
import de.moritzruth.theaterdsl.show.StepCue
|
||||||
|
import de.moritzruth.theaterdsl.value.percent
|
||||||
|
|
||||||
|
fun ShowBuilderContext.testingAct() = act("Testing") {
|
||||||
|
scene("Testing") {
|
||||||
|
lightStep(StepCue.Custom("null")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.brightness.static(100.percent)
|
||||||
|
it.effect.static(null)
|
||||||
|
it.white.static(100.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("StairvilleSplb.Effect.FLOW_INWARDS")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
|
it.effect.speed.static(50.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("StairvilleSplb.Effect.FLOW_INWARDS_LONG")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS_LONG)
|
||||||
|
it.effect.speed.static(50.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("StairvilleSplb.Effect.THEATRE_SWITCHING")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
||||||
|
it.effect.speed.static(20.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lightStep(StepCue.Custom("StairvilleSplb.Effect.HECTIC_SWITCHING")) {
|
||||||
|
BlinderBars.all {
|
||||||
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
|
it.effect.speed.static(100.percent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -36,13 +36,15 @@ object Washs {
|
||||||
object BlinderBars {
|
object BlinderBars {
|
||||||
//val inner = DeviceGroup(StairvilleSplb(DmxAddress(155u)), StairvilleSplb(DmxAddress(178u)))
|
//val inner = DeviceGroup(StairvilleSplb(DmxAddress(155u)), StairvilleSplb(DmxAddress(178u)))
|
||||||
//val outer = DeviceGroup(StairvilleSplb(DmxAddress(201u)), StairvilleSplb(DmxAddress(224u)))
|
//val outer = DeviceGroup(StairvilleSplb(DmxAddress(201u)), StairvilleSplb(DmxAddress(224u)))
|
||||||
val inner = DeviceGroup(StairvilleTlbButItsSplb(DmxAddress(155u)), StairvilleTlbButItsSplb(DmxAddress(178u)))
|
val inner = DeviceGroup(StairvilleTlbButItsSplb(DmxAddress(130u)), StairvilleTlbButItsSplb(DmxAddress(470u)))
|
||||||
val outer = DeviceGroup(StairvilleTlbButItsSplb(DmxAddress(201u)), StairvilleTlbButItsSplb(DmxAddress(224u)))
|
val outer = DeviceGroup(StairvilleTlbButItsSplb(DmxAddress(470u)), StairvilleTlbButItsSplb(DmxAddress(470u)))
|
||||||
val all = inner + outer
|
val all = inner + outer
|
||||||
}
|
}
|
||||||
|
|
||||||
val backlightBar = StairvilleTlb(DmxAddress(130u))
|
//val backlightBar = StairvilleTlb(DmxAddress(130u))
|
||||||
val sidelight = StairvilleClb4(DmxAddress(140u))
|
val backlightBar = StairvilleTlb(DmxAddress(470u))
|
||||||
|
//val sidelight = StairvilleClb4(DmxAddress(140u))
|
||||||
|
val sidelight = StairvilleClb4(DmxAddress(470u))
|
||||||
|
|
||||||
val fogMachine = AdjFogFury3000(DmxAddress(117u))
|
val fogMachine = AdjFogFury3000(DmxAddress(117u))
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,9 @@ class StairvilleSplb(override val firstChannel: DmxAddress) : Device {
|
||||||
VOLATILE_SPARKLES,
|
VOLATILE_SPARKLES,
|
||||||
BUMP_INWARDS,
|
BUMP_INWARDS,
|
||||||
FLOW_INWARDS,
|
FLOW_INWARDS,
|
||||||
FLOW_OUTWARDS;
|
FLOW_INWARDS_LONG,
|
||||||
|
FLOW_OUTWARDS,
|
||||||
|
FLOW_OUTWARDS_LONG;
|
||||||
}
|
}
|
||||||
|
|
||||||
override val dvs: ImmutableSet<DynamicValue<*>> = persistentSetOf(
|
override val dvs: ImmutableSet<DynamicValue<*>> = persistentSetOf(
|
||||||
|
|
|
@ -4,14 +4,22 @@ import de.moritzruth.dracula_musical.device.StairvilleSplb.Effect
|
||||||
import de.moritzruth.theaterdsl.device.*
|
import de.moritzruth.theaterdsl.device.*
|
||||||
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.Color
|
import de.moritzruth.theaterdsl.value.Color
|
||||||
|
import de.moritzruth.theaterdsl.value.Percentage
|
||||||
|
import de.moritzruth.theaterdsl.value.degrees
|
||||||
import de.moritzruth.theaterdsl.value.percent
|
import de.moritzruth.theaterdsl.value.percent
|
||||||
import kotlinx.collections.immutable.ImmutableSet
|
import kotlinx.collections.immutable.ImmutableSet
|
||||||
import kotlinx.collections.immutable.persistentSetOf
|
import kotlinx.collections.immutable.persistentSetOf
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.PI
|
||||||
|
import kotlin.math.min
|
||||||
|
import kotlin.math.roundToLong
|
||||||
|
import kotlin.math.sin
|
||||||
|
|
||||||
|
class StairvilleTlbButItsSplb(override val firstChannel: DmxAddress, val inwardsIsRight: Boolean = false) : Device {
|
||||||
|
companion object {
|
||||||
|
private const val NUMBER_OF_SEGMENTS = 9
|
||||||
|
}
|
||||||
|
|
||||||
class StairvilleTlbButItsSplb(override val firstChannel: DmxAddress) : Device {
|
|
||||||
override val numberOfChannels: UInt = 27u
|
override val numberOfChannels: UInt = 27u
|
||||||
|
|
||||||
val brightness = PercentageDV()
|
val brightness = PercentageDV()
|
||||||
|
@ -20,8 +28,74 @@ class StairvilleTlbButItsSplb(override val firstChannel: DmxAddress) : Device {
|
||||||
val color = ColorDV(Color.WHITE.copy(brightness = 0.percent))
|
val color = ColorDV(Color.WHITE.copy(brightness = 0.percent))
|
||||||
val white = PercentageDV()
|
val white = PercentageDV()
|
||||||
|
|
||||||
val effect = ConcreteDV<Effect?>(null)
|
val effect = object : EffectDV<Effect?, Array<Color>>(null) {
|
||||||
val presetSpeed = PercentageDV()
|
override fun compute(time: Long, effect: Effect?): Array<Color> {
|
||||||
|
val white = white.getCurrentValue()
|
||||||
|
val color = if (white == 0.percent) color.getCurrentValue() else Color(30.degrees, 85.percent, white)
|
||||||
|
|
||||||
|
fun fadeInOut(
|
||||||
|
time: Long,
|
||||||
|
rampUpDuration: Long,
|
||||||
|
sustainDuration: Long,
|
||||||
|
rampDownDuration: Long,
|
||||||
|
peak: Percentage = 100.percent,
|
||||||
|
start: Percentage = 0.percent,
|
||||||
|
end: Percentage = 0.percent
|
||||||
|
): Percentage {
|
||||||
|
return if (time <= rampUpDuration) {
|
||||||
|
val progress = time / rampUpDuration.toDouble()
|
||||||
|
val delta = peak.value - start.value
|
||||||
|
Percentage(progress * delta + start.value)
|
||||||
|
} else if (time <= rampUpDuration + sustainDuration) {
|
||||||
|
peak
|
||||||
|
} else {
|
||||||
|
val progress = min((time - rampUpDuration - sustainDuration) / rampDownDuration.toDouble(), 1.0)
|
||||||
|
val delta = peak.value - end.value
|
||||||
|
Percentage(peak.value - progress * delta)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun reverseIndexIfInwardsIsRight(index: Int) = if (inwardsIsRight) NUMBER_OF_SEGMENTS - index else index
|
||||||
|
|
||||||
|
return when (effect) {
|
||||||
|
null -> Array(NUMBER_OF_SEGMENTS) { color }
|
||||||
|
Effect.HECTIC_SWITCHING -> {
|
||||||
|
val step = (time / 100).mod(2)
|
||||||
|
Array(NUMBER_OF_SEGMENTS) { index -> if ((index + step) % 2 == 0) color else Color.BLACK }
|
||||||
|
}
|
||||||
|
|
||||||
|
Effect.THEATRE_SWITCHING -> {
|
||||||
|
val interval = 500L
|
||||||
|
Array(NUMBER_OF_SEGMENTS) { index ->
|
||||||
|
color.multiplyBrightness(
|
||||||
|
fadeInOut(
|
||||||
|
(time + (if (index % 2 == 0) interval / 2 else 0)).mod(interval),
|
||||||
|
rampUpDuration = (interval * (1 / 8.0)).roundToLong(),
|
||||||
|
sustainDuration = (interval * (1 / 4.0)).roundToLong(),
|
||||||
|
rampDownDuration = (interval * (1 / 4.0)).roundToLong(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Effect.FLOW_INWARDS, Effect.FLOW_INWARDS_LONG -> {
|
||||||
|
val interval = 1000.0
|
||||||
|
val scale = if (effect == Effect.FLOW_INWARDS) 0.5 else 1.5
|
||||||
|
|
||||||
|
Array(NUMBER_OF_SEGMENTS) { index ->
|
||||||
|
val value = Percentage(
|
||||||
|
sin((time + reverseIndexIfInwardsIsRight(index) * (interval / NUMBER_OF_SEGMENTS)) / interval * 2 * PI / scale)
|
||||||
|
/ 2 + 0.5
|
||||||
|
)
|
||||||
|
|
||||||
|
color.multiplyBrightness(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> TODO()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override val dvs: ImmutableSet<DynamicValue<*>> = persistentSetOf(
|
override val dvs: ImmutableSet<DynamicValue<*>> = persistentSetOf(
|
||||||
brightness,
|
brightness,
|
||||||
|
@ -29,34 +103,17 @@ class StairvilleTlbButItsSplb(override val firstChannel: DmxAddress) : Device {
|
||||||
color,
|
color,
|
||||||
white,
|
white,
|
||||||
effect,
|
effect,
|
||||||
presetSpeed
|
|
||||||
)
|
)
|
||||||
|
|
||||||
override fun writeDmxData(writer: DmxDataWriter, isLightBehindCurtainOn: Boolean) {
|
override fun writeDmxData(writer: DmxDataWriter, isLightBehindCurtainOn: Boolean) {
|
||||||
writer.writePercentage(brightness.getCurrentValue())
|
val brightness = brightness.getCurrentValue()
|
||||||
|
val segments = effect.getCurrentValue()
|
||||||
|
|
||||||
val strobeFrequency = strobeFrequency.getCurrentValue()
|
for (segment in segments) {
|
||||||
if (strobeFrequency == 0.percent) writer.writeRaw(DmxValue(0u))
|
val (r, g, b) = segment.multiplyBrightness(brightness).powBrightness(2.5).getRGB()
|
||||||
else writer.writeRaw(DmxValue(strobeFrequency.ofRange(11.0..255.0).roundToInt().toUByte()))
|
writer.writePercentage(r)
|
||||||
|
writer.writePercentage(g)
|
||||||
// mode
|
writer.writePercentage(b)
|
||||||
val preset = effect.getCurrentValue()
|
}
|
||||||
if (preset == null) writer.writeRaw(DmxValue(0u)) // mode = RGBW
|
|
||||||
else writer.writeRaw(DmxValue(128u)) // mode = preset
|
|
||||||
|
|
||||||
writer.writeRaw(DmxValue(0u)) // color preset (not used)
|
|
||||||
|
|
||||||
if (preset == null) writer.writeRaw(DmxValue(0u))
|
|
||||||
else writer.writeRaw(preset.dmxValue)
|
|
||||||
|
|
||||||
writer.writeRaw(DmxValue(0u)) // sound mode preset
|
|
||||||
|
|
||||||
writer.writePercentage(presetSpeed.getCurrentValue())
|
|
||||||
|
|
||||||
val (red, green, blue) = color.getCurrentValue().getRGB()
|
|
||||||
writer.writePercentage(red)
|
|
||||||
writer.writePercentage(green)
|
|
||||||
writer.writePercentage(blue)
|
|
||||||
writer.writePercentage(white.getCurrentValue())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -13,7 +13,7 @@ fun SceneBuilderContext.songAdelIstGeil() {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(25.percent, 5.seconds)
|
it.brightness.fade(25.percent, 5.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(75.percent)
|
it.effect.speed.static(75.percent)
|
||||||
it.brightness.ramp(1.seconds, 25.percent, 0.percent)
|
it.brightness.ramp(1.seconds, 25.percent, 0.percent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(10.percent, 1.seconds)
|
it.brightness.fade(10.percent, 1.seconds)
|
||||||
it.presetSpeed.static(10.percent)
|
it.effect.speed.static(10.percent)
|
||||||
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(25.percent, 1.5.seconds)
|
it.brightness.fade(25.percent, 1.5.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
||||||
it.presetSpeed.fade(25.percent, 1.5.seconds)
|
it.effect.speed.fade(25.percent, 1.5.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH) // red, chase, back-and-forth
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH) // red, chase, back-and-forth
|
||||||
it.presetSpeed.fade(75.percent, 1.seconds)
|
it.effect.speed.fade(75.percent, 1.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(30.percent, 8.seconds)
|
it.brightness.fade(30.percent, 8.seconds)
|
||||||
it.presetSpeed.fade(25.percent, 1.5.seconds)
|
it.effect.speed.fade(25.percent, 1.5.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES) // blink-y, red
|
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES) // blink-y, red
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
it.presetSpeed.static(25.percent)
|
it.effect.speed.static(25.percent)
|
||||||
it.brightness.fade(25.percent, 2.seconds)
|
it.brightness.fade(25.percent, 2.seconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(25.percent, 1.seconds)
|
it.brightness.fade(25.percent, 1.seconds)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.off(3.seconds)
|
it.brightness.off(3.seconds)
|
||||||
it.presetSpeed.fade(0.percent, 1.seconds)
|
it.effect.speed.fade(0.percent, 1.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(90.percent)
|
it.effect.speed.static(90.percent)
|
||||||
it.color.reset()
|
it.color.reset()
|
||||||
it.brightness.fade(30.percent, 0.5.seconds)
|
it.brightness.fade(30.percent, 0.5.seconds)
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(30.percent, 8.seconds)
|
it.brightness.fade(30.percent, 8.seconds)
|
||||||
it.presetSpeed.static(100.percent)
|
it.effect.speed.static(100.percent)
|
||||||
}
|
}
|
||||||
|
|
||||||
Washs.both { it.brightness.ramp(0.6.seconds, 100.percent, 0.percent) }
|
Washs.both { it.brightness.ramp(0.6.seconds, 100.percent, 0.percent) }
|
||||||
|
|
|
@ -33,7 +33,7 @@ fun SceneBuilderContext.songDuettDraculaMina() {
|
||||||
lightStep(StepCue.Text("Mina", "Ich kenne dich!", "Anfang")) {
|
lightStep(StepCue.Text("Mina", "Ich kenne dich!", "Anfang")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
it.presetSpeed.static(10.percent)
|
it.effect.speed.static(10.percent)
|
||||||
it.brightness.fade(25.percent, 2.seconds)
|
it.brightness.fade(25.percent, 2.seconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ fun SceneBuilderContext.songDuettMinaJonathan() {
|
||||||
lightStep(StepCue.Text("Mina", "Ich hab seit gestern…", "Anfang")) {
|
lightStep(StepCue.Text("Mina", "Ich hab seit gestern…", "Anfang")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS) // dreamy, flowy, pink, warm
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS) // dreamy, flowy, pink, warm
|
||||||
it.presetSpeed.static(10.percent)
|
it.effect.speed.static(10.percent)
|
||||||
it.brightness.fade(25.percent, 5.seconds)
|
it.brightness.fade(25.percent, 5.seconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ fun SceneBuilderContext.songEsIstAngerichtet() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.fade(10.percent, 10.seconds)
|
it.brightness.fade(10.percent, 10.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ fun SceneBuilderContext.songFinale() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
||||||
it.presetSpeed.fade(start = 0.percent, end = 50.percent, duration = 20.seconds)
|
it.effect.speed.fade(start = 0.percent, end = 50.percent, duration = 20.seconds)
|
||||||
it.brightness.fade(25.percent, 3.seconds)
|
it.brightness.fade(25.percent, 3.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.VOLATILE_SPARKLES)
|
it.effect.static(StairvilleSplb.Effect.VOLATILE_SPARKLES)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.pulseOnce(0.1.seconds, 0.5.seconds, end = 25.percent)
|
it.brightness.pulseOnce(0.1.seconds, 0.5.seconds, end = 25.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.pulseOnce(0.1.seconds, 0.2.seconds, end = 25.percent)
|
it.brightness.pulseOnce(0.1.seconds, 0.2.seconds, end = 25.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
lightStep(StepCue.Text("Dracula", "Ich will diese Frau!", "Anfang")) {
|
lightStep(StepCue.Text("Dracula", "Ich will diese Frau!", "Anfang")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.fade(25.percent, 0.4.seconds)
|
it.brightness.fade(25.percent, 0.4.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,7 +96,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.fade(25.percent, 0.4.seconds)
|
it.brightness.fade(25.percent, 0.4.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
lightStep(StepCue.Text("Dracula", "Ich sorg für euch!", "Anfang")) {
|
lightStep(StepCue.Text("Dracula", "Ich sorg für euch!", "Anfang")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.fade(25.percent, 0.4.seconds)
|
it.brightness.fade(25.percent, 0.4.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -153,7 +153,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,7 +171,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
lightStep(StepCue.Text("Dracula", "Ihr müsst mir vertrau’n…", "Anfang")) {
|
lightStep(StepCue.Text("Dracula", "Ihr müsst mir vertrau’n…", "Anfang")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.fade(25.percent, 0.4.seconds)
|
it.brightness.fade(25.percent, 0.4.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -184,7 +184,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,7 +207,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
lightStep(StepCue.Text("Bernadette", "Das Essen ist weg…", "Anfang")) {
|
lightStep(StepCue.Text("Bernadette", "Das Essen ist weg…", "Anfang")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.VOLATILE_SPARKLES)
|
it.effect.static(StairvilleSplb.Effect.VOLATILE_SPARKLES)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.fade(25.percent, 0.4.seconds)
|
it.brightness.fade(25.percent, 0.4.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -226,7 +226,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
lightStep(StepCue.Text("Dracula", "Ich brauche ihn noch!", "Anfang")) {
|
lightStep(StepCue.Text("Dracula", "Ich brauche ihn noch!", "Anfang")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.brightness.fade(25.percent, 0.4.seconds)
|
it.brightness.fade(25.percent, 0.4.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -237,7 +237,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -257,7 +257,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,7 +267,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -279,7 +279,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,7 +289,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -299,7 +299,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,7 +314,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
it.presetSpeed.static(70.percent)
|
it.effect.speed.static(70.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -391,7 +391,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.color.reset()
|
it.color.reset()
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_INWARDS)
|
||||||
it.presetSpeed.static(15.percent)
|
it.effect.speed.static(15.percent)
|
||||||
it.brightness.fade(30.percent, 2.seconds)
|
it.brightness.fade(30.percent, 2.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -417,7 +417,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.pulseOnce(0.4.seconds, 0.4.seconds, peak = 60.percent, end = 30.percent)
|
it.brightness.pulseOnce(0.4.seconds, 0.4.seconds, peak = 60.percent, end = 30.percent)
|
||||||
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -443,7 +443,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(25.percent, 1.seconds)
|
it.brightness.fade(25.percent, 1.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -454,7 +454,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
lightStep(StepCue.Text("Vampire", "Komm zu uns morgen nacht!", "Anfang")) {
|
lightStep(StepCue.Text("Vampire", "Komm zu uns morgen nacht!", "Anfang")) {
|
||||||
FrontLights.center { it.brightness.fade(100.percent, 5.seconds) }
|
FrontLights.center { it.brightness.fade(100.percent, 5.seconds) }
|
||||||
BlinderBars.all { it.presetSpeed.fade(1.percent, 3.seconds) }
|
BlinderBars.all { it.effect.speed.fade(1.percent, 3.seconds) }
|
||||||
sidelight.colors.forEach { it.fade(Color.WARM_WHITE, 8.seconds) }
|
sidelight.colors.forEach { it.fade(Color.WARM_WHITE, 8.seconds) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -468,7 +468,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(30.percent, 1.seconds)
|
it.brightness.fade(30.percent, 1.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -479,7 +479,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
lightStep(StepCue.Custom("Musik: Schlag nach »Morgen!«")) {
|
lightStep(StepCue.Custom("Musik: Schlag nach »Morgen!«")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.pulseOnce(0.1.seconds, 0.5.seconds, end = 30.percent)
|
it.brightness.pulseOnce(0.1.seconds, 0.5.seconds, end = 30.percent)
|
||||||
it.presetSpeed.fade(0.percent, 0.4.seconds)
|
it.effect.speed.fade(0.percent, 0.4.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -489,7 +489,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Text("Dracula", "Morgen nacht!", "letzte Silbe")) {
|
lightStep(StepCue.Text("Dracula", "Morgen nacht!", "letzte Silbe")) {
|
||||||
BlinderBars.all { it.presetSpeed.fade(40.percent, 1.seconds) }
|
BlinderBars.all { it.effect.speed.fade(40.percent, 1.seconds) }
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Custom("Musik: 1. Beat nach »Morgen!«")) {
|
lightStep(StepCue.Custom("Musik: 1. Beat nach »Morgen!«")) {
|
||||||
|
@ -507,7 +507,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.BUMP_INWARDS)
|
||||||
it.presetSpeed.static(60.percent)
|
it.effect.speed.static(60.percent)
|
||||||
it.brightness.fade(40.percent, 3.seconds)
|
it.brightness.fade(40.percent, 3.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -529,7 +529,7 @@ fun SceneBuilderContext.songFinaleErsterAkt() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
it.presetSpeed.static(80.percent)
|
it.effect.speed.static(80.percent)
|
||||||
it.brightness.fade(60.percent, 5.seconds)
|
it.brightness.fade(60.percent, 5.seconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,7 @@ fun SceneBuilderContext.songIrrenhaus() {
|
||||||
backlightBar.brightness.fade(100.percent, 3.seconds)
|
backlightBar.brightness.fade(100.percent, 3.seconds)
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.presetSpeed.static(80.percent)
|
it.effect.speed.static(80.percent)
|
||||||
it.brightness.off(3.seconds)
|
it.brightness.off(3.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,7 @@ fun SceneBuilderContext.songIrrenhaus() {
|
||||||
|
|
||||||
lightStep(StepCue.Text("Alle", "Wir sind bescheuert!", "Ende")) {
|
lightStep(StepCue.Text("Alle", "Wir sind bescheuert!", "Ende")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.VOLATILE_SPARKLES) // jumpy, chaotic
|
it.effect.static(StairvilleSplb.Effect.VOLATILE_SPARKLES)
|
||||||
it.brightness.fade(40.percent, 1.seconds)
|
it.brightness.fade(40.percent, 1.seconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ fun SceneBuilderContext.songIrrenhaus() {
|
||||||
backlightBar.brightness.fade(100.percent, 3.seconds)
|
backlightBar.brightness.fade(100.percent, 3.seconds)
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.presetSpeed.static(80.percent)
|
it.effect.speed.static(80.percent)
|
||||||
it.brightness.off(3.seconds)
|
it.brightness.off(3.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -190,7 +190,7 @@ fun SceneBuilderContext.songIrrenhaus() {
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Text("Alle", "Gott sei Dank!", "Anfang")) {
|
lightStep(StepCue.Text("Alle", "Gott sei Dank!", "Anfang")) {
|
||||||
BlinderBars.all { it.presetSpeed.fade(80.percent, 4.seconds) }
|
BlinderBars.all { it.effect.speed.fade(80.percent, 4.seconds) }
|
||||||
|
|
||||||
Washs.both {
|
Washs.both {
|
||||||
it.brightness.off(0.5.seconds)
|
it.brightness.off(0.5.seconds)
|
||||||
|
|
|
@ -10,12 +10,14 @@ import kotlin.time.Duration.Companion.seconds
|
||||||
|
|
||||||
fun SceneBuilderContext.songKaffeeklatsch() {
|
fun SceneBuilderContext.songKaffeeklatsch() {
|
||||||
step(StepCue.MusicStart("Kaffeeklatsch", 2.minutes + 35.seconds)) {
|
step(StepCue.MusicStart("Kaffeeklatsch", 2.minutes + 35.seconds)) {
|
||||||
|
onRun {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.VOLATILE_SPARKLES)
|
it.effect.static(StairvilleSplb.Effect.VOLATILE_SPARKLES)
|
||||||
it.presetSpeed.static(30.percent)
|
it.effect.speed.static(30.percent)
|
||||||
it.brightness.fade(25.percent, 4.seconds)
|
it.brightness.fade(25.percent, 4.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
step(StepCue.MusicEnd) {
|
step(StepCue.MusicEnd) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
|
|
|
@ -51,7 +51,7 @@ fun SceneBuilderContext.songLucy() {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(25.percent, 2.seconds)
|
it.brightness.fade(25.percent, 2.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING) // warm/pink
|
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING) // warm/pink
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ fun SceneBuilderContext.songLucy() {
|
||||||
|
|
||||||
lightStep(StepCue.Custom("Musik: Langes Fill-in beginnt")) {
|
lightStep(StepCue.Custom("Musik: Langes Fill-in beginnt")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.presetSpeed.fade(100.percent, 5.seconds)
|
it.effect.speed.fade(100.percent, 5.seconds)
|
||||||
it.brightness.fade(50.percent, 5.seconds)
|
it.brightness.fade(50.percent, 5.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ fun SceneBuilderContext.songLucy() {
|
||||||
lightStep(StepCue.Custom("Musik: Fill-in endet")) {
|
lightStep(StepCue.Custom("Musik: Fill-in endet")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.pulseOnce(0.1.seconds, 1.5.seconds, end = 25.percent)
|
it.brightness.pulseOnce(0.1.seconds, 1.5.seconds, end = 25.percent)
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
}
|
}
|
||||||
|
|
||||||
FrontLights.center { it.brightness.fade(100.percent, 1.seconds) }
|
FrontLights.center { it.brightness.fade(100.percent, 1.seconds) }
|
||||||
|
@ -110,7 +110,7 @@ fun SceneBuilderContext.songLucy() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(10.percent, 0.4.seconds)
|
it.brightness.fade(10.percent, 0.4.seconds)
|
||||||
it.presetSpeed.static(60.percent)
|
it.effect.speed.static(60.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ fun SceneBuilderContext.songLucy() {
|
||||||
lightStep(StepCue.Text("Lucy", "Mein Sexidol", "vierte Silbe")) {
|
lightStep(StepCue.Text("Lucy", "Mein Sexidol", "vierte Silbe")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.pulseOnce(1.seconds, 2.5.seconds, end = 25.percent)
|
it.brightness.pulseOnce(1.seconds, 2.5.seconds, end = 25.percent)
|
||||||
it.presetSpeed.fade(25.percent, 1.seconds)
|
it.effect.speed.fade(25.percent, 1.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,14 +65,14 @@ fun SceneBuilderContext.songMaskenball() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING) // warm
|
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING) // warm
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
it.brightness.fade(25.percent, 2.seconds)
|
it.brightness.fade(25.percent, 2.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Custom("Musik: Breakdown am Ende")) {
|
lightStep(StepCue.Custom("Musik: Breakdown am Ende")) {
|
||||||
backlightBar.color.cycle(20.seconds)
|
backlightBar.color.cycle(20.seconds)
|
||||||
BlinderBars.all { it.presetSpeed.fade(0.percent, 5.seconds) }
|
BlinderBars.all { it.effect.speed.fade(0.percent, 5.seconds) }
|
||||||
Washs.both { it.brightness.off(5.seconds) }
|
Washs.both { it.brightness.off(5.seconds) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,14 +44,14 @@ fun SceneBuilderContext.songMittsommernacht() {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(25.percent, 1.seconds)
|
it.brightness.fade(25.percent, 1.seconds)
|
||||||
it.white.static(0.percent)
|
it.white.static(0.percent)
|
||||||
it.presetSpeed.static(20.percent)
|
it.effect.speed.static(20.percent)
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_OUTWARDS)
|
it.effect.static(StairvilleSplb.Effect.FLOW_OUTWARDS)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Text("Alle", "Heute sind die Gespenster los…", "Anfang")) {
|
lightStep(StepCue.Text("Alle", "Heute sind die Gespenster los…", "Anfang")) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
it.effect.static(StairvilleSplb.Effect.LAZY_SPARKLES)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ fun SceneBuilderContext.songMittsommernacht() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.off(1.seconds)
|
it.brightness.off(1.seconds)
|
||||||
it.presetSpeed.static(5.percent)
|
it.effect.speed.static(5.percent)
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
it.effect.static(StairvilleSplb.Effect.CHASE_BACK_AND_FORTH)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,7 +108,7 @@ fun SceneBuilderContext.songMittsommernacht() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(25.percent, 1.seconds)
|
it.brightness.fade(25.percent, 1.seconds)
|
||||||
it.presetSpeed.static(50.percent)
|
it.effect.speed.static(50.percent)
|
||||||
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -181,7 +181,7 @@ fun SceneBuilderContext.songMittsommernacht() {
|
||||||
it.color.reset()
|
it.color.reset()
|
||||||
it.brightness.fade(25.percent, 1.seconds)
|
it.brightness.fade(25.percent, 1.seconds)
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.CHASE_INWARDS)
|
||||||
it.presetSpeed.static(80.percent)
|
it.effect.speed.static(80.percent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ fun SceneBuilderContext.songMittsommernacht() {
|
||||||
Washs.both { it.brightness.off(5.seconds) }
|
Washs.both { it.brightness.off(5.seconds) }
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.presetSpeed.fade(5.percent, 2.seconds)
|
it.effect.speed.fade(5.percent, 2.seconds)
|
||||||
it.brightness.fade(60.percent, 10.seconds)
|
it.brightness.fade(60.percent, 10.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,7 @@ fun SceneBuilderContext.songMittsommernacht() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.brightness.fade(30.percent, 3.seconds)
|
it.brightness.fade(30.percent, 3.seconds)
|
||||||
it.presetSpeed.static(10.percent)
|
it.effect.speed.static(10.percent)
|
||||||
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.HECTIC_SWITCHING)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ fun SceneBuilderContext.songRepriseDuett() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.FLOW_OUTWARDS) // pink/warm
|
it.effect.static(StairvilleSplb.Effect.FLOW_OUTWARDS) // pink/warm
|
||||||
it.presetSpeed.static(10.percent)
|
it.effect.speed.static(10.percent)
|
||||||
it.brightness.fade(25.percent, 5.seconds)
|
it.brightness.fade(25.percent, 5.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ fun SceneBuilderContext.songRepriseMaskenball() {
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
it.effect.static(StairvilleSplb.Effect.THEATRE_SWITCHING)
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
it.brightness.fade(25.percent, 2.seconds)
|
it.brightness.fade(25.percent, 2.seconds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ fun SceneBuilderContext.songRepriseMaskenball() {
|
||||||
backlightBar.brightness.pulseOnce(2.seconds, 6.seconds)
|
backlightBar.brightness.pulseOnce(2.seconds, 6.seconds)
|
||||||
|
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.presetSpeed.fade(0.percent, 2.seconds)
|
it.effect.speed.fade(0.percent, 2.seconds)
|
||||||
it.brightness.pulseOnce(1.seconds, 3.seconds, peak = 50.percent)
|
it.brightness.pulseOnce(1.seconds, 3.seconds, peak = 50.percent)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ fun SceneBuilderContext.songStreitDerVampire() {
|
||||||
lightStep(StepCue.MusicStart("Streit der Vampire", 1.minutes + 40.seconds)) {
|
lightStep(StepCue.MusicStart("Streit der Vampire", 1.minutes + 40.seconds)) {
|
||||||
BlinderBars.all {
|
BlinderBars.all {
|
||||||
it.effect.static(StairvilleSplb.Effect.CHASE_INWARDS)
|
it.effect.static(StairvilleSplb.Effect.CHASE_INWARDS)
|
||||||
it.presetSpeed.static(40.percent)
|
it.effect.speed.static(40.percent)
|
||||||
it.brightness.fade(25.percent, 1.seconds)
|
it.brightness.fade(25.percent, 1.seconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
38
src/main/kotlin/de/moritzruth/theaterdsl/device/EffectDV.kt
Normal file
38
src/main/kotlin/de/moritzruth/theaterdsl/device/EffectDV.kt
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
package de.moritzruth.theaterdsl.device
|
||||||
|
|
||||||
|
import de.moritzruth.theaterdsl.value.percent
|
||||||
|
import kotlin.math.roundToLong
|
||||||
|
import kotlin.time.TimeMark
|
||||||
|
import kotlin.time.TimeSource
|
||||||
|
|
||||||
|
abstract class EffectDV<T, R>(private val initialEffect: T): DynamicValue<R> {
|
||||||
|
private var time = 0L
|
||||||
|
private var effect: T = initialEffect
|
||||||
|
private var lastProgressMark: TimeMark? = null
|
||||||
|
val speed = PercentageDV(100.percent)
|
||||||
|
|
||||||
|
fun static(effect: T) {
|
||||||
|
this.effect = effect
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun reset() {
|
||||||
|
time = 0
|
||||||
|
effect = initialEffect
|
||||||
|
lastProgressMark = null
|
||||||
|
speed.reset()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun skipTransition() {
|
||||||
|
speed.skipTransition()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getCurrentValue(): R {
|
||||||
|
val delta = ((lastProgressMark?.elapsedNow()?.inWholeMilliseconds ?: 0) * speed.getCurrentValue().value).roundToLong()
|
||||||
|
time += delta
|
||||||
|
lastProgressMark = TimeSource.Monotonic.markNow()
|
||||||
|
|
||||||
|
return compute(time, effect)
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract fun compute(time: Long, effect: T?): R
|
||||||
|
}
|
|
@ -1,12 +1,16 @@
|
||||||
package de.moritzruth.theaterdsl.value
|
package de.moritzruth.theaterdsl.value
|
||||||
|
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
import kotlin.math.pow
|
||||||
|
|
||||||
data class Color(
|
data class Color(
|
||||||
val hue: Angle,
|
val hue: Angle,
|
||||||
val saturation: Percentage = 100.percent,
|
val saturation: Percentage = 100.percent,
|
||||||
val brightness: Percentage = 100.percent
|
val brightness: Percentage = 100.percent
|
||||||
) {
|
) {
|
||||||
|
fun multiplyBrightness(other: Percentage): Color = copy(brightness = brightness * other)
|
||||||
|
fun powBrightness(n: Double): Color = copy(brightness = Percentage(brightness.value.pow(n)))
|
||||||
|
|
||||||
fun getRGB(): Triple<Percentage, Percentage, Percentage> {
|
fun getRGB(): Triple<Percentage, Percentage, Percentage> {
|
||||||
val c = brightness.value * saturation.value
|
val c = brightness.value * saturation.value
|
||||||
val h = hue.degrees / 60f
|
val h = hue.degrees / 60f
|
||||||
|
|
|
@ -19,6 +19,8 @@ value class Percentage(val value: Double) : Comparable<Percentage> {
|
||||||
|
|
||||||
override fun toString(): String = "${value * 100}%"
|
override fun toString(): String = "${value * 100}%"
|
||||||
|
|
||||||
|
operator fun times(other: Percentage) = Percentage(value * other.value)
|
||||||
|
|
||||||
class Range(
|
class Range(
|
||||||
override val start: Percentage,
|
override val start: Percentage,
|
||||||
override val endInclusive: Percentage
|
override val endInclusive: Percentage
|
||||||
|
|
Loading…
Add table
Reference in a new issue