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/channel.rb CHANGED
@@ -1,34 +1,46 @@
1
- require_relative 'meta'
2
- require_relative 'errors'
3
-
4
- class IChannel
5
- """
6
- Base class for audio channels
7
- """
8
- include Channel_Meta_Functions
9
-
10
- attr_accessor :remote, :index
11
-
12
- def initialize(remote, i)
13
- self.remote = remote
14
- self.index = i
15
- end
16
-
17
- def getter(param, is_string=false)
18
- @remote.get_parameter("#{self.cmd}.#{param}", is_string)
19
- end
20
-
21
- def setter(param, value)
22
- @remote.set_parameter("#{self.cmd}.#{param}", value)
23
- end
24
-
25
- def cmd
26
- raise NotImplementedError
27
- end
28
-
29
- def set_multi(param_hash)
30
- param_hash.each do |(key,val)|
31
- self.send("#{key}=", val)
32
- end
33
- end
34
- end
1
+ require_relative 'meta'
2
+ require_relative 'errors'
3
+
4
+ class IChannel
5
+ '
6
+ Base Channel class
7
+ '
8
+ include Channel_Meta_Functions
9
+
10
+ def initialize(remote, i)
11
+ @remote = remote
12
+ @index = i
13
+ end
14
+
15
+ def getter(param, is_string = false)
16
+ @remote.get_parameter("#{self.cmd}.#{param}", is_string)
17
+ end
18
+
19
+ def setter(param, value)
20
+ @remote.set_parameter("#{self.cmd}.#{param}", value)
21
+ end
22
+
23
+ def cmd
24
+ "#{self.identifier}[#{@index}]"
25
+ end
26
+
27
+ def identifier
28
+ raise 'Called abstract mehod: identifier'
29
+ end
30
+
31
+ def set_multi(param_hash)
32
+ param_hash.each { |(key, val)| self.send("#{key}=", val) }
33
+ end
34
+ end
35
+
36
+ module Fades
37
+ def fadeto(target, time)
38
+ self.setter('FadeTo', "(#{target}, #{time})")
39
+ sleep(@remote.delay)
40
+ end
41
+
42
+ def fadeby(change, time)
43
+ self.setter('FadeBy', "(#{change}, #{time})")
44
+ sleep(@remote.delay)
45
+ end
46
+ end
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_action_prop :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,36 +1,38 @@
1
- require 'win32/registry'
2
- require 'pathname'
3
- require_relative 'errors'
4
-
5
- include Errors
6
-
7
- module InstallationFunctions
8
- private
9
- def get_arch
10
- key = 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
11
- Win32::Registry::HKEY_LOCAL_MACHINE.open(key) do |reg|
12
- os_bits = reg["PROCESSOR_ARCHITECTURE"]
13
- if os_bits.include? 64.to_s
14
- return 64
15
- end
16
- return 32
17
- end
18
- end
19
-
20
- def get_vmpath(os_bits)
21
- vm_key = "VB:Voicemeeter {17359A74-1236-5467}"
22
- reg_key = "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
- raise InstallErrors.new('Could not fetch the dll file') unless value.file?
34
- @vmr_dll = value
35
- end
36
- 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