mirror of
https://github.com/onyx-and-iris/voicemeeter-rb.git
synced 2026-04-19 17:33:32 +00:00
Compare commits
9 Commits
aaee848962
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
| 3ca29ccb5f | |||
| 6e3cbd5fa1 | |||
| 9709c30d31 | |||
| decb8f198c | |||
| 8469351dde | |||
| 77adc6a71b | |||
| a886e2ab2e | |||
| 3f8673ea17 | |||
| 57112fd90a |
17
CHANGELOG.md
17
CHANGELOG.md
@@ -11,6 +11,23 @@ Before any major/minor/patch is released all unit tests will be run to verify th
|
||||
|
||||
- [ ]
|
||||
|
||||
## [1.1.2] - 2024-06-29
|
||||
|
||||
### Added
|
||||
|
||||
- kwarg `bits` for overriding the type of GUI that is launched on startup.
|
||||
- Defaults to 64, set it to either 32 or 64
|
||||
|
||||
### Fixed
|
||||
|
||||
- {Remote}.run_voicemeeter now launches x64 bit GUI's for all kinds if Ruby detects a 64 bit system.
|
||||
|
||||
## [1.1.0] - 2023-06-28
|
||||
|
||||
### Added
|
||||
|
||||
- Configurable kwarg `login_timeout`, defaults to 2s.
|
||||
|
||||
## [1.0.1] - 2023-09-14
|
||||
|
||||
### Added
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -723,6 +723,7 @@ You may pass the following optional keyword arguments:
|
||||
- `mdirty`: boolean=true, macrobutton updates
|
||||
- `midi`: boolean=true, midi updates
|
||||
- `ldirty`: boolean=false, level updates
|
||||
- `bits`: int=64, (may be one of 32 or 64), overrides the type of Voicemeeter GUI {Remote}.run_voicemeeter will launch.
|
||||
|
||||
Access to lower level Getters and Setters are provided with these functions:
|
||||
|
||||
|
||||
@@ -4,18 +4,26 @@ 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
|
||||
@bits = kwargs[:bits] || 64
|
||||
unless [32, 64].include? @bits
|
||||
logger.warn "kwarg bits got #{@bits}, expected either 32 or 64, defaulting to 64"
|
||||
@bits = 64
|
||||
end
|
||||
@event =
|
||||
Events::Tracker.new(
|
||||
**(kwargs.select { |k, _| %i[pdirty mdirty ldirty midi].include? k })
|
||||
@@ -30,8 +38,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
|
||||
@@ -64,15 +70,17 @@ module Voicemeeter
|
||||
|
||||
def run_voicemeeter(kind_id)
|
||||
kinds = {
|
||||
basic: Kinds::KindEnum::BASIC,
|
||||
banana: Kinds::KindEnum::BANANA,
|
||||
potato: (Install::OS_BITS == 64) ? Kinds::KindEnum::POTATOX64 : Kinds::KindEnum::POTATO
|
||||
basic: ([Install::OS_BITS, @bits].all? { |v| v == 64 }) ?
|
||||
Kinds::KindEnum::BASICX64 : Kinds::KindEnum::BASIC,
|
||||
banana: ([Install::OS_BITS, @bits].all? { |v| v == 64 }) ?
|
||||
Kinds::KindEnum::BANANAX64 : Kinds::KindEnum::BANANA,
|
||||
potato: ([Install::OS_BITS, @bits].all? { |v| v == 64 }) ?
|
||||
Kinds::KindEnum::POTATOX64 : Kinds::KindEnum::POTATO
|
||||
}
|
||||
if caller(1..1).first[/`(.*)'/, 1] == "login"
|
||||
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
|
||||
|
||||
@@ -6,6 +6,8 @@ module Voicemeeter
|
||||
BASIC = 1
|
||||
BANANA = 2
|
||||
POTATO = 3
|
||||
BASICX64 = 4
|
||||
BANANAX64 = 5
|
||||
POTATOX64 = 6
|
||||
end
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -7,11 +7,11 @@ module Voicemeeter
|
||||
end
|
||||
|
||||
def minor
|
||||
0
|
||||
1
|
||||
end
|
||||
|
||||
def patch
|
||||
1
|
||||
2
|
||||
end
|
||||
|
||||
def to_a
|
||||
|
||||
Reference in New Issue
Block a user