mirror of
https://github.com/onyx-and-iris/voicemeeter-rb.git
synced 2026-04-20 01:43:32 +00:00
Compare commits
9 Commits
main
...
77adc6a71b
| Author | SHA1 | Date | |
|---|---|---|---|
| 77adc6a71b | |||
| a886e2ab2e | |||
| 3f8673ea17 | |||
| 57112fd90a | |||
| aaee848962 | |||
| 4e5aab867b | |||
| 2156cebeea | |||
| 7825b58bb1 | |||
| 68f96b64db |
14
CHANGELOG.md
14
CHANGELOG.md
@@ -11,6 +11,18 @@ Before any major/minor/patch is released all unit tests will be run to verify th
|
|||||||
|
|
||||||
- [ ]
|
- [ ]
|
||||||
|
|
||||||
|
## [1.1.0] - 2023-06-28
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Configurable kwarg `login_timeout`, defaults to 2s.
|
||||||
|
|
||||||
|
## [1.0.1] - 2023-09-14
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- BusDevice added to Bus class.
|
||||||
|
|
||||||
## [1.0.0] - 2023-09-01
|
## [1.0.0] - 2023-09-01
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
@@ -23,6 +35,6 @@ Before any major/minor/patch is released all unit tests will be run to verify th
|
|||||||
- `ldirty`: channel level updates
|
- `ldirty`: channel level updates
|
||||||
- An entry point for fetching a Remote class for each kind of Voicemeeter (basic, banana, potato)
|
- An entry point for fetching a Remote class for each kind of Voicemeeter (basic, banana, potato)
|
||||||
- Logging system for reading messages sent by getters and setters.
|
- Logging system for reading messages sent by getters and setters.
|
||||||
- Strip class refinement in util.rb. It's scope should be limited to the CBindings module.
|
- String class refinement in util.rb. It's scope should be limited to the CBindings module.
|
||||||
- rbs type signatures but some of them need updating.
|
- rbs type signatures but some of them need updating.
|
||||||
- example user profile configs included with repo.
|
- example user profile configs included with repo.
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -10,9 +10,9 @@ For an outline of past/future changes refer to: [CHANGELOG](CHANGELOG.md)
|
|||||||
|
|
||||||
## Tested against
|
## Tested against
|
||||||
|
|
||||||
- Basic 1.0.8.8
|
- Basic 1.1.1.1
|
||||||
- Banana 2.0.6.8
|
- Banana 2.1.1.1
|
||||||
- Potato 3.0.2.8
|
- Potato 3.1.1.1
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
@@ -630,7 +630,7 @@ vm.vban.outstream[0].apply(on: true, name: "streamname", bit: 24)
|
|||||||
|
|
||||||
`vm.apply_config(<configname>)`
|
`vm.apply_config(<configname>)`
|
||||||
|
|
||||||
You may load config files in TOML format.
|
You may load config files in YAML format.
|
||||||
Three example configs have been included with the package. Remember to save
|
Three example configs have been included with the package. Remember to save
|
||||||
current settings before loading a config. To set one you may do:
|
current settings before loading a config. To set one you may do:
|
||||||
|
|
||||||
@@ -639,7 +639,7 @@ require "voicemeeter"
|
|||||||
Voicemeeter::Remote.new(:banana).run { |vm| vm.apply_config(:example) }
|
Voicemeeter::Remote.new(:banana).run { |vm| vm.apply_config(:example) }
|
||||||
```
|
```
|
||||||
|
|
||||||
will load a config file at mydir/configs/banana/example.toml for Voicemeeter Banana.
|
will load a config file at mydir/configs/banana/example.yml for Voicemeeter Banana.
|
||||||
|
|
||||||
## Events
|
## Events
|
||||||
|
|
||||||
@@ -750,7 +750,7 @@ vm.set("Strip[0].Gain", -3.6)
|
|||||||
- The following attributes are available:
|
- The following attributes are available:
|
||||||
- `fn_name`: name of the C-API function that failed.
|
- `fn_name`: name of the C-API function that failed.
|
||||||
- `code`: error code.
|
- `code`: error code.
|
||||||
- For a full list of error codes [check the VoicemeeterRemote header file][voicemeeter remote header].
|
- For a full list of error codes check the [VoicemeeterRemote header file][voicemeeter remote header].
|
||||||
|
|
||||||
### Logging
|
### Logging
|
||||||
|
|
||||||
@@ -772,9 +772,9 @@ Bundle exec rake
|
|||||||
|
|
||||||
### Official Documentation
|
### Official Documentation
|
||||||
|
|
||||||
- [Voicemeeter Remote C API](https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/update-docs/VoicemeeterRemoteAPI.pdf)
|
- [Voicemeeter Remote C API](https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/main/VoicemeeterRemoteAPI.pdf)
|
||||||
|
|
||||||
[license]: https://github.com/onyx-and-iris/voicemeeter-rb/blob/dev/LICENSE
|
[license]: https://github.com/onyx-and-iris/voicemeeter-rb/blob/dev/LICENSE
|
||||||
[voicemeeter remote header]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/update-docs/VoicemeeterRemote.h
|
[voicemeeter remote header]: https://github.com/onyx-and-iris/Voicemeeter-SDK/blob/main/VoicemeeterRemote.h
|
||||||
[code style]: https://img.shields.io/badge/code_style-standard-violet.svg
|
[code style]: https://img.shields.io/badge/code_style-standard-violet.svg
|
||||||
[gem version]: https://badge.fury.io/rb/voicemeeter.svg
|
[gem version]: https://badge.fury.io/rb/voicemeeter.svg
|
||||||
|
|||||||
@@ -4,18 +4,21 @@ module Voicemeeter
|
|||||||
include Logging
|
include Logging
|
||||||
include Worker
|
include Worker
|
||||||
include Events::Director
|
include Events::Director
|
||||||
|
prepend Util::Timeout
|
||||||
prepend Util::Cache
|
prepend Util::Cache
|
||||||
|
|
||||||
attr_reader :kind, :midi, :event, :delay, :cache
|
attr_reader :kind, :midi, :event, :delay, :cache
|
||||||
|
|
||||||
RATELIMIT = 0.033
|
RATELIMIT = 0.033
|
||||||
DELAY = 0.001
|
DELAY = 0.001
|
||||||
|
LOGIN_TIMEOUT = 2
|
||||||
|
|
||||||
def initialize(kind, **kwargs)
|
def initialize(kind, **kwargs)
|
||||||
@kind = kind
|
@kind = kind
|
||||||
@sync = kwargs[:sync] || false
|
@sync = kwargs[:sync] || false
|
||||||
@ratelimit = kwargs[:ratelimit] || RATELIMIT
|
@ratelimit = kwargs[:ratelimit] || RATELIMIT
|
||||||
@delay = kwargs[:delay] || DELAY
|
@delay = kwargs[:delay] || DELAY
|
||||||
|
@login_timeout = kwargs[:login_timeout] || LOGIN_TIMEOUT
|
||||||
@event =
|
@event =
|
||||||
Events::Tracker.new(
|
Events::Tracker.new(
|
||||||
**(kwargs.select { |k, _| %i[pdirty mdirty ldirty midi].include? k })
|
**(kwargs.select { |k, _| %i[pdirty mdirty ldirty midi].include? k })
|
||||||
@@ -30,8 +33,6 @@ module Voicemeeter
|
|||||||
|
|
||||||
def login
|
def login
|
||||||
CBindings.call(:bind_login, ok: [0, 1]) == 1 and run_voicemeeter(kind.name)
|
CBindings.call(:bind_login, ok: [0, 1]) == 1 and run_voicemeeter(kind.name)
|
||||||
clear_dirty
|
|
||||||
logger.info "Successfully logged into #{self} version #{version}"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def logout
|
def logout
|
||||||
@@ -72,7 +73,6 @@ module Voicemeeter
|
|||||||
logger.debug "Voicemeeter engine running but the GUI appears to be down... launching."
|
logger.debug "Voicemeeter engine running but the GUI appears to be down... launching."
|
||||||
end
|
end
|
||||||
CBindings.call(:bind_run_voicemeeter, kinds[kind_id])
|
CBindings.call(:bind_run_voicemeeter, kinds[kind_id])
|
||||||
sleep(1)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def type
|
def type
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ module Voicemeeter
|
|||||||
include Mixins::Return
|
include Mixins::Return
|
||||||
extend MetaFunctions
|
extend MetaFunctions
|
||||||
|
|
||||||
attr_reader :eq, :mode, :levels
|
attr_reader :eq, :mode, :levels, :device
|
||||||
attr_accessor_bool :mute, :mono, :sel, :monitor
|
attr_accessor_bool :mute, :mono, :sel, :monitor
|
||||||
attr_accessor_float :gain
|
attr_accessor_float :gain
|
||||||
attr_accessor_string :label
|
attr_accessor_string :label
|
||||||
@@ -21,6 +21,7 @@ module Voicemeeter
|
|||||||
@eq = BusEq.new(remote, i)
|
@eq = BusEq.new(remote, i)
|
||||||
@mode = BusModes.new(remote, i)
|
@mode = BusModes.new(remote, i)
|
||||||
@levels = BusLevels.new(remote, i)
|
@levels = BusLevels.new(remote, i)
|
||||||
|
@device = BusDevice.new(remote, i)
|
||||||
end
|
end
|
||||||
|
|
||||||
def identifier
|
def identifier
|
||||||
|
|||||||
@@ -18,6 +18,26 @@ module Voicemeeter
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
module Timeout
|
||||||
|
def login
|
||||||
|
super
|
||||||
|
|
||||||
|
err = nil
|
||||||
|
start = Time.now
|
||||||
|
begin
|
||||||
|
sleep 0.1
|
||||||
|
logger.info "Successfully logged into #{self} version #{version}"
|
||||||
|
logger.debug "login time: #{(Time.now - start).round(2)}"
|
||||||
|
err = nil
|
||||||
|
rescue Errors::VMCAPIError => e
|
||||||
|
err = e
|
||||||
|
retry if Time.now < start + @login_timeout
|
||||||
|
end
|
||||||
|
raise Errors::VMError.new "Timeout logging into the api" if err
|
||||||
|
clear_dirty
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
module Cache
|
module Cache
|
||||||
def get(name, is_string = false)
|
def get(name, is_string = false)
|
||||||
return cache.delete(name) if cache.key? name
|
return cache.delete(name) if cache.key? name
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ module Voicemeeter
|
|||||||
end
|
end
|
||||||
|
|
||||||
def minor
|
def minor
|
||||||
0
|
1
|
||||||
end
|
end
|
||||||
|
|
||||||
def patch
|
def patch
|
||||||
|
|||||||
Reference in New Issue
Block a user