add movinghead control for martin mac encore performance

This commit is contained in:
Philipp Kramer 2025-02-27 17:05:02 +01:00
parent 60284de817
commit 80d473155e
4 changed files with 79 additions and 27 deletions

View file

@ -1,7 +1,8 @@
[gd_scene load_steps=5 format=3 uid="uid://dafh3tlcmos4p"]
[gd_scene load_steps=6 format=3 uid="uid://dafh3tlcmos4p"]
[ext_resource type="Script" path="res://scripts/artnet.gd" id="1_hsiae"]
[ext_resource type="Texture2D" uid="uid://buuvoh3jf0f52" path="res://sprites/cross.png" id="2_vgkya"]
[ext_resource type="Script" path="res://scripts/dmx_movinghead.gd" id="3_he00n"]
[ext_resource type="Texture2D" uid="uid://glyt8h1eag1u" path="res://sprites/pixel.png" id="3_qvw8c"]
[ext_resource type="Script" path="res://scripts/dmx_color.gd" id="4_velje"]
@ -12,11 +13,14 @@ script = ExtResource("1_hsiae")
ip_destination = "192.168.21.27"
update_frequency = 40
[node name="Point" type="Sprite2D" parent="."]
[node name="Point" type="Sprite2D" parent="." node_paths=PackedStringArray("artnet")]
texture = ExtResource("2_vgkya")
script = ExtResource("3_he00n")
artnet = NodePath("../ArtNet")
channel_offset = 100
[node name="ColorRect" type="Sprite2D" parent="." node_paths=PackedStringArray("artnet")]
modulate = Color(0.247454, 0.529825, 0.607936, 1)
modulate = Color(0.0711767, 0.291016, 0.177359, 1)
position = Vector2(162.125, 549.375)
scale = Vector2(283.75, 328.75)
texture = ExtResource("3_qvw8c")

View file

@ -35,18 +35,23 @@ func setDMXChannel(ch,val,twobytes:bool=false):
return 0
if (!twobytes):
data[ch-1]=val
if val>255:
print("DMX Error: Value too high")
return 0
data[ch-1]=int(val)
else:
data[ch-1]=val/256
data[ch-1+1]=val%256
data[ch-1]=int(val/256)
data[ch-1+1]=int(val%256)
return 1
func setDMXChannel_Array(chstart,arr:Array):
var ch=chstart
for a in arr:
for val in arr:
if val>255:
print("DMX Error: Value too high")
if (ch-1<=512):
data[ch-1]=a
data[ch-1]=int(val)
ch+=1
else:
print("DMX Error: Channel out of bounds")

View file

@ -5,6 +5,8 @@ extends Node2D
@export_range(0,255,1) var master = 255
@export_range(0,1,0.01) var q = 1.0
@export_range(1,512,1) var channel_offset=1
var colormix=[
[1.0,0,0], #red
[0,1.0,0], #green
@ -13,22 +15,28 @@ var colormix=[
[1.0,0.8,0], #amber
]
var colorchannels=[3,4,5,6,7] #same order as colormix
var values=[]
func _ready() -> void:
values.resize(colorchannels.size())
func _process(delta: float) -> void:
var r=modulate.r
var g=modulate.g
var b=modulate.b
var rgb=[modulate.r,modulate.g,modulate.b]
#TODO, color mix
artnet.setDMXChannel(1,master) #master dimmer
artnet.setDMXChannel(2,0) #strobo
artnet.setDMXChannel(8,0) #macros
artnet.setDMXChannel(3,modulate.r*255) #red
artnet.setDMXChannel(4,modulate.g*255) #green
artnet.setDMXChannel(5,modulate.b*255) #blue
artnet.setDMXChannel(6,modulate.b*255) #white
artnet.setDMXChannel(7,modulate.b*255) #amber
values.fill(0.0)
artnet.setDMXChannel(channel_offset-1+1,master) #master dimmer
artnet.setDMXChannel(channel_offset-1+2,0) #strobo
artnet.setDMXChannel(channel_offset-1+8,0) #macros
artnet.setDMXChannel(channel_offset-1+3,modulate.r*255) #red
artnet.setDMXChannel(channel_offset-1+4,modulate.g*255) #green
artnet.setDMXChannel(channel_offset-1+5,modulate.b*255) #blue
artnet.setDMXChannel(channel_offset-1+6,modulate.b*255) #white
artnet.setDMXChannel(channel_offset-1+7,modulate.b*255) #amber

View file

@ -1,18 +1,53 @@
extends Node2D
@export var artnet:Node
@export_range(1,512,1) var channel_offset=1
@export_range(0,255,1) var master = 0
@export_range(0,255,1) var red = 0
@export_range(0,255,1) var green = 0
@export_range(0,255,1) var blue = 0
# Called when the node enters the scene tree for the first time.
@export_range(0,65535,1) var pan = 32768
@export_range(0,65535,1) var tilt = 32768
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
artnet.setDMXChannel(1,master) #master dimmer
artnet.setDMXChannel(3,red) #red
artnet.setDMXChannel(4,green) #green
artnet.setDMXChannel(5,blue) #blue
#https://www.martin.com/en/site_elements/martin-manuals-mac-encore-performance-bedienungsanleitung
artnet.setDMXChannel(channel_offset-1+1,master,false)
artnet.setDMXChannel(channel_offset-1+2,0,true) #master dimmer
artnet.setDMXChannel(channel_offset-1+4,red,false)
artnet.setDMXChannel(channel_offset-1+5,green,false)
artnet.setDMXChannel(channel_offset-1+6,blue,false)
artnet.setDMXChannel(channel_offset-1+7,0,false) #ctc
artnet.setDMXChannel(channel_offset-1+8,0,false) #farbrad
artnet.setDMXChannel(channel_offset-1+9,0,false) #gobo
artnet.setDMXChannel(channel_offset-1+10,32768,true) #goborad index/ drehung
artnet.setDMXChannel(channel_offset-1+12,0,false) #animationsrad, pos und funktion
artnet.setDMXChannel(channel_offset-1+13,127,false) #animationsrad, index/ drehung
artnet.setDMXChannel(channel_offset-1+14,0,false) #frost
artnet.setDMXChannel(channel_offset-1+15,0,false) #iris
artnet.setDMXChannel(channel_offset-1+16,32768,true) #zoom
artnet.setDMXChannel(channel_offset-1+18,32768,true) #fokus
artnet.setDMXChannel(channel_offset-1+20,0,false) #blendenschieber 1 Pos
artnet.setDMXChannel(channel_offset-1+21,127,false) #blendenschieber 1 Winkel
artnet.setDMXChannel(channel_offset-1+22,0,false) #blendenschieber 2 Pos
artnet.setDMXChannel(channel_offset-1+23,127,false) #blendenschieber 2 Winkel
artnet.setDMXChannel(channel_offset-1+24,0,false) #blendenschieber 3 Pos
artnet.setDMXChannel(channel_offset-1+25,127,false) #blendenschieber 3 Winkel
artnet.setDMXChannel(channel_offset-1+26,0,false) #blendenschieber 4 Pos
artnet.setDMXChannel(channel_offset-1+27,127,false) #blendenschieber 4 Winkel
artnet.setDMXChannel(channel_offset-1+28,127,false) #Index blendenschiebermodul
artnet.setDMXChannel(channel_offset-1+29,pan,true) #Pan (default 32768)
artnet.setDMXChannel(channel_offset-1+31,tilt,true) #Tilt (default 32768)
artnet.setDMXChannel(channel_offset-1+33,0,false) #Gerätesteuerkanal
artnet.setDMXChannel(channel_offset-1+34,0,false) #Fx1
artnet.setDMXChannel(channel_offset-1+35,128,false) #Fx1 geschw
artnet.setDMXChannel(channel_offset-1+36,0,false) #Fx2
artnet.setDMXChannel(channel_offset-1+37,128,false) #Fx2 geschw
artnet.setDMXChannel(channel_offset-1+38,0,false) #FX Sync