From 23b86fecb95e25021ef4e355f80e567f75cc762b Mon Sep 17 00:00:00 2001 From: pblivingston <71585805+pblivingston@users.noreply.github.com> Date: Mon, 8 Dec 2025 21:15:45 -0500 Subject: [PATCH 1/5] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10a0784..3a8e2c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,7 +67,6 @@ Strip Gainlayers are now FloatArrayMember objects, see README for details - name - ip - cast vban getters to types for consistency -- Bus.Mono -> [int] for stereo reverse - Bus.Levels.Convert return type [float] -> [single] for naming consistency, no functional change - Meta: AddBoolMembers, AddIntMembers $arg types for consistency - Device: explicit $arg types for consistency @@ -88,6 +87,7 @@ Strip Gainlayers are now FloatArrayMember objects, see README for details - vban.stream.port: [string]$arg -> [int]$arg - vban route range (API documentation is incorrect) - vban.stream.sr: $this._port -> $this._sr +- Bus.Mono -> [int] for stereo reverse - Recorder.channel values: 1..8 -> (2, 4, 6, 8) - Strip.Limit type [int] -> [float] - Missing closing parenthesis in AppMute value string From 1cdbf9e272905b5cae1768041beff6bd2cdd7c65 Mon Sep 17 00:00:00 2001 From: pblivingston <71585805+pblivingston@users.noreply.github.com> Date: Mon, 8 Dec 2025 23:20:35 -0500 Subject: [PATCH 2/5] Update README.md - more consistent style, organization, terminology - 'level' -> 'levels' - examples - macrobutton index range --- README.md | 227 +++++++++++++++++++++++++++++------------------------- 1 file changed, 122 insertions(+), 105 deletions(-) diff --git a/README.md b/README.md index 47b3956..111db9d 100644 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ $vmr.Logout() ### Strip -The following strip commands are available: +The following Strip properties are available: - mute: bool - mono: bool @@ -154,13 +154,26 @@ $vmr.strip[7].pan_y = -0.38 $vmr.strip[5].treble = -2.43 ``` -A,B commands depend on Voicemeeter type. +The following Strip methods are available: +- AppGain($appname or $appindex, $gain) : string or int, float, from 0.00 to 1.00 +- AppMute($appname or $appindex, $mutestate) : string or int, bool + +for example: + +```powershell +$vmr.strip[5].AppGain("Spotify", 0.5) +$vmr.strip[5].AppMute("Spotify", $true) +$vmr.strip[7].AppGain(0, 0.28) +$vmr.strip[6].AppMute(2, $false) +``` + +A,B properties depend on Voicemeeter type. mc, k for virtual strips only. #### comp -The following strip.comp commands are available: +The following Strip.comp properties are available: - knob: float, from 0.00 to 10.00 - gainin: float, from -24.00 to 24.00 @@ -180,7 +193,7 @@ $vmr.strip[3].comp.attack = 8.5 #### gate -The following strip.gate commands are available: +The following Strip.gate properties are available: - knob: float, from 0.00 to 10.00 - threshold: float, from -60.00 to -10.00 @@ -198,7 +211,7 @@ $vmr.strip[3].gate.threshold = -40.5 #### denoiser -The following strip.denoiser commands are available: +The following Strip.denoiser properties are available: - knob: float, from 0.00 to 10.00 - threshold: float, from 0.00 to 10.00 @@ -211,7 +224,7 @@ $vmr.strip[3].denoiser.knob = 5 #### pitch -The following strip.pitch commands are available: +The following Strip.pitch properties are available: - on: bool - drywet: float, from -100.00 to 100.00 @@ -220,7 +233,7 @@ The following strip.pitch commands are available: - medformant: float, from -12.00 to 12.00 - hiformant: float, from -12.00 to 12.00 -The following strip.pitch methods are available: +The following Strip.pitch methods are available: - RecallPreset($presetIndex) : int, from 0 to 7 @@ -234,7 +247,7 @@ $vmr.strip[1].pitch.medformant = 2.1 #### audibility -The following strip.audibility commands are available: +The following Strip.audibility properties are available: - knob: float, from 0.00 to 10.00 @@ -244,9 +257,9 @@ for example: $vmr.strip[1].audibility.knob = 2.66 ``` -#### Gainlayer[i] +#### gainlayer[i] -The following strip.gainlayer[i] methods are available: +The following Strip.gainlayer[i] methods are available: - Set($val) : float, from -60.00 to 12.00 - Get() @@ -257,23 +270,9 @@ for example: $vmr.strip[4].gainlayer[7].set(-26.81) ``` -#### AppGain | AppMute - -- AppGain($appname or $appindex, $gain) : string or int, float, from 0.00 to 1.00 -- AppMute($appname or $appindex, $mutestate) : string or int, bool - -for example: - -```powershell -$vmr.strip[5].AppGain("Spotify", 0.5) -$vmr.strip[5].AppMute("Spotify", $true) -$vmr.strip[7].AppGain(0, 0.28) -$vmr.strip[6].AppMute(2, $false) -``` - #### levels -The following strip.level commands are available: +The following Strip.levels methods are available: - PreFader() - PostFader() @@ -287,7 +286,7 @@ $vmr.strip[2].levels.PreFader() -Join ', ' | Write-Host ### Bus -The following bus commands are available: +The following Bus properties are available: - mute: bool - sel: bool @@ -309,7 +308,7 @@ $vmr.bus[3].returnreverb = 5.7 #### modes -The following bus.mode members are available: +The following Bus.mode members are available: - normal: bool - amix: bool @@ -324,22 +323,21 @@ The following bus.mode members are available: - lfeonly: bool - rearonly: bool -The following bus.mode commands are available: +The following Bus.mode methods are available: -- Set($mode): string, sets the current bus mode -- Get(): returns the current bus mode. +- Set($mode) : string, sets the current bus mode +- Get() : returns the current bus mode for example: ```powershell $vmr.bus[0].mode.centeronly = $true - -$vmr.bus[0].mode.Get() +$vmr.bus[0].mode.Set('tvmix') ``` #### levels -The following strip.level commands are available: +The following Bus.levels methods are available: - All() @@ -351,9 +349,23 @@ $vmr.bus[2].levels.All() -Join ', ' | Write-Host ### Strip|Bus +The following Strip | Bus methods are available: + +- FadeTo(amount, time) : float, int +- FadeBy(amount, time) : float, int + +Modify gain to or by the selected amount in db over a time interval in ms. + +for example: + +```powershell +$vmr.strip[3].FadeTo(-18.75, 1000) +$vmr.bus[0].FadeBy(-10, 500) +``` + #### device -The following strip.device | bus.device commands are available: +The following Strip.device | Bus.device properties are available: - name: string - sr: int @@ -366,7 +378,7 @@ for example: ```powershell $vmr.strip[0].device.wdm = "Mic|Line|Instrument 1 (Audient EVO4)" -$vmr.bus[0].device.name +$vmr.bus[0].device.name | Write-Host ``` name, sr are defined as read only. @@ -375,12 +387,12 @@ asio only defined for Bus[0].Device #### eq -The following strip.eq | bus.eq commands are available: +The following Strip.eq | Bus.eq properties are available: - on: bool - ab: bool -The following strip.eq | bus.eq methods are available: +The following Strip.eq | Bus.eq methods are available: - Load($filepath) : string - Save($filepath) : string @@ -394,7 +406,7 @@ $vmr.bus[0].eq.ab = $false ##### channel.cell -The following eq.channel.cell commands are available: +The following eq.channel.cell properties are available: - on: bool - type: int, from 0 to 6 @@ -409,44 +421,39 @@ $vmr.strip[2].eq.channel[1].cell[4].type = 1 $vmr.bus[5].eq.channel[6].cell[3].on = $false ``` -#### FadeTo | FadeBy - -- `FadeTo(amount, time)` : float, int -- `FadeBy(amount, time)` : float, int - -Modify gain to or by the selected amount in db over a time interval in ms. - -for example: - -```powershell -$vmr.strip[3].FadeTo(-18.7, 1000) -$vmr.bus[0].FadeBy(-10, 500) -``` - ### Macrobuttons -Three modes defined: state, stateonly and trigger. +The following Button properties are available: -- State runs associated scripts -- Stateonly does not run associated scripts -- Index range (0, 69) +- state: bool, runs associated scripts +- stateonly: bool, does not run associated scripts +- trigger: bool ```powershell $vmr.button[3].state = $true - $vmr.button[4].stateonly = $false - $vmr.button[5].trigger = $true ``` +Index range (0, 79) + ### VBAN -The following vban commands are available: +The following Vban properties are available: - enable: bool - port: int, from 1024 - 65535 -For each vban in/out stream the following parameters are defined: +for example: + +```powershell +$vmr.vban.enable = $true +$vmr.vban.port = 6990 +``` + +#### instream[i]|outstream[i] + +The following Vban.instream | Vban.outstream properties are available: - on: bool - name: string @@ -457,24 +464,21 @@ For each vban in/out stream the following parameters are defined: - quality: int, from 0 to 4 - route: int, from 0 to 8 -SR, channel and bit are defined as readonly for instreams. Attempting to write -to those parameters will throw an error. They are read and write for outstreams. - -example: +for example: ```powershell -$vmr.vban.enable = $true -$vmr.vban.port = 6990 - $vmr.vban.instream[0].on = $true $vmr.vban.outstream[3].bit = 16 ``` +SR, channel and bit are defined as readonly for instreams. Attempting to write +to those parameters will throw an error. They are read and write for outstreams. + ### Command Certain 'special' commands are defined by the API as performing actions rather than setting values. -The following methods are available: +The following Command methods are available: - Show() - Hide() @@ -484,15 +488,15 @@ The following methods are available: - HideVBANChat() - Restart() - Shutdown() -- Reset(): Reset all config -- Save($filepath): string -- Load($filepath): string -- StorePreset($index, $name): (int, string) -- RecallPreset($index or $name): (int or string) -- RunMacrobuttons(): Launches the macrobuttons app -- CloseMacrobuttons(): Closes the macrobuttons app +- Reset() : Reset all config +- Save($filepath) : string +- Load($filepath) : string +- StorePreset($index, $name) : (int, string) +- RecallPreset($index or $name) : (int or string) +- RunMacrobuttons() : Launches the macrobuttons app +- CloseMacrobuttons() : Closes the macrobuttons app -example: +for example: ```powershell $vmr.command.Show() @@ -514,7 +518,7 @@ StorePreset('') and RecallPreset('') interact with the 'selected' preset. This i ### Fx -The following Fx commands are available: +The following Fx properties are available: - Reverb.on: bool - Reverb.ab: bool @@ -529,12 +533,12 @@ $vmr.fx.reverb.ab = $false ### Patch -The following Patch commands are available: +The following Patch properties are available: - postFaderComposite: bool - postFxInsert: bool -The following Patch members have .Set($val) and .Get() available: +The following Patch members have methods Set($val) | Get() available: - asio[i]: int, from 0 to ASIO input channels - OutA2[i]-OutA5[i]: int, from 0 to ASIO output channels @@ -552,7 +556,7 @@ $vmr.patch.insert[4].get() ### Option -The following Option commands are available: +The following Option properties are available: - sr: int, (32000, 44100, 48000, 88200, 96000, 176400, 192000) - asiosr: bool @@ -560,21 +564,15 @@ The following Option commands are available: - sliderMode: bool - monitoringBus: int, from 0 to bus index -The following Option.delay[i] methods are available: - -- Set($val): float, from 0.00 to 500.00 -- Get() - for example: ```powershell -$vmr.Option.delay[2].set(30.26) # sets the delay for the third (2) bus $vmr.Option.sliderMode = $false # sets slider mode to absolute ``` #### buffers -The following Option.buffer commands are available: +The following Option.buffer properties are available: - mme: int, (441, 480, 512, 576, 640, 704, 768, 896, 1024, 1536, 2048) - wdm: int, (128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 441, 448, 480, 512, 576, 640, 704, 768, 1024, 1536, 2048) @@ -588,9 +586,22 @@ $vmr.Option.buffer.wdm = 512 $vmr.Option.buffer.asio = 0 # to use default buffer size ``` +#### delay[i] + +The following Option.delay[i] methods are available: + +- Set($val) : float, from 0.00 to 500.00 +- Get() + +for example: + +```powershell +$vmr.Option.delay[2].set(30.26) # sets the delay for the third (2) bus +``` + ### Recorder -The following commands are available: +The following Recorder properties are available: - A1 - A5: bool - B1 - B3: bool @@ -605,7 +616,15 @@ The following commands are available: - channel: int, (2, 4, 6, 8) - kbps: int, (32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320) -The following methods are available: +for example: + +```powershell +$vmr.recorder.A1 = $true +$vmr.recorder.filetype = 'mp3' +$vmr.recorder.kbps = 256 +``` + +The following Recorder methods are available: - Play() - Stop() @@ -615,41 +634,39 @@ The following methods are available: - Record() - Pause() - Eject() -- Load($filepath): string -- GoTo($timestring): string, must match the format 'hh:mm:ss' +- Load($filepath) : string +- GoTo($timestring) : string, must match the format 'hh:mm:ss' -example: +for example: ```powershell $vmr.recorder.play() -$vmr.recorder.A1 = $true - $vmr.recorder.GoTo("00:01:15") # go to 1min 15sec into track ``` -#### Mode +#### mode -The following commands are available: +The following Recorder.mode properties are available: -- recbus -- playonload -- loop -- multitrack +- recbus: bool +- playonload: bool +- loop: bool +- multitrack: bool -example: +for example: ```powershell $vmr.recorder.mode.loop = $true ``` -#### ArmStrip[i]|ArmBus[i] +#### armstrip[i]|armbus[i] -The following methods are available: +The following Recorder.armstrip | Recorder.armbus methods are available: -- Set($val): bool +- Set($val) : bool - Get() -example: +for example: ```powershell $vmr.recorder.armstrip[0].Set($true) From 865d0944503575787c8c3bae0b6cdc2fd1c9fdb8 Mon Sep 17 00:00:00 2001 From: pblivingston <71585805+pblivingston@users.noreply.github.com> Date: Tue, 9 Dec 2025 05:53:47 -0500 Subject: [PATCH 3/5] update bus.levels.convert in CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a8e2c6..a75b24b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,7 +67,7 @@ Strip Gainlayers are now FloatArrayMember objects, see README for details - name - ip - cast vban getters to types for consistency -- Bus.Levels.Convert return type [float] -> [single] for naming consistency, no functional change +- Bus.Levels.Convert hidden and return type [float] -> [single] for naming consistency - Meta: AddBoolMembers, AddIntMembers $arg types for consistency - Device: explicit $arg types for consistency - Recorder.Armstrip|Armbus -> BoolArrayMember: now have .Get() From 8855092438b73eb8d6e2b852306283b0d57d31f4 Mon Sep 17 00:00:00 2001 From: pblivingston <71585805+pblivingston@users.noreply.github.com> Date: Tue, 9 Dec 2025 13:20:09 -0500 Subject: [PATCH 4/5] organize unreleased organize unreleased changes for readability --- CHANGELOG.md | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a75b24b..e160e56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,26 +26,32 @@ Strip Gainlayers are now FloatArrayMember objects, see README for details - ArrayMember classes for array-like properties - Patch class - Option class -- Device classes +- Device class - EQ class - FX class + +- AddAliasMembers meta function takes a hashtable `-MAP` of `alias = property` + - Vban.port sets Vban.Instream[0].port - Vban Midi and Command streams - on, write-only - name, write-only - ip, write-only -- Bus.Sel, Bus.Monitor, Bus.Vaio -- Bus.Mode.Set($mode) + - Recorder.Armedbus - Recorder.PreRecTime - Recorder.Prefix - Recorder.Eject() references 'Command.Eject' - Recorder.State + - Command.Reset() - Command.Save($filepath) - Command.StorePreset() - Command.RecallPreset() -- AddAliasMembers meta function takes a hashtable `-MAP` of `alias = property` + +- Bus.Sel, Bus.Monitor, Bus.Vaio +- Bus.Mode.Set($mode) + - Strip.Karaoke alias for Strip.K - Strip.EQGain1|EQGain2|EQGain3 with bass/low, mid/med, treble/high aliases, respectively - StripAudibility class with Strip.Audibility.Knob @@ -62,17 +68,21 @@ Strip Gainlayers are now FloatArrayMember objects, see README for details ### Changed +- Device: explicit $arg types for consistency +- Meta: AddBoolMembers, AddIntMembers $arg types for consistency +- Float getters/setters now default to two decimal places. + - some vban.instream | vban.outstream commands now added with meta functions - on - name - ip - cast vban getters to types for consistency -- Bus.Levels.Convert hidden and return type [float] -> [single] for naming consistency -- Meta: AddBoolMembers, AddIntMembers $arg types for consistency -- Device: explicit $arg types for consistency + - Recorder.Armstrip|Armbus -> BoolArrayMember: now have .Get() - Cast Recorder getters to types for consistency -- Floats getters/setters now default to two decimal places. + +- Bus.Levels.Convert hidden and return type [float] -> [single] for naming consistency + - Strip.Mono is now an alias for Strip.MC on virtual strips - Strip.AppMute|AppGain can now take an app index; see README for details - Strip Knob setters: explicit $arg types for consistency @@ -87,8 +97,11 @@ Strip Gainlayers are now FloatArrayMember objects, see README for details - vban.stream.port: [string]$arg -> [int]$arg - vban route range (API documentation is incorrect) - vban.stream.sr: $this._port -> $this._sr -- Bus.Mono -> [int] for stereo reverse + - Recorder.channel values: 1..8 -> (2, 4, 6, 8) + +- Bus.Mono -> [int] for stereo reverse + - Strip.Limit type [int] -> [float] - Missing closing parenthesis in AppMute value string - Strip Knob getters: `this.Getter_String('') -> [math]::Round($this.Getter(''), 2)` From 64ebc86f2138edaa503d0ad9b981d98422aadc23 Mon Sep 17 00:00:00 2001 From: pblivingston <71585805+pblivingston@users.noreply.github.com> Date: Wed, 10 Dec 2025 19:54:39 -0500 Subject: [PATCH 5/5] bpsidechain README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 111db9d..09de82d 100644 --- a/README.md +++ b/README.md @@ -198,7 +198,7 @@ The following Strip.gate properties are available: - knob: float, from 0.00 to 10.00 - threshold: float, from -60.00 to -10.00 - damping: float, from -60.00 to -10.00 -- bpsidechain: int, from 100 to 4000 +- bpsidechain: float, from 100.00 to 4000.00 - attack: float, from 0.00 to 1000.00 - hold: float, from 0.00 to 5000.00 - release: float, from 0.00 to 5000.00