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/command.rb CHANGED
@@ -1,41 +1,41 @@
1
- require_relative 'meta'
2
-
3
-
4
- class ICommand
5
- include Commands_Meta_Functions
6
-
7
- attr_accessor :remote
8
-
9
- def initialize(remote)
10
- self.remote = remote
11
- end
12
-
13
- def setter(param, value)
14
- @remote.set_parameter("#{self.cmd}.#{param}", value)
15
- end
16
-
17
- def cmd
18
- return "command"
19
- end
20
- end
21
-
22
-
23
- class Command < ICommand
24
- def initialize(remote)
25
- super
26
- self.make_writer_only :show, :restart, :reset, :shutdown
27
- self.make_writer_bool :showvbanchat, :lock
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
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; end
3
-
4
- class InstallErrors < VMRemoteErrors; end
5
-
6
- class CAPIErrors < VMRemoteErrors
7
- attr_accessor :value, :func
8
-
9
- def initialize(value, func)
10
- self.value = value
11
- self.func = func
12
- end
13
-
14
- def message
15
- "When attempting to run function #{@func} the
16
- C API returned value #{@value}. See documentation for further info"
17
- end
18
- end
19
-
20
- class OutOfBoundsErrors < VMRemoteErrors
21
- attr_accessor :range
22
-
23
- def initialize(range)
24
- self.range = range
25
- end
26
-
27
- def message
28
- if @range.kind_of?(Range)
29
- "Value error, expected value in range (#{range.first}..#{range.last})"
30
- elsif @range.kind_of?(Array)
31
- "Value error, expected one of: #{@range}"
32
- else
33
- "Value error, expected #{@range}"
34
- end
35
- end
36
- end
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
- BASIC = 1
8
- BANANA = 2
9
- POTATO = 3
10
-
11
- module InstallationFunctions
12
- def get_arch
13
- key = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
14
- Win32::Registry::HKEY_LOCAL_MACHINE.open(key) do |reg|
15
- os_bits = reg["PROCESSOR_ARCHITECTURE"]
16
- if os_bits.include? 64.to_s
17
- return 64
18
- end
19
- return 32
20
- end
21
- end
22
-
23
- def get_vmpath(os_bits)
24
- vm_key = "VB:Voicemeeter {17359A74-1236-5467}"
25
- reg_key = "Software#{os_bits == 64 ? "\\WOW6432Node" : ""}\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"
26
-
27
- Win32::Registry::HKEY_LOCAL_MACHINE.open(reg_key + vm_key) do |reg|
28
- value = reg["UninstallString"]
29
-
30
- pn = Pathname.new(value)
31
- return pn.dirname
32
- end
33
- raise InstallErrors.new('Could not get the Voicemeeter path')
34
- end
35
-
36
- def vmr_dll=(value)
37
- raise InstallErrors.new('Could not fetch the dll file') unless value.file?
38
- @vmr_dll = value
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