Loading...
Searching...
No Matches
ArtnetSpecificSettings.hpp
1#pragma once
2#include <ossia/detail/config.hpp>
3#if defined(OSSIA_PROTOCOL_ARTNET)
4#include <score/tools/std/StringHash.hpp>
5
6#include <ossia/detail/nullable_variant.hpp>
7#include <ossia/detail/variant.hpp>
8
9#include <QString>
10
11#include <utility>
12#include <vector>
13#include <verdigris>
14
15namespace Protocols
16{
17
18namespace Artnet
19{
21{
22 QString type;
23 QString comment;
24 QString effectName;
25};
26
31{
32 std::pair<int, int> range;
33};
34
35enum class Diode : int8_t
36{
37 R,
38 G,
39 B,
40 White,
41 WarmWhite,
42 ColdWhite,
43 Amber,
44 UV,
45 CCT,
46 Empty
47};
48
50{
51 std::vector<Diode> diodes;
52
53 int length{}; // in pixels
54 bool reverse{};
55
56 int channels() const noexcept { return diodes.size() * length; }
57};
58
60{
61 std::vector<Diode> diodes;
62
63 int width{};
64 int height{};
65
66 int channels() const noexcept { return diodes.size() * width * height; }
67};
68
70{
71 std::vector<Diode> diodes;
72
73 int width{};
74 int height{};
75 int depth{};
76
77 int channels() const noexcept { return diodes.size() * width * height * depth; }
78};
79
80using FixtureCapabilities
81 = ossia::variant<SingleCapability, std::vector<RangeCapability>>;
82
83using LEDLayout
84 = ossia::nullable_variant<LEDStripLayout, LEDPaneLayout, LEDVolumeLayout>;
85
86struct Channel
87{
88 QString name;
89 FixtureCapabilities capabilities;
90 std::vector<QString> fineChannels;
91 int defaultValue{};
92};
93
95{
96 std::vector<QString> channelNames;
97};
98
99struct Fixture
100{
101 QString fixtureName;
102 QString modeName;
103 ModeInfo mode;
104 std::vector<Channel> controls;
105 LEDLayout led;
106 int address{};
107 int universe{};
108};
109}
110
112{
113 std::vector<Artnet::Fixture> fixtures;
114
115 QString host;
116 int rate{44};
117 int start_universe{1};
118 int universe_count{1};
119 int channels_per_universe{512};
120 bool multicast{};
121
122 enum
123 {
124 ArtNet, // Artnet:/Channel-{}
125 E131,
126 DMXUSBPRO,
127 ArtNetV2, // Artnet:/{}
128 DMXUSBPRO_Mk2,
129 OpenDMX_USB
130 } transport{ArtNetV2};
131 enum
132 {
133 Source, // score sends DMX
134 Sink // score receives DMX
135 } mode{Source};
136};
137}
138
139Q_DECLARE_METATYPE(Protocols::ArtnetSpecificSettings)
140W_REGISTER_ARGTYPE(Protocols::ArtnetSpecificSettings)
141#endif
Definition ArtnetSpecificSettings.hpp:21
Definition ArtnetSpecificSettings.hpp:87
Definition ArtnetSpecificSettings.hpp:100
Definition ArtnetSpecificSettings.hpp:60
Definition ArtnetSpecificSettings.hpp:50
Definition ArtnetSpecificSettings.hpp:70
Definition ArtnetSpecificSettings.hpp:95
Definition ArtnetSpecificSettings.hpp:31
Definition ArtnetSpecificSettings.hpp:28
Definition ArtnetSpecificSettings.hpp:112
Definition MIDISync.hpp:126