voicemeeter_api_ruby 2.0.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/meta.rb CHANGED
@@ -1,242 +1,274 @@
1
- require_relative 'errors'
2
-
3
- module Meta_Functions
4
- def make_accessor_bool(*params)
5
- params.each do |param|
6
- define_singleton_method("#{param}") do
7
- return !(self.getter("#{param}")).zero?
8
- end
9
-
10
- opts = [false, true]
11
- define_singleton_method("#{param}=") do |value|
12
- raise OutOfBoundsErrors.new(opts) unless opts.include? value
13
- self.setter("#{param}", value ? 1 : 0)
14
- end
15
- end
16
- end
17
-
18
- def make_accessor_int(*params)
19
- params.each do |param|
20
- define_singleton_method("#{param}") do
21
- return self.getter("#{param}").to_i
22
- end
23
- define_singleton_method("#{param}=") do |value|
24
- self.setter("#{param}", value)
25
- end
26
- end
27
- end
28
-
29
- def make_accessor_float(*params)
30
- params.each do |param|
31
- define_singleton_method("#{param}") do
32
- return self.getter("#{param}")
33
- end
34
- define_singleton_method("#{param}=") do |value|
35
- self.setter("#{param}", value)
36
- end
37
- end
38
- end
39
-
40
- def make_accessor_string(*params)
41
- params.each do |param|
42
- define_singleton_method("#{param}") do
43
- return self.getter("#{param}", true)
44
- end
45
- define_singleton_method("#{param}=") do |value|
46
- self.setter("#{param}", value)
47
- end
48
- end
49
- end
50
-
51
- def make_reader_only(*params)
52
- params.each do |param|
53
- define_singleton_method("#{param}") do
54
- return self.getter("#{param}")
55
- end
56
- end
57
- end
58
-
59
- def make_writer_only(*params)
60
- params.each do |param|
61
- define_singleton_method("#{param}=") do |value=1|
62
- self.setter("#{param}", value)
63
- end
64
- end
65
- end
66
-
67
- def _make_channel_props(num_A, num_B)
68
- channels = (1..(num_A + num_B)).map.each do |i|
69
- i <= num_A ? "A#{i}" : "B#{i - num_A}"
70
- end
71
-
72
- self.make_accessor_bool *channels
73
- end
74
- end
75
-
76
-
77
- module Channel_Meta_Functions
78
- include Meta_Functions
79
-
80
- def make_accessor_bool(*params)
81
- params.each do |param|
82
- cmds = {
83
- :eq => 'EQ.on',
84
- }
85
- if cmds[param] then val = cmds[param] else val = param end
86
-
87
- define_singleton_method("#{param}") do
88
- return !(self.getter("#{val}")).zero?
89
- end
90
-
91
- opts = [false, true]
92
- define_singleton_method("#{param}=") do |value|
93
- raise OutOfBoundsErrors.new(opts) unless opts.include? value
94
- self.setter("#{val}", value ? 1 : 0)
95
- end
96
- end
97
- end
98
-
99
- def make_accessor_float(*params)
100
- params.each do |param|
101
- define_singleton_method("#{param}") do
102
- return self.getter("#{param}")
103
- end
104
-
105
- opts = {
106
- :gain => [-60,12],
107
- :comp => [0,10],
108
- :gate => [0,10],
109
- }
110
- define_singleton_method("#{param}=") do |value|
111
- raise OutOfBoundsErrors.new(opts[param]) unless value.between? *opts[param]
112
- self.setter("#{param}", value)
113
- end
114
- end
115
- end
116
-
117
- def make_accessor_int(*params)
118
- params.each do |param|
119
- define_singleton_method("#{param}") do
120
- return self.getter("#{param}").to_i
121
- end
122
-
123
- opts = {
124
- :limit => (-40..12),
125
- }
126
- define_singleton_method("#{param}=") do |value|
127
- raise OutOfBoundsErrors.new(opts[param]) unless opts[param].member? value
128
- self.setter("#{param}", value)
129
- end
130
- end
131
- end
132
-
133
- def make_reader_only(*params)
134
- params.each do |param|
135
- cmds = {
136
- :device => 'device.name',
137
- :sr => 'device.sr',
138
- }
139
- if cmds[param] then val = cmds[param] else val = param end
140
-
141
- define_singleton_method("#{param}") do
142
- case param
143
- when :device
144
- return self.getter("#{val}", true)
145
- when :sr
146
- return self.getter("#{val}", true).to_i
147
- end
148
- end
149
- end
150
- end
151
- end
152
-
153
-
154
- module Vban_Meta_Functions
155
- include Meta_Functions
156
-
157
- def make_reader_int(*params)
158
- params.each do |param|
159
- define_singleton_method("#{param}") do
160
- case param
161
- when :bit
162
- return self.getter("#{param}").to_i == 1 ? 16 : 24
163
- else
164
- return self.getter("#{param}").to_i
165
- end
166
- end
167
- end
168
- end
169
-
170
- def make_accessor_int(*params)
171
- params.each do |param|
172
- define_singleton_method("#{param}") do
173
- case param
174
- when :bit
175
- return self.getter("#{param}").to_i == 1 ? 16 : 24
176
- else
177
- return self.getter("#{param}").to_i
178
- end
179
- end
180
-
181
- opts = {
182
- :sr => [11025, 16000, 22050, 24000, 32000, 44100, 48000,
183
- 64000, 88200, 96000],
184
- :channel => (1..8),
185
- :bit => [16,24],
186
- :quality => (0..4),
187
- :route => (0..8),
188
- }
189
-
190
- define_singleton_method("#{param}=") do |value|
191
- raise OutOfBoundsErrors.new(opts[param]) unless opts[param].member? value
192
- case param
193
- when :bit
194
- self.setter("#{param}", value == 16 ? 1 : 2)
195
- else
196
- self.setter("#{param}", value)
197
- end
198
- end
199
- end
200
- end
201
- end
202
-
203
-
204
- module MacroButton_Meta_Functions
205
- def make_accessor_macrobutton(*params)
206
- params.each do |param|
207
- mode = {
208
- :state => 1,
209
- :stateonly => 2,
210
- :trigger => 3,
211
- }
212
-
213
- define_singleton_method("#{param}") do
214
- return !(self.getter(mode[param])).zero?
215
- end
216
-
217
- opts = [false, true]
218
- define_singleton_method("#{param}=") do |value|
219
- raise OutOfBoundsErrors.new(opts[param]) unless opts.include? value
220
- self.setter(value ? 1 : 0, mode[param])
221
- end
222
- end
223
- end
224
- end
225
-
226
- module Commands_Meta_Functions
227
- include Meta_Functions
228
- def make_writer_bool(*params)
229
- params.each do |param|
230
- cmds = {
231
- :showvbanchat => 'DialogShow.VBANCHAT',
232
- }
233
- if cmds[param] then val = cmds[param] else val = param end
234
-
235
- opts = [false, true]
236
- define_singleton_method("#{param}=") do |value|
237
- raise OutOfBoundsErrors.new(opts[param]) unless opts.include? value
238
- self.setter("#{val}", value ? 1 : 0)
239
- end
240
- end
241
- end
242
- end
1
+ require_relative 'errors'
2
+
3
+ class FalseClass
4
+ def to_i
5
+ 0
6
+ end
7
+ end
8
+ class TrueClass
9
+ def to_i
10
+ 1
11
+ end
12
+ end
13
+
14
+ module Meta_Functions
15
+ private
16
+
17
+ def make_accessor_bool(*params)
18
+ params.each do |param|
19
+ define_singleton_method("#{param}") do
20
+ return !(self.getter("#{param}")).zero?
21
+ end
22
+
23
+ opts = [false, true, 0, 1]
24
+ define_singleton_method("#{param}=") do |value|
25
+ raise OutOfBoundsErrors.new(opts) unless opts.include? value
26
+ self.setter("#{param}", value.to_i == 1 ? 1 : 0)
27
+ end
28
+ end
29
+ end
30
+
31
+ def make_accessor_int(*params)
32
+ params.each do |param|
33
+ define_singleton_method("#{param}") do
34
+ return self.getter("#{param}").to_i
35
+ end
36
+ define_singleton_method("#{param}=") do |value|
37
+ self.setter("#{param}", value)
38
+ end
39
+ end
40
+ end
41
+
42
+ def make_accessor_float(*params)
43
+ params.each do |param|
44
+ define_singleton_method("#{param}") do
45
+ return self.getter("#{param}")
46
+ end
47
+ define_singleton_method("#{param}=") do |value|
48
+ self.setter("#{param}", value)
49
+ end
50
+ end
51
+ end
52
+
53
+ def make_accessor_string(*params)
54
+ params.each do |param|
55
+ define_singleton_method("#{param}") do
56
+ return self.getter("#{param}", true)
57
+ end
58
+ define_singleton_method("#{param}=") do |value|
59
+ self.setter("#{param}", value)
60
+ end
61
+ end
62
+ end
63
+
64
+ def make_reader_only(*params)
65
+ params.each do |param|
66
+ define_singleton_method("#{param}") do
67
+ return self.getter("#{param}")
68
+ end
69
+ end
70
+ end
71
+
72
+ def make_writer_only(*params)
73
+ params.each do |param|
74
+ define_singleton_method("#{param}=") do |value = 1|
75
+ self.setter("#{param}", value)
76
+ end
77
+ end
78
+ end
79
+
80
+ def make_channel_props(num_A, num_B)
81
+ (1..(num_A + num_B)).map { |i| i <= num_A ? "A#{i}" : "B#{i - num_A}" }
82
+ end
83
+
84
+ def make_action_prop(*params)
85
+ params.each do |param|
86
+ define_singleton_method("#{param}") { self.setter("#{param}", 1) }
87
+ end
88
+ end
89
+ end
90
+
91
+ module Channel_Meta_Functions
92
+ include Meta_Functions
93
+
94
+ def make_accessor_bool(*params)
95
+ params.each do |param|
96
+ cmds = { eq: 'EQ.on' }
97
+ if cmds.key? param
98
+ cmd = cmds[param]
99
+ else
100
+ cmd = param
101
+ end
102
+
103
+ define_singleton_method("#{param}") do
104
+ return !(self.getter("#{cmd}")).zero?
105
+ end
106
+
107
+ opts = [false, true, 0, 1]
108
+ define_singleton_method("#{param}=") do |value|
109
+ raise OutOfBoundsErrors.new(opts) unless opts.include? value
110
+ self.setter("#{cmd}", value.to_i == 1 ? 1 : 0)
111
+ end
112
+ end
113
+ end
114
+
115
+ def make_accessor_float(*params)
116
+ params.each do |param|
117
+ define_singleton_method("#{param}") do
118
+ return self.getter("#{param}")
119
+ end
120
+
121
+ define_singleton_method("#{param}=") do |value|
122
+ self.setter("#{param}", value)
123
+ end
124
+ end
125
+ end
126
+
127
+ def make_accessor_int(*params)
128
+ params.each do |param|
129
+ define_singleton_method("#{param}") do
130
+ return self.getter("#{param}").to_i
131
+ end
132
+
133
+ define_singleton_method("#{param}=") do |value|
134
+ self.setter("#{param}", value)
135
+ end
136
+ end
137
+ end
138
+
139
+ def make_reader_only(*params)
140
+ params.each do |param|
141
+ cmds = { device: 'device.name', sr: 'device.sr' }
142
+ if cmds.key? param
143
+ cmd = cmds[param]
144
+ else
145
+ cmd = param
146
+ end
147
+
148
+ define_singleton_method("#{param}") do
149
+ case param
150
+ when :device
151
+ return self.getter("#{cmd}", true)
152
+ when :sr
153
+ return self.getter("#{cmd}", true).to_i
154
+ end
155
+ end
156
+ end
157
+ end
158
+
159
+ def make_bus_modes(*params)
160
+ params.each do |param|
161
+ define_singleton_method("#{param}") do
162
+ @remote.clear_polling
163
+ return !(self.getter("#{param}")).zero?
164
+ end
165
+
166
+ opts = [false, true, 0, 1]
167
+ define_singleton_method("#{param}=") do |value|
168
+ raise OutOfBoundsErrors.new(opts) unless opts.include? value
169
+ self.setter("#{param}", value.to_i == 1 ? 1 : 0)
170
+ end
171
+ end
172
+ end
173
+ end
174
+
175
+ module Vban_Meta_Functions
176
+ include Meta_Functions
177
+
178
+ def make_reader_int(*params)
179
+ params.each do |param|
180
+ define_singleton_method("#{param}") do
181
+ case param
182
+ when :bit
183
+ return self.getter("#{param}").to_i == 1 ? 16 : 24
184
+ else
185
+ return self.getter("#{param}").to_i
186
+ end
187
+ end
188
+ end
189
+ end
190
+
191
+ def make_accessor_int(*params)
192
+ params.each do |param|
193
+ define_singleton_method("#{param}") do
194
+ case param
195
+ when :bit
196
+ return self.getter("#{param}").to_i == 1 ? 16 : 24
197
+ else
198
+ return self.getter("#{param}").to_i
199
+ end
200
+ end
201
+
202
+ opts = {
203
+ sr: [
204
+ 11_025,
205
+ 16_000,
206
+ 22_050,
207
+ 24_000,
208
+ 32_000,
209
+ 44_100,
210
+ 48_000,
211
+ 64_000,
212
+ 88_200,
213
+ 96_000,
214
+ ],
215
+ channel: (1..8),
216
+ bit: [16, 24],
217
+ quality: (0..4),
218
+ route: (0..8),
219
+ }
220
+
221
+ define_singleton_method("#{param}=") do |value|
222
+ unless opts[param].member? value
223
+ raise OutOfBoundsErrors.new(opts[param])
224
+ end
225
+ case param
226
+ when :bit
227
+ self.setter("#{param}", value == 16 ? 1 : 2)
228
+ else
229
+ self.setter("#{param}", value)
230
+ end
231
+ end
232
+ end
233
+ end
234
+ end
235
+
236
+ module MacroButton_Meta_Functions
237
+ def make_accessor_macrobutton(*params)
238
+ params.each do |param|
239
+ mode = { state: 1, stateonly: 2, trigger: 3 }
240
+
241
+ define_singleton_method("#{param}") do
242
+ return !(self.getter(mode[param])).zero?
243
+ end
244
+
245
+ opts = [false, true, 0, 1]
246
+ define_singleton_method("#{param}=") do |value|
247
+ unless opts.include? value
248
+ raise OutOfBoundsErrors.new(opts[param])
249
+ end
250
+ self.setter(value.to_i == 1 ? 1 : 0, mode[param])
251
+ end
252
+ end
253
+ end
254
+ end
255
+
256
+ module Commands_Meta_Functions
257
+ include Meta_Functions
258
+ def make_writer_bool(*params)
259
+ params.each do |param|
260
+ cmds = { showvbanchat: 'DialogShow.VBANCHAT' }
261
+ if cmds.key? param
262
+ cmd = cmds[param]
263
+ else
264
+ cmd = param
265
+ end
266
+
267
+ opts = [false, true]
268
+ define_singleton_method("#{param}=") do |value|
269
+ raise OutOfBoundsErrors.new(opts) unless opts.include? value
270
+ self.setter("#{cmd}", value.to_i == 1 ? 1 : 0)
271
+ end
272
+ end
273
+ end
274
+ end
data/lib/profiles.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'toml'
2
+
3
+ module Profiles
4
+ private
5
+
6
+ def get_profiles(kind)
7
+ filepath =
8
+ File.join(File.dirname(__dir__), "/profiles/#{kind.name}/*.toml")
9
+
10
+ Dir
11
+ .glob(filepath)
12
+ .to_h do |toml_file|
13
+ filename = File.basename(toml_file, '.toml')
14
+ puts "loading profile #{kind.name}/#{filename}"
15
+ [filename, TOML::Parser.new(File.read(toml_file)).parsed]
16
+ end
17
+ end
18
+
19
+ public
20
+
21
+ def set_profile(value)
22
+ unless @profiles.key? value
23
+ raise VMRemoteErrors.new("No profile with name #{value} was loaded")
24
+ end
25
+ self.send('set_multi', @profiles[value])
26
+ sleep(DELAY)
27
+ end
28
+ end
data/lib/recorder.rb CHANGED
@@ -1,40 +1,37 @@
1
- require_relative 'meta'
2
-
3
-
4
- class IRecorder
5
- include Meta_Functions
6
-
7
- attr_accessor :remote
8
-
9
- def initialize(remote)
10
- self.remote = remote
11
- end
12
-
13
- def getter(param)
14
- @remote.get_parameter("#{self.cmd}.#{param}")
15
- end
16
-
17
- def setter(param, value)
18
- @remote.set_parameter("#{self.cmd}.#{param}", value)
19
- end
20
-
21
- def cmd
22
- raise NotImplementedError
23
- end
24
- end
25
-
26
-
27
- class Recorder < IRecorder
28
- def initialize(remote, layout_bus)
29
- super(remote)
30
- self.make_writer_only :play, :stop, :record, :ff, :rew
31
-
32
- num_A = layout_bus[:p_out]
33
- num_B = layout_bus[:v_out]
34
- self._make_channel_props(num_A, num_B)
35
- end
36
-
37
- def cmd
38
- return "recorder"
39
- end
40
- end
1
+ require_relative 'meta'
2
+
3
+ class IRecorder
4
+ '
5
+ Base Recorder class
6
+ '
7
+ include Meta_Functions
8
+
9
+ def initialize(remote)
10
+ @remote = remote
11
+ end
12
+
13
+ def getter(param)
14
+ @remote.get_parameter("#{self.identifier}.#{param}")
15
+ end
16
+
17
+ def setter(param, value)
18
+ @remote.set_parameter("#{self.identifier}.#{param}", value)
19
+ end
20
+ end
21
+
22
+ class Recorder < IRecorder
23
+ '
24
+ Concrete Recorder class
25
+ '
26
+ def initialize(remote)
27
+ super
28
+ self.make_action_prop :play, :stop, :record, :ff, :rew
29
+
30
+ num_A, num_B = remote.kind.layout[:bus].values
31
+ self.make_accessor_bool *make_channel_props(num_A, num_B)
32
+ end
33
+
34
+ def identifier
35
+ :recorder
36
+ end
37
+ end