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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +271 -0
- data/LICENSE +21 -0
- data/README.md +308 -0
- data/lib/base.rb +151 -132
- data/lib/bus.rb +64 -31
- data/lib/button.rb +36 -35
- data/lib/cbindings.rb +103 -0
- data/lib/channel.rb +46 -25
- data/lib/command.rb +41 -41
- data/lib/errors.rb +39 -37
- data/lib/inst.rb +38 -40
- data/lib/kinds.rb +77 -0
- data/lib/meta.rb +274 -242
- data/lib/profiles.rb +28 -0
- data/lib/recorder.rb +37 -40
- data/lib/runvm.rb +29 -20
- data/lib/strip.rb +80 -49
- data/lib/vban.rb +103 -92
- data/lib/version.rb +3 -3
- data/lib/voicemeeter.rb +73 -30
- metadata +22 -26
- data/lib/routines.rb +0 -128
data/lib/command.rb
CHANGED
@@ -1,41 +1,41 @@
|
|
1
|
-
require_relative 'meta'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
self.
|
28
|
-
end
|
29
|
-
|
30
|
-
def load(value)
|
31
|
-
raise VMRemoteErrors.new(
|
32
|
-
self.setter(
|
33
|
-
sleep(0.2)
|
34
|
-
end
|
35
|
-
|
36
|
-
def save(value)
|
37
|
-
raise VMRemoteErrors.new(
|
38
|
-
self.setter(
|
39
|
-
sleep(0.2)
|
40
|
-
end
|
41
|
-
end
|
1
|
+
require_relative 'meta'
|
2
|
+
|
3
|
+
class ICommand
|
4
|
+
include Commands_Meta_Functions
|
5
|
+
|
6
|
+
def initialize(remote)
|
7
|
+
@remote = remote
|
8
|
+
end
|
9
|
+
|
10
|
+
def setter(param, value)
|
11
|
+
@remote.set_parameter("#{self.identifier}.#{param}", value)
|
12
|
+
end
|
13
|
+
|
14
|
+
def identifier
|
15
|
+
:command
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class Command < ICommand
|
20
|
+
def initialize(remote)
|
21
|
+
super
|
22
|
+
self.make_action_prop :show, :restart, :reset, :shutdown
|
23
|
+
self.make_writer_bool :showvbanchat, :lock
|
24
|
+
end
|
25
|
+
|
26
|
+
def hide
|
27
|
+
self.setter('show', 0)
|
28
|
+
end
|
29
|
+
|
30
|
+
def load(value)
|
31
|
+
raise VMRemoteErrors.new('Expected a string') unless value.is_a? String
|
32
|
+
self.setter('load', value)
|
33
|
+
sleep(0.2)
|
34
|
+
end
|
35
|
+
|
36
|
+
def save(value)
|
37
|
+
raise VMRemoteErrors.new('Expected a string') unless value.is_a? String
|
38
|
+
self.setter('save', value)
|
39
|
+
sleep(0.2)
|
40
|
+
end
|
41
|
+
end
|
data/lib/errors.rb
CHANGED
@@ -1,37 +1,39 @@
|
|
1
|
-
module Errors
|
2
|
-
class VMRemoteErrors < StandardError
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
"Value error, expected
|
32
|
-
|
33
|
-
"Value error, expected #{@range}"
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
1
|
+
module Errors
|
2
|
+
class VMRemoteErrors < StandardError
|
3
|
+
end
|
4
|
+
|
5
|
+
class InstallErrors < VMRemoteErrors
|
6
|
+
end
|
7
|
+
|
8
|
+
class CAPIErrors < VMRemoteErrors
|
9
|
+
attr_accessor :value, :func
|
10
|
+
|
11
|
+
def initialize(value, func)
|
12
|
+
self.value = value
|
13
|
+
self.func = func
|
14
|
+
end
|
15
|
+
|
16
|
+
def message
|
17
|
+
"When attempting to run function #{@func} the
|
18
|
+
C API returned value #{@value}. See documentation for further info"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class OutOfBoundsErrors < VMRemoteErrors
|
23
|
+
attr_accessor :range
|
24
|
+
|
25
|
+
def initialize(range)
|
26
|
+
self.range = range
|
27
|
+
end
|
28
|
+
|
29
|
+
def message
|
30
|
+
if @range.kind_of?(Range)
|
31
|
+
"Value error, expected value in range (#{range.first}..#{range.last})"
|
32
|
+
elsif @range.kind_of?(Array)
|
33
|
+
"Value error, expected one of: #{@range}"
|
34
|
+
else
|
35
|
+
"Value error, expected #{@range}"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/inst.rb
CHANGED
@@ -1,40 +1,38 @@
|
|
1
|
-
require 'win32/registry'
|
2
|
-
require 'pathname'
|
3
|
-
require_relative 'errors'
|
4
|
-
|
5
|
-
include Errors
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
1
|
+
require 'win32/registry'
|
2
|
+
require 'pathname'
|
3
|
+
require_relative 'errors'
|
4
|
+
|
5
|
+
include Errors
|
6
|
+
|
7
|
+
module InstallationFunctions
|
8
|
+
private
|
9
|
+
|
10
|
+
def get_arch
|
11
|
+
key = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
|
12
|
+
Win32::Registry::HKEY_LOCAL_MACHINE.open(key) do |reg|
|
13
|
+
os_bits = reg['PROCESSOR_ARCHITECTURE']
|
14
|
+
return 64 if os_bits.include? '64'
|
15
|
+
return 32
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def get_vmpath(os_bits)
|
20
|
+
vm_key = 'VB:Voicemeeter {17359A74-1236-5467}'
|
21
|
+
reg_key =
|
22
|
+
"Software#{os_bits == 64 ? "\\WOW6432Node" : ''}\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"
|
23
|
+
Win32::Registry::HKEY_LOCAL_MACHINE.open(reg_key + vm_key) do |reg|
|
24
|
+
value = reg['UninstallString']
|
25
|
+
|
26
|
+
pn = Pathname.new(value)
|
27
|
+
return pn.dirname
|
28
|
+
end
|
29
|
+
raise InstallErrors.new('Could not get the Voicemeeter path')
|
30
|
+
end
|
31
|
+
|
32
|
+
def vmr_dll=(value)
|
33
|
+
unless value.file?
|
34
|
+
raise InstallErrors.new('Could not fetch the dll file')
|
35
|
+
end
|
36
|
+
@vmr_dll = value
|
37
|
+
end
|
38
|
+
end
|
data/lib/kinds.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
module Kinds
|
2
|
+
'
|
3
|
+
A Kind struct for each version of Voicemeeter
|
4
|
+
'
|
5
|
+
attr_reader :kind_map, :kinds_all
|
6
|
+
|
7
|
+
Kind = Struct.new(:name, :layout)
|
8
|
+
basic =
|
9
|
+
Kind.new(
|
10
|
+
'basic',
|
11
|
+
{
|
12
|
+
strip: {
|
13
|
+
p_in: 2,
|
14
|
+
v_in: 1,
|
15
|
+
},
|
16
|
+
bus: {
|
17
|
+
p_out: 1,
|
18
|
+
v_out: 1,
|
19
|
+
},
|
20
|
+
vban: {
|
21
|
+
instream: 4,
|
22
|
+
outstream: 4,
|
23
|
+
},
|
24
|
+
mb: 80,
|
25
|
+
},
|
26
|
+
)
|
27
|
+
|
28
|
+
banana =
|
29
|
+
Kind.new(
|
30
|
+
'banana',
|
31
|
+
{
|
32
|
+
strip: {
|
33
|
+
p_in: 3,
|
34
|
+
v_in: 2,
|
35
|
+
},
|
36
|
+
bus: {
|
37
|
+
p_out: 3,
|
38
|
+
v_out: 2,
|
39
|
+
},
|
40
|
+
vban: {
|
41
|
+
instream: 8,
|
42
|
+
outstream: 8,
|
43
|
+
},
|
44
|
+
mb: 80,
|
45
|
+
},
|
46
|
+
)
|
47
|
+
|
48
|
+
potato =
|
49
|
+
Kind.new(
|
50
|
+
'potato',
|
51
|
+
{
|
52
|
+
strip: {
|
53
|
+
p_in: 5,
|
54
|
+
v_in: 3,
|
55
|
+
},
|
56
|
+
bus: {
|
57
|
+
p_out: 5,
|
58
|
+
v_out: 3,
|
59
|
+
},
|
60
|
+
vban: {
|
61
|
+
instream: 8,
|
62
|
+
outstream: 8,
|
63
|
+
},
|
64
|
+
mb: 80,
|
65
|
+
},
|
66
|
+
)
|
67
|
+
|
68
|
+
@kind_map = [basic, banana, potato].to_h { |kind| [kind.name, kind] }
|
69
|
+
|
70
|
+
def get_kind(kind_id)
|
71
|
+
@kind_map[kind_id]
|
72
|
+
end
|
73
|
+
|
74
|
+
@kinds_all = @kind_map.values
|
75
|
+
|
76
|
+
module_function :get_kind
|
77
|
+
end
|