Compare commits

..

9 Commits

Author SHA1 Message Date
77adc6a71b upd tested against in README 2024-06-28 11:00:08 +01:00
a886e2ab2e added 1.1.0 to CHANGELOG 2024-06-28 10:59:54 +01:00
3f8673ea17 minor bump 2024-06-28 10:59:42 +01:00
57112fd90a added a timeout to the login method
module Util::Timeout added, prepends Base
2024-06-28 10:59:34 +01:00
aaee848962 md change 2024-01-03 09:35:50 +00:00
4e5aab867b upd documentation/header file links 2024-01-03 09:34:57 +00:00
2156cebeea fixes config files desc in readme 2023-09-20 13:50:02 +01:00
7825b58bb1 add BusDevice to Bus class.
CHANGELOG updated.
2023-09-14 18:22:13 +01:00
68f96b64db typo 2023-09-01 11:36:59 +01:00
6 changed files with 47 additions and 14 deletions

View File

@@ -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
### 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
- 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.
- 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.
- example user profile configs included with repo.

View File

@@ -10,9 +10,9 @@ For an outline of past/future changes refer to: [CHANGELOG](CHANGELOG.md)
## Tested against
- Basic 1.0.8.8
- Banana 2.0.6.8
- Potato 3.0.2.8
- Basic 1.1.1.1
- Banana 2.1.1.1
- Potato 3.1.1.1
## Requirements
@@ -630,7 +630,7 @@ vm.vban.outstream[0].apply(on: true, name: "streamname", bit: 24)
`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
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) }
```
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
@@ -750,7 +750,7 @@ vm.set("Strip[0].Gain", -3.6)
- The following attributes are available:
- `fn_name`: name of the C-API function that failed.
- `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
@@ -772,9 +772,9 @@ Bundle exec rake
### 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
[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
[gem version]: https://badge.fury.io/rb/voicemeeter.svg

View File

@@ -4,18 +4,21 @@ module Voicemeeter
include Logging
include Worker
include Events::Director
prepend Util::Timeout
prepend Util::Cache
attr_reader :kind, :midi, :event, :delay, :cache
RATELIMIT = 0.033
DELAY = 0.001
LOGIN_TIMEOUT = 2
def initialize(kind, **kwargs)
@kind = kind
@sync = kwargs[:sync] || false
@ratelimit = kwargs[:ratelimit] || RATELIMIT
@delay = kwargs[:delay] || DELAY
@login_timeout = kwargs[:login_timeout] || LOGIN_TIMEOUT
@event =
Events::Tracker.new(
**(kwargs.select { |k, _| %i[pdirty mdirty ldirty midi].include? k })
@@ -30,8 +33,6 @@ module Voicemeeter
def login
CBindings.call(:bind_login, ok: [0, 1]) == 1 and run_voicemeeter(kind.name)
clear_dirty
logger.info "Successfully logged into #{self} version #{version}"
end
def logout
@@ -72,7 +73,6 @@ module Voicemeeter
logger.debug "Voicemeeter engine running but the GUI appears to be down... launching."
end
CBindings.call(:bind_run_voicemeeter, kinds[kind_id])
sleep(1)
end
def type

View File

@@ -7,7 +7,7 @@ module Voicemeeter
include Mixins::Return
extend MetaFunctions
attr_reader :eq, :mode, :levels
attr_reader :eq, :mode, :levels, :device
attr_accessor_bool :mute, :mono, :sel, :monitor
attr_accessor_float :gain
attr_accessor_string :label
@@ -21,6 +21,7 @@ module Voicemeeter
@eq = BusEq.new(remote, i)
@mode = BusModes.new(remote, i)
@levels = BusLevels.new(remote, i)
@device = BusDevice.new(remote, i)
end
def identifier

View File

@@ -18,6 +18,26 @@ module Voicemeeter
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
def get(name, is_string = false)
return cache.delete(name) if cache.key? name

View File

@@ -7,7 +7,7 @@ module Voicemeeter
end
def minor
0
1
end
def patch