voicemeeter_api_ruby 2.0.4 → 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,252 +1,274 @@
1
- require_relative 'errors'
2
-
3
- class FalseClass; def to_i; 0 end end
4
- class TrueClass; def to_i; 1 end end
5
-
6
- module Meta_Functions
7
- private
8
- def make_accessor_bool(*params)
9
- params.each do |param|
10
- define_singleton_method("#{param}") do
11
- return !(self.getter("#{param}")).zero?
12
- end
13
-
14
- opts = [false, true, 0, 1]
15
- define_singleton_method("#{param}=") do |value|
16
- raise OutOfBoundsErrors.new(opts) unless opts.include? value
17
- self.setter("#{param}", value.to_i == 1 ? 1 : 0)
18
- end
19
- end
20
- end
21
-
22
- def make_accessor_int(*params)
23
- params.each do |param|
24
- define_singleton_method("#{param}") do
25
- return self.getter("#{param}").to_i
26
- end
27
- define_singleton_method("#{param}=") do |value|
28
- self.setter("#{param}", value)
29
- end
30
- end
31
- end
32
-
33
- def make_accessor_float(*params)
34
- params.each do |param|
35
- define_singleton_method("#{param}") do
36
- return self.getter("#{param}")
37
- end
38
- define_singleton_method("#{param}=") do |value|
39
- self.setter("#{param}", value)
40
- end
41
- end
42
- end
43
-
44
- def make_accessor_string(*params)
45
- params.each do |param|
46
- define_singleton_method("#{param}") do
47
- return self.getter("#{param}", true)
48
- end
49
- define_singleton_method("#{param}=") do |value|
50
- self.setter("#{param}", value)
51
- end
52
- end
53
- end
54
-
55
- def make_reader_only(*params)
56
- params.each do |param|
57
- define_singleton_method("#{param}") do
58
- return self.getter("#{param}")
59
- end
60
- end
61
- end
62
-
63
- def make_writer_only(*params)
64
- params.each do |param|
65
- define_singleton_method("#{param}=") do |value=1|
66
- self.setter("#{param}", value)
67
- end
68
- end
69
- end
70
-
71
- def make_channel_props(num_A, num_B)
72
- (1..(num_A + num_B)).map do |i|
73
- i <= num_A ? "A#{i}" : "B#{i - num_A}"
74
- end
75
- end
76
- end
77
-
78
-
79
- module Channel_Meta_Functions
80
- include Meta_Functions
81
-
82
- def make_accessor_bool(*params)
83
- params.each do |param|
84
- cmds = {
85
- :eq => 'EQ.on',
86
- }
87
- if cmds[param] then val = cmds[param] else val = param end
88
-
89
- define_singleton_method("#{param}") do
90
- return !(self.getter("#{val}")).zero?
91
- end
92
-
93
- opts = [false, true, 0, 1]
94
- define_singleton_method("#{param}=") do |value|
95
- raise OutOfBoundsErrors.new(opts) unless opts.include? value
96
- self.setter("#{val}", value.to_i == 1 ? 1 : 0)
97
- end
98
- end
99
- end
100
-
101
- def make_accessor_float(*params)
102
- params.each do |param|
103
- define_singleton_method("#{param}") do
104
- return self.getter("#{param}")
105
- end
106
-
107
- opts = {
108
- :gain => [-60,12],
109
- :comp => [0,10],
110
- :gate => [0,10],
111
- }
112
- define_singleton_method("#{param}=") do |value|
113
- raise OutOfBoundsErrors.new(opts[param]) unless value.between? *opts[param]
114
- self.setter("#{param}", value)
115
- end
116
- end
117
- end
118
-
119
- def make_accessor_int(*params)
120
- params.each do |param|
121
- define_singleton_method("#{param}") do
122
- return self.getter("#{param}").to_i
123
- end
124
-
125
- opts = {
126
- :limit => (-40..12),
127
- }
128
- define_singleton_method("#{param}=") do |value|
129
- raise OutOfBoundsErrors.new(opts[param]) unless opts[param].member? value
130
- self.setter("#{param}", value)
131
- end
132
- end
133
- end
134
-
135
- def make_reader_only(*params)
136
- params.each do |param|
137
- cmds = {
138
- :device => 'device.name',
139
- :sr => 'device.sr',
140
- }
141
- if cmds[param] then val = cmds[param] else val = param end
142
-
143
- define_singleton_method("#{param}") do
144
- case param
145
- when :device
146
- return self.getter("#{val}", true)
147
- when :sr
148
- return self.getter("#{val}", true).to_i
149
- end
150
- end
151
- end
152
- end
153
- end
154
-
155
-
156
- module Vban_Meta_Functions
157
- include Meta_Functions
158
-
159
- def make_reader_int(*params)
160
- params.each do |param|
161
- define_singleton_method("#{param}") do
162
- case param
163
- when :bit
164
- return self.getter("#{param}").to_i == 1 ? 16 : 24
165
- else
166
- return self.getter("#{param}").to_i
167
- end
168
- end
169
- end
170
- end
171
-
172
- def make_accessor_int(*params)
173
- params.each do |param|
174
- define_singleton_method("#{param}") do
175
- case param
176
- when :bit
177
- return self.getter("#{param}").to_i == 1 ? 16 : 24
178
- else
179
- return self.getter("#{param}").to_i
180
- end
181
- end
182
-
183
- opts = {
184
- :sr => [11025, 16000, 22050, 24000, 32000, 44100, 48000,
185
- 64000, 88200, 96000],
186
- :channel => (1..8),
187
- :bit => [16,24],
188
- :quality => (0..4),
189
- :route => (0..8),
190
- }
191
-
192
- define_singleton_method("#{param}=") do |value|
193
- raise OutOfBoundsErrors.new(opts[param]) unless opts[param].member? value
194
- case param
195
- when :bit
196
- self.setter("#{param}", value == 16 ? 1 : 2)
197
- else
198
- self.setter("#{param}", value)
199
- end
200
- end
201
- end
202
- end
203
- end
204
-
205
-
206
- module MacroButton_Meta_Functions
207
- def make_accessor_macrobutton(*params)
208
- params.each do |param|
209
- mode = {
210
- :state => 1,
211
- :stateonly => 2,
212
- :trigger => 3,
213
- }
214
-
215
- define_singleton_method("#{param}") do
216
- return !(self.getter(mode[param])).zero?
217
- end
218
-
219
- opts = [false, true, 0, 1]
220
- define_singleton_method("#{param}=") do |value|
221
- raise OutOfBoundsErrors.new(opts[param]) unless opts.include? value
222
- self.setter(value.to_i == 1 ? 1 : 0, mode[param])
223
- end
224
- end
225
- end
226
- end
227
-
228
- module Commands_Meta_Functions
229
- include Meta_Functions
230
- def make_action_prop(*params)
231
- params.each do |param|
232
- define_singleton_method("#{param}") do
233
- self.setter("#{param}", 1)
234
- end
235
- end
236
- end
237
-
238
- def make_writer_bool(*params)
239
- params.each do |param|
240
- cmds = {
241
- :showvbanchat => 'DialogShow.VBANCHAT',
242
- }
243
- if cmds[param] then val = cmds[param] else val = param end
244
-
245
- opts = [false, true]
246
- define_singleton_method("#{param}=") do |value|
247
- raise OutOfBoundsErrors.new(opts) unless opts.include? value
248
- self.setter("#{param}", value.to_i == 1 ? 1 : 0)
249
- end
250
- end
251
- end
252
- 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,45 +1,37 @@
1
- require_relative 'meta'
2
-
3
-
4
- class IRecorder
5
- """
6
- Base class for Recorder object
7
- """
8
- include Meta_Functions
9
-
10
- attr_accessor :remote
11
-
12
- def initialize(remote)
13
- self.remote = remote
14
- end
15
-
16
- def getter(param)
17
- @remote.get_parameter("#{self.cmd}.#{param}")
18
- end
19
-
20
- def setter(param, value)
21
- @remote.set_parameter("#{self.cmd}.#{param}", value)
22
- end
23
-
24
- def cmd
25
- raise NotImplementedError
26
- end
27
- end
28
-
29
-
30
- class Recorder < IRecorder
31
- """
32
- Concrete class for recorder
33
- """
34
- def initialize(remote)
35
- super(remote)
36
- self.make_writer_only :play, :stop, :record, :ff, :rew
37
-
38
- num_A, num_B = remote.layout[:bus].map { |k, v| v }
39
- self.make_accessor_bool *make_channel_props(num_A, num_B)
40
- end
41
-
42
- def cmd
43
- return "recorder"
44
- end
45
- 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