voicemeeter_api_ruby 3.0.0 → 4.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/vban.rb CHANGED
@@ -1,67 +1,13 @@
1
+ require_relative 'iremote'
1
2
  require_relative 'meta'
2
3
  require_relative 'errors'
3
4
 
4
- class IVban
5
+ class VbanStream < IRemote
5
6
  '
6
- Base Vban class
7
+ A class representing a VBAN stream
7
8
  '
8
9
  include Vban_Meta_Functions
9
10
 
10
- def initialize(remote, index)
11
- @remote = remote
12
- @index = index
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}.#{self.direction}stream[#{@index}]"
25
- end
26
-
27
- def direction
28
- raise 'Called abstract mehod: direction'
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
- class Vban < IVban
37
- '
38
- Concrete Vban class
39
- '
40
- def self.make(remote, vban_streams)
41
- '
42
- Factory function for Vban class.
43
-
44
- Returns a mixin of instream/outstream subclasses
45
- '
46
- class << self
47
- attr_accessor :instream, :outstream, :remote
48
-
49
- def enable
50
- @remote.set_parameter('vban.enable', 1)
51
- end
52
- def disable
53
- @remote.set_parameter('vban.enable', 0)
54
- end
55
- end
56
-
57
- vban_in, vban_out = vban_streams.values
58
- self.instream = (0...vban_in).map { |i| VbanInstream.new(remote, i) }
59
- self.outstream = (0...vban_out).map { |i| VbanOutstream.new(remote, i) }
60
-
61
- self.remote = remote
62
- return self
63
- end
64
-
65
11
  def initialize(remote, i)
66
12
  super
67
13
  self.make_accessor_bool :on
@@ -70,11 +16,15 @@ class Vban < IVban
70
16
  end
71
17
 
72
18
  def identifier
73
- :vban
19
+ "vban.#{self.direction}stream[#{@index}]"
20
+ end
21
+
22
+ def direction
23
+ raise 'Called abstract mehod: direction'
74
24
  end
75
25
  end
76
26
 
77
- class VbanInstream < Vban
27
+ class VbanInstream < VbanStream
78
28
  '
79
29
  A subclass representing a VBAN Instream
80
30
  '
@@ -88,7 +38,7 @@ class VbanInstream < Vban
88
38
  end
89
39
  end
90
40
 
91
- class VbanOutstream < Vban
41
+ class VbanOutstream < VbanStream
92
42
  '
93
43
  A subclass representing a VBAN Outstream
94
44
  '
@@ -101,3 +51,28 @@ class VbanOutstream < Vban
101
51
  :out
102
52
  end
103
53
  end
54
+
55
+ class Vban
56
+ attr_accessor :instream, :outstream
57
+
58
+ def initialize(remote, vban_streams)
59
+ '
60
+ Initializes a Vban class
61
+
62
+ Creates an array for each in/out stream
63
+ '
64
+ vban_in, vban_out = vban_streams.values
65
+ self.instream = (0...vban_in).map { |i| VbanInstream.new(remote, i) }
66
+ self.outstream = (0...vban_out).map { |i| VbanOutstream.new(remote, i) }
67
+
68
+ @remote = remote
69
+ end
70
+
71
+ def enable
72
+ @remote.set_parameter('vban.enable', 1)
73
+ end
74
+
75
+ def disable
76
+ @remote.set_parameter('vban.enable', 0)
77
+ end
78
+ end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Voicemeeter_API_Ruby
2
- VERSION = '3.0.0'
2
+ VERSION = '4.0.0'
3
3
  end
data/lib/voicemeeter.rb CHANGED
@@ -1,4 +1,11 @@
1
1
  require_relative 'base'
2
+ require_relative 'strip'
3
+ require_relative 'bus'
4
+ require_relative 'button'
5
+ require_relative 'vban'
6
+ require_relative 'command'
7
+ require_relative 'recorder'
8
+ require_relative 'device'
2
9
 
3
10
  module Voicemeeter
4
11
  include RunVM
@@ -14,30 +21,29 @@ module Voicemeeter
14
21
 
15
22
  Offers a run method for resource closure.
16
23
  '
17
- def self.make(**kwargs)
18
- '
19
- Factory function that generates a Remote class for each kind.
20
-
21
- Returns a hash of Remote classes.
22
- '
23
- Kinds.kinds_all.to_h do |kind|
24
- [kind.name, Remote.new(kind, **kwargs)]
25
- end
26
- end
27
-
28
- def initialize(kind)
24
+ def initialize(kind, **kwargs)
29
25
  super
30
26
  self.strip = Strip.make(self, kind.layout[:strip])
31
27
  self.bus = Bus.make(self, kind.layout[:bus])
32
28
  self.button = MacroButton.make(self, kind.layout[:mb])
33
- self.vban = Vban.make(self, kind.layout[:vban])
29
+ self.vban = Vban.new(self, kind.layout[:vban])
34
30
  self.command = Command.new(self)
35
31
  self.recorder = Recorder.new(self)
32
+ self.device = Device.new(self)
36
33
  end
37
34
 
38
35
  def run
36
+ '
37
+ Handles login/logout
38
+
39
+ Starts/stops the observable thread.
40
+ '
41
+ login
42
+ init_thread
43
+
39
44
  yield if block_given?
40
45
  ensure
46
+ end_thread
41
47
  logout
42
48
  end
43
49
  end
@@ -46,16 +52,23 @@ module Voicemeeter
46
52
 
47
53
  def self.remote(kind_id, **kwargs)
48
54
  '
49
- Request a Remote class of a kind and login to the API
55
+ Factory method for remotes.
56
+
57
+ Creates a hash of remote classes, one for each kind.
58
+
59
+ Handles kind_id request errors.
60
+
61
+ Returns a remote class of the kind requested.
50
62
  '
51
- _remotes = Remote.make(**kwargs)
63
+ _remotes =
64
+ Kinds.kinds_all.to_h do |kind|
65
+ [kind.name.to_s, Remote.new(kind, **kwargs)]
66
+ end
52
67
 
53
68
  unless _remotes.key? kind_id
54
69
  raise VMRemoteErrors.new('Unknown Voicemeeter Kind.')
55
70
  end
56
-
57
- _remotes[kind_id].login
58
- return _remotes[kind_id]
71
+ _remotes[kind_id]
59
72
  end
60
73
 
61
74
  def self.testing
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: voicemeeter_api_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - onyx_online
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-03 00:00:00.000000000 Z
11
+ date: 2022-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: 0.3.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: observer
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: rspec
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -74,13 +88,14 @@ files:
74
88
  - lib/bus.rb
75
89
  - lib/button.rb
76
90
  - lib/cbindings.rb
77
- - lib/channel.rb
78
91
  - lib/command.rb
92
+ - lib/configs.rb
93
+ - lib/device.rb
79
94
  - lib/errors.rb
80
95
  - lib/inst.rb
96
+ - lib/iremote.rb
81
97
  - lib/kinds.rb
82
98
  - lib/meta.rb
83
- - lib/profiles.rb
84
99
  - lib/recorder.rb
85
100
  - lib/runvm.rb
86
101
  - lib/strip.rb
@@ -107,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
122
  - !ruby/object:Gem::Version
108
123
  version: '0'
109
124
  requirements: []
110
- rubygems_version: 3.3.7
125
+ rubygems_version: 3.3.12
111
126
  signing_key:
112
127
  specification_version: 4
113
128
  summary: Voicemeeter API wrapper
data/lib/profiles.rb DELETED
@@ -1,28 +0,0 @@
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