voicemeeter_api_ruby 4.0.0 → 4.1.2

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,274 +1,282 @@
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}").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
1
+ require_relative 'errors'
2
+
3
+ module Conversions
4
+ module_function
5
+
6
+ def Boolean(value)
7
+ case value
8
+ when true, 1
9
+ true
10
+ when false, nil, 0
11
+ false
12
+ else
13
+ raise ArgumentError,
14
+ "invalid value for Boolean(): \"#{value.inspect}\""
15
+ end
16
+ end
17
+ end
18
+
19
+ module Meta_Functions
20
+ private
21
+
22
+ include Conversions
23
+
24
+ def make_accessor_bool(*params)
25
+ params.each do |param|
26
+ define_singleton_method("#{param}") do
27
+ return !(self.getter("#{param}")).zero?
28
+ end
29
+
30
+ define_singleton_method("#{param}=") do |value|
31
+ self.setter("#{param}", Boolean(value) ? 1 : 0)
32
+ end
33
+ end
34
+ end
35
+
36
+ def make_accessor_int(*params)
37
+ params.each do |param|
38
+ define_singleton_method("#{param}") do
39
+ return self.getter("#{param}").to_i
40
+ end
41
+ define_singleton_method("#{param}=") do |value|
42
+ self.setter("#{param}", value)
43
+ end
44
+ end
45
+ end
46
+
47
+ def make_accessor_float(*params)
48
+ params.each do |param|
49
+ define_singleton_method("#{param}") do
50
+ return self.getter("#{param}")
51
+ end
52
+ define_singleton_method("#{param}=") do |value|
53
+ self.setter("#{param}", value)
54
+ end
55
+ end
56
+ end
57
+
58
+ def make_accessor_string(*params)
59
+ params.each do |param|
60
+ define_singleton_method("#{param}") do
61
+ return self.getter("#{param}", true)
62
+ end
63
+ define_singleton_method("#{param}=") do |value|
64
+ self.setter("#{param}", value)
65
+ end
66
+ end
67
+ end
68
+
69
+ def make_reader_only(*params)
70
+ params.each do |param|
71
+ define_singleton_method("#{param}") do
72
+ return self.getter("#{param}")
73
+ end
74
+ end
75
+ end
76
+
77
+ def make_writer_only(*params)
78
+ params.each do |param|
79
+ define_singleton_method("#{param}=") do |value = 1|
80
+ self.setter("#{param}", value)
81
+ end
82
+ end
83
+ end
84
+
85
+ def make_channel_props(num_A, num_B)
86
+ (1..(num_A + num_B)).map { |i| i <= num_A ? "A#{i}" : "B#{i - num_A}" }
87
+ end
88
+
89
+ def make_action_prop(*params)
90
+ params.each do |param|
91
+ define_singleton_method("#{param}") { self.setter("#{param}", 1) }
92
+ end
93
+ end
94
+ end
95
+
96
+ module Channel_Meta_Functions
97
+ private
98
+
99
+ include Conversions
100
+ include Meta_Functions
101
+
102
+ def make_accessor_bool(*params)
103
+ params.each do |param|
104
+ cmds = { eq: 'EQ.on' }
105
+ if cmds.key? param
106
+ cmd = cmds[param]
107
+ else
108
+ cmd = param
109
+ end
110
+
111
+ define_singleton_method("#{param}") do
112
+ return !(self.getter("#{cmd}")).zero?
113
+ end
114
+
115
+ define_singleton_method("#{param}=") do |value|
116
+ self.setter("#{cmd}", Boolean(value) ? 1 : 0)
117
+ end
118
+ end
119
+ end
120
+
121
+ def make_accessor_float(*params)
122
+ params.each do |param|
123
+ define_singleton_method("#{param}") do
124
+ return self.getter("#{param}")
125
+ end
126
+
127
+ define_singleton_method("#{param}=") do |value|
128
+ self.setter("#{param}", value)
129
+ end
130
+ end
131
+ end
132
+
133
+ def make_accessor_int(*params)
134
+ params.each do |param|
135
+ define_singleton_method("#{param}") do
136
+ return self.getter("#{param}").to_i
137
+ end
138
+
139
+ define_singleton_method("#{param}=") do |value|
140
+ self.setter("#{param}", value)
141
+ end
142
+ end
143
+ end
144
+
145
+ def make_reader_only(*params)
146
+ params.each do |param|
147
+ cmds = { device: 'device.name', sr: 'device.sr' }
148
+ if cmds.key? param
149
+ cmd = cmds[param]
150
+ else
151
+ cmd = param
152
+ end
153
+
154
+ define_singleton_method("#{param}") do
155
+ case param
156
+ when :device
157
+ return self.getter("#{cmd}", true)
158
+ when :sr
159
+ return self.getter("#{cmd}").to_i
160
+ end
161
+ end
162
+ end
163
+ end
164
+
165
+ def make_bus_modes(*params)
166
+ params.each do |param|
167
+ define_singleton_method("#{param}") do
168
+ @remote.clear_polling
169
+ return !(self.getter("#{param}")).zero?
170
+ end
171
+
172
+ define_singleton_method("#{param}=") do |value|
173
+ self.setter("#{param}", Boolean(value) ? 1 : 0)
174
+ end
175
+ end
176
+ end
177
+ end
178
+
179
+ module Vban_Meta_Functions
180
+ private
181
+
182
+ include Conversions
183
+ include Meta_Functions
184
+
185
+ def make_reader_int(*params)
186
+ params.each do |param|
187
+ define_singleton_method("#{param}") do
188
+ case param
189
+ when :bit
190
+ return self.getter("#{param}").to_i == 1 ? 16 : 24
191
+ else
192
+ return self.getter("#{param}").to_i
193
+ end
194
+ end
195
+ end
196
+ end
197
+
198
+ def make_accessor_int(*params)
199
+ params.each do |param|
200
+ define_singleton_method("#{param}") do
201
+ case param
202
+ when :bit
203
+ return self.getter("#{param}").to_i == 1 ? 16 : 24
204
+ else
205
+ return self.getter("#{param}").to_i
206
+ end
207
+ end
208
+
209
+ opts = {
210
+ sr: [
211
+ 11_025,
212
+ 16_000,
213
+ 22_050,
214
+ 24_000,
215
+ 32_000,
216
+ 44_100,
217
+ 48_000,
218
+ 64_000,
219
+ 88_200,
220
+ 96_000,
221
+ ],
222
+ channel: (1..8),
223
+ bit: [16, 24],
224
+ quality: (0..4),
225
+ route: (0..8),
226
+ }
227
+
228
+ define_singleton_method("#{param}=") do |value|
229
+ unless opts[param].member? value
230
+ raise OutOfBoundsErrors.new(opts[param])
231
+ end
232
+ case param
233
+ when :bit
234
+ self.setter("#{param}", value == 16 ? 1 : 2)
235
+ else
236
+ self.setter("#{param}", value)
237
+ end
238
+ end
239
+ end
240
+ end
241
+ end
242
+
243
+ module MacroButton_Meta_Functions
244
+ private
245
+
246
+ include Conversions
247
+
248
+ def make_accessor_macrobutton(*params)
249
+ params.each do |param|
250
+ mode = { state: 1, stateonly: 2, trigger: 3 }
251
+
252
+ define_singleton_method("#{param}") do
253
+ return !(self.getter(mode[param])).zero?
254
+ end
255
+
256
+ define_singleton_method("#{param}=") do |value|
257
+ self.setter(Boolean(value) ? 1 : 0, mode[param])
258
+ end
259
+ end
260
+ end
261
+ end
262
+
263
+ module Commands_Meta_Functions
264
+ private
265
+
266
+ include Conversions
267
+ include Meta_Functions
268
+ def make_writer_bool(*params)
269
+ params.each do |param|
270
+ cmds = { showvbanchat: 'DialogShow.VBANCHAT' }
271
+ if cmds.key? param
272
+ cmd = cmds[param]
273
+ else
274
+ cmd = param
275
+ end
276
+
277
+ define_singleton_method("#{param}=") do |value|
278
+ self.setter("#{cmd}", Boolean(value) ? 1 : 0)
279
+ end
280
+ end
281
+ end
282
+ end
data/lib/mixin.rb ADDED
@@ -0,0 +1,11 @@
1
+ module Fades
2
+ def fadeto(target, time)
3
+ self.setter('FadeTo', "(#{target}, #{time})")
4
+ sleep(@remote.DELAY)
5
+ end
6
+
7
+ def fadeby(change, time)
8
+ self.setter('FadeBy', "(#{change}, #{time})")
9
+ sleep(@remote.DELAY)
10
+ end
11
+ end
data/lib/recorder.rb CHANGED
@@ -1,20 +1,20 @@
1
- require_relative 'iremote'
2
- require_relative 'meta'
3
-
4
- class Recorder < IRemote
5
- '
6
- Concrete Recorder class
7
- '
8
-
9
- def initialize(remote)
10
- super
11
- self.make_action_prop :play, :stop, :record, :ff, :rew
12
-
13
- num_A, num_B = remote.kind.layout[:bus].values
14
- self.make_accessor_bool *make_channel_props(num_A, num_B)
15
- end
16
-
17
- def identifier
18
- :recorder
19
- end
20
- end
1
+ require_relative 'iremote'
2
+ require_relative 'meta'
3
+
4
+ class Recorder < IRemote
5
+ '
6
+ Concrete Recorder class
7
+ '
8
+
9
+ def initialize(remote)
10
+ super
11
+ self.make_action_prop :play, :stop, :record, :ff, :rew
12
+
13
+ num_A, num_B = remote.kind.layout[:bus].values
14
+ self.make_accessor_bool *make_channel_props(num_A, num_B)
15
+ end
16
+
17
+ def identifier
18
+ :recorder
19
+ end
20
+ end