commit 98
This commit is contained in:
parent
0a5148cf37
commit
a6e11649b3
4 changed files with 48 additions and 9 deletions
|
@ -11,6 +11,7 @@ import de.moritzruth.theaterdsl.value.Percentage
|
||||||
import de.moritzruth.theaterdsl.value.degrees
|
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.math.pow
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
import kotlin.time.Duration
|
import kotlin.time.Duration
|
||||||
|
|
||||||
|
@ -97,6 +98,13 @@ class CoemarProWash(override val firstChannel: DmxAddress, private val invertAng
|
||||||
|
|
||||||
writer.writeRaw(DmxValue(0u)) // no function
|
writer.writeRaw(DmxValue(0u)) // no function
|
||||||
writer.writeRaw(DmxValue(strobeSpeed.getCurrentValue().ofRange(63.0..95.0).roundToInt().toUByte()))
|
writer.writeRaw(DmxValue(strobeSpeed.getCurrentValue().ofRange(63.0..95.0).roundToInt().toUByte()))
|
||||||
writer.writePercentage(brightness.getCurrentValue())
|
|
||||||
|
val adjustedBrightness = Percentage(brightness.getCurrentValue().value.pow(1.5))
|
||||||
|
if (adjustedBrightness.value == 0.0) writer.writeRaw(DmxValue(0u))
|
||||||
|
else writer.writeRaw(
|
||||||
|
DmxValue(
|
||||||
|
adjustedBrightness.ofRange(75.0..DmxValue.VALUE_RANGE.endInclusive.toDouble()).roundToInt().toUByte()
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,6 +10,7 @@ import de.moritzruth.theaterdsl.dmx.DmxValue
|
||||||
import de.moritzruth.theaterdsl.value.Angle
|
import de.moritzruth.theaterdsl.value.Angle
|
||||||
import de.moritzruth.theaterdsl.value.Percentage
|
import de.moritzruth.theaterdsl.value.Percentage
|
||||||
import de.moritzruth.theaterdsl.value.degrees
|
import de.moritzruth.theaterdsl.value.degrees
|
||||||
|
import de.moritzruth.theaterdsl.value.percent
|
||||||
import kotlinx.collections.immutable.persistentSetOf
|
import kotlinx.collections.immutable.persistentSetOf
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
import kotlin.time.Duration.Companion.minutes
|
import kotlin.time.Duration.Companion.minutes
|
||||||
|
@ -38,14 +39,16 @@ class FuturelightDmh160(override val firstChannel: DmxAddress, private val isRig
|
||||||
else DmxValue((strobeSpeed.value * 31 + 64).roundToInt().toUByte())
|
else DmxValue((strobeSpeed.value * 31 + 64).roundToInt().toUByte())
|
||||||
)
|
)
|
||||||
|
|
||||||
|
val goboValue = gobo.getCurrentValue()
|
||||||
|
|
||||||
writer.writePercentage(brightness.getCurrentValue())
|
writer.writePercentage(brightness.getCurrentValue())
|
||||||
writer.writeRaw(colorWheelMode.getCurrentValue().getDmxValue())
|
writer.writeRaw(colorWheelMode.getCurrentValue().getDmxValue())
|
||||||
writer.writeRaw(DmxValue(0u)) // gobo wheel = open
|
writer.writeRaw(if (goboValue.isRotatable) goboValue.dmxValue else DmxValue(0u)) // rotatable gobo wheel
|
||||||
writer.writeRaw(DmxValue(0u)) // gobo rotation = none
|
writer.writeRaw(DmxValue(0u)) // gobo rotation = none
|
||||||
writer.writeRaw(DmxValue(0u)) // second gobo = none
|
writer.writeRaw(if (!goboValue.isRotatable) goboValue.dmxValue else DmxValue(0u)) // static gobo wheel = none
|
||||||
writer.writeRaw(prismMode.getCurrentValue().dmxValue)
|
writer.writeRaw(prismMode.getCurrentValue().dmxValue)
|
||||||
writer.writeRaw(DmxValue((prismRotationSpeed.getCurrentValue().value * 123 + 4).roundToInt().toUByte()))
|
writer.writeRaw(DmxValue((prismRotationSpeed.getCurrentValue().value * 123 + 4).roundToInt().toUByte()))
|
||||||
writer.writeRaw(DmxValue(255u)) // focus = maximum distance
|
writer.writePercentage(focus.getCurrentValue()) // focus
|
||||||
writer.writeRaw(DmxValue(0u)) // iris = ?
|
writer.writeRaw(DmxValue(0u)) // iris = ?
|
||||||
writer.writeRaw(DmxValue(0u)) // functions = noop
|
writer.writeRaw(DmxValue(0u)) // functions = noop
|
||||||
}
|
}
|
||||||
|
@ -75,6 +78,24 @@ class FuturelightDmh160(override val firstChannel: DmxAddress, private val isRig
|
||||||
object Yellow : Simple(25)
|
object Yellow : Simple(25)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum class Gobo(val dmxValue: DmxValue, val isRotatable: Boolean) {
|
||||||
|
NONE(DmxValue(0u), true),
|
||||||
|
BLUE_WHEEL(DmxValue(6u), true),
|
||||||
|
RED_ASTERISK(DmxValue(12u), true),
|
||||||
|
SPIRAL(DmxValue(18u), true),
|
||||||
|
APERTURE(DmxValue(24u), true),
|
||||||
|
LINES(DmxValue(30u), true),
|
||||||
|
MEDUSA(DmxValue(36u), true),
|
||||||
|
TRIANGLE(DmxValue(42u), true),
|
||||||
|
FENCE(DmxValue(6u), false),
|
||||||
|
FLOWER(DmxValue(12u), false),
|
||||||
|
NEEDLE_WHEEL(DmxValue(18u), false),
|
||||||
|
PIN_WHEEL(DmxValue(24u), false),
|
||||||
|
COMB_WHEEL(DmxValue(30u), false),
|
||||||
|
SHARDS(DmxValue(36u), false),
|
||||||
|
DROPLETS(DmxValue(42u), false),
|
||||||
|
}
|
||||||
|
|
||||||
enum class PrismMode(val dmxValue: DmxValue) {
|
enum class PrismMode(val dmxValue: DmxValue) {
|
||||||
OPEN(DmxValue(0u)),
|
OPEN(DmxValue(0u)),
|
||||||
FACETS_3(DmxValue(64u)),
|
FACETS_3(DmxValue(64u)),
|
||||||
|
@ -87,8 +108,10 @@ class FuturelightDmh160(override val firstChannel: DmxAddress, private val isRig
|
||||||
val brightness = PercentageDV()
|
val brightness = PercentageDV()
|
||||||
val colorWheelMode = ConcreteDV<ColorWheelMode>(ColorWheelMode.White)
|
val colorWheelMode = ConcreteDV<ColorWheelMode>(ColorWheelMode.White)
|
||||||
val strobeSpeed = PercentageDV()
|
val strobeSpeed = PercentageDV()
|
||||||
|
val gobo = ConcreteDV(Gobo.NONE)
|
||||||
val prismMode = ConcreteDV(PrismMode.OPEN)
|
val prismMode = ConcreteDV(PrismMode.OPEN)
|
||||||
val prismRotationSpeed = PercentageDV()
|
val prismRotationSpeed = PercentageDV()
|
||||||
|
val focus = PercentageDV(0.percent) // near to far
|
||||||
|
|
||||||
fun startRoomMovement(rotationsPerMinute: Double) {
|
fun startRoomMovement(rotationsPerMinute: Double) {
|
||||||
val period = (1.minutes / rotationsPerMinute) * 2
|
val period = (1.minutes / rotationsPerMinute) * 2
|
||||||
|
|
|
@ -183,6 +183,8 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
Tops.both {
|
Tops.both {
|
||||||
it.brightness.off(3.seconds)
|
it.brightness.off(3.seconds)
|
||||||
it.startRoomMovement(6.0)
|
it.startRoomMovement(6.0)
|
||||||
|
it.gobo.static(FuturelightDmh160.Gobo.LINES)
|
||||||
|
it.prismMode.static(FuturelightDmh160.PrismMode.OPEN)
|
||||||
}
|
}
|
||||||
|
|
||||||
Washs.both {
|
Washs.both {
|
||||||
|
@ -262,7 +264,11 @@ fun SceneBuilderContext.songDraculasZorn() {
|
||||||
lightStep(StepCue.Text("Alle", "Dracula", "dritte Silbe")) {
|
lightStep(StepCue.Text("Alle", "Dracula", "dritte Silbe")) {
|
||||||
BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 2.seconds, end = 30.percent) }
|
BlinderBars.all { it.brightness.pulseOnce(0.1.seconds, 2.seconds, end = 30.percent) }
|
||||||
|
|
||||||
Tops.both { it.pointAtStageMiddleSingleCenterMarking() }
|
Tops.both {
|
||||||
|
it.pointAtStageMiddleSingleCenterMarking()
|
||||||
|
it.gobo.static(FuturelightDmh160.Gobo.NONE)
|
||||||
|
it.prismMode.static(FuturelightDmh160.PrismMode.FROST)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lightStep(StepCue.Text("Alle", "Dracula", "erste Silbe")) {
|
lightStep(StepCue.Text("Alle", "Dracula", "erste Silbe")) {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package de.moritzruth.dracula_musical.song
|
package de.moritzruth.dracula_musical.song
|
||||||
|
|
||||||
import de.moritzruth.dracula_musical.device.*
|
import de.moritzruth.dracula_musical.device.*
|
||||||
|
import de.moritzruth.theaterdsl.device.reset
|
||||||
import de.moritzruth.theaterdsl.show.SceneBuilderContext
|
import de.moritzruth.theaterdsl.show.SceneBuilderContext
|
||||||
import de.moritzruth.theaterdsl.show.StepCue
|
import de.moritzruth.theaterdsl.show.StepCue
|
||||||
import de.moritzruth.theaterdsl.value.Color
|
import de.moritzruth.theaterdsl.value.Color
|
||||||
|
@ -41,12 +42,12 @@ fun SceneBuilderContext.songDuettDraculaMina() {
|
||||||
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.DarkBlue)
|
it.colorWheelMode.static(CoemarProWash.ColorWheelMode.DarkBlue)
|
||||||
}
|
}
|
||||||
|
|
||||||
Tops.left.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.Rotate(10.percent, backwards = true))
|
|
||||||
Tops.right.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.Rotate(10.percent, backwards = true))
|
|
||||||
Tops.both {
|
Tops.both {
|
||||||
it.startRoomMovement(2.5)
|
it.startRoomMovement(2.5)
|
||||||
it.prismMode.static(FuturelightDmh160.PrismMode.FACETS_8)
|
it.prismMode.static(FuturelightDmh160.PrismMode.FACETS_3)
|
||||||
it.prismRotationSpeed.static(5.percent)
|
it.prismRotationSpeed.static(10.percent)
|
||||||
|
it.colorWheelMode.static(FuturelightDmh160.ColorWheelMode.DarkPink)
|
||||||
|
it.gobo.static(FuturelightDmh160.Gobo.SPIRAL)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,6 +88,7 @@ fun SceneBuilderContext.songDuettDraculaMina() {
|
||||||
|
|
||||||
lightStep(StepCue.MusicEnd) {
|
lightStep(StepCue.MusicEnd) {
|
||||||
Spots.right.brightness.off(3.seconds)
|
Spots.right.brightness.off(3.seconds)
|
||||||
|
Tops.both { it.reset() }
|
||||||
|
|
||||||
backlightBar.brightness.pulse(1.8.seconds, 0.15.seconds, 0.2.seconds, peak = 40.percent, startDelay = 0.seconds)
|
backlightBar.brightness.pulse(1.8.seconds, 0.15.seconds, 0.2.seconds, peak = 40.percent, startDelay = 0.seconds)
|
||||||
Washs.both { it.brightness.pulse(1.8.seconds, 0.15.seconds, 0.3.seconds, startDelay = 0.4.seconds) }
|
Washs.both { it.brightness.pulse(1.8.seconds, 0.15.seconds, 0.3.seconds, startDelay = 0.4.seconds) }
|
||||||
|
|
Loading…
Add table
Reference in a new issue