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