From 9714b7cc7de5d5878b3259751e8426d7301f776e Mon Sep 17 00:00:00 2001 From: onyx-and-iris <75868496+onyx-and-iris@users.noreply.github.com> Date: Wed, 19 Jan 2022 21:53:49 +0000 Subject: [PATCH] Update base.ps1 param_set and param_set_string merged. --- lib/base.ps1 | 148 +++++++++++++++++++++------------------------------ 1 file changed, 61 insertions(+), 87 deletions(-) diff --git a/lib/base.ps1 b/lib/base.ps1 index 03f5e10..a3b32e0 100644 --- a/lib/base.ps1 +++ b/lib/base.ps1 @@ -4,7 +4,7 @@ . $PSScriptRoot\bus.ps1 . $PSScriptRoot\macrobuttons.ps1 . $PSScriptRoot\vban.ps1 -. $PSScriptRoot\special.ps1 +. $PSScriptRoot\command.ps1 $global:layout = $null @@ -63,72 +63,48 @@ $Signature = @" return $true } -Function Param_Set_Multi { +Function Param_Get { param( - [HashTable]$HASH - ) - Start-Sleep -m 50 - while(M_Dirty) { Start-Sleep -m 1 } - - foreach ($key in $HASH.keys) { - $classobj , $m2, $m3 = $key.Split("_") - if ($m2 -match "^\d+$") {$index = [int]$m2} else {$index = [int]$m3} - - foreach ($h in $HASH[$key].GetEnumerator()) { - $property = $h.Name - $value = $h.Value - if ($value -in ('False', 'True')) { [System.Convert]::ToBoolean($value) } - - Switch($classobj) { - 'strip' { $this.strip[$index].$property = $value } - 'bus' { $this.bus[$index].$property = $value } - {($_ -eq 'button') -or ($_ -eq 'mb')} { $this.button[$index].$property = $value } - 'vban' { $this.vban.$m2[$index].$property = $value } - } - } - } -} - -Function Param_Set_String { - param( - [String]$PARAM, [String]$VALUE - ) - try { - $retval = [Int][Voicemeeter.Remote]::VBVMR_SetParameterStringA($PARAM, $VALUE) - if($retval) { Throw [CAPIError]::new($retval, $MyInvocation.MyCommand) } - } - catch [CAPIError] { - Write-Warning $_.Exception.ErrorMessage() - } -} - - -Function Param_Get_String { - param( - [String]$PARAM + [String]$PARAM, [bool]$IS_STRING=$false ) Start-Sleep -m 50 while(P_Dirty) { Start-Sleep -m 1 } - $BYTES = [System.Byte[]]::new(512) - try { - $retval = [Int][Voicemeeter.Remote]::VBVMR_GetParameterStringA($PARAM, $BYTES) - if($retval) { Throw [CAPIError]::new($retval, $MyInvocation.MyCommand) } + if($IS_STRING) { + $BYTES = [System.Byte[]]::new(512) + try { + $retval = [Int][Voicemeeter.Remote]::VBVMR_GetParameterStringA($PARAM, $BYTES) + if($retval) { Throw [CAPIError]::new($retval, $MyInvocation.MyCommand) } + } + catch [CAPIError] { + Write-Warning $_.Exception.ErrorMessage() + } + [System.Text.Encoding]::ASCII.GetString($BYTES).Trim([char]0) } - catch [CAPIError] { - Write-Warning $_.Exception.ErrorMessage() + else { + New-Variable -Name ptr -Value 0.0 + try { + $retval = [Int][Voicemeeter.Remote]::VBVMR_GetParameterFloat($PARAM, [ref]$ptr) + if($retval) { Throw [CAPIError]::new($retval, $MyInvocation.MyCommand) } + } + catch [CAPIError] { + Write-Warning $_.Exception.ErrorMessage() + } + [Single]$ptr } - - [System.Text.Encoding]::ASCII.GetString($BYTES).Trim([char]0) } - Function Param_Set { param( - [String]$PARAM, [Single]$VALUE + [String]$PARAM, [Object]$VALUE ) try { - $retval = [Int][Voicemeeter.Remote]::VBVMR_SetParameterFloat($PARAM, $VALUE) + if($VALUE -is [String]) { + $retval = [Int][Voicemeeter.Remote]::VBVMR_SetParameterStringA($PARAM, $VALUE) + } + else { + $retval = [Int][Voicemeeter.Remote]::VBVMR_SetParameterFloat($PARAM, $VALUE) + } if($retval) { Throw [CAPIError]::new($retval, $MyInvocation.MyCommand) } } catch [CAPIError] { @@ -136,26 +112,6 @@ Function Param_Set { } } - -Function Param_Get { - param( - [String]$PARAM - ) - Start-Sleep -m 50 - while(P_Dirty) { Start-Sleep -m 1 } - - New-Variable -Name ptr -Value 0.0 - try { - $retval = [Int][Voicemeeter.Remote]::VBVMR_GetParameterFloat($PARAM, [ref]$ptr) - if($retval) { Throw [CAPIError]::new($retval, $MyInvocation.MyCommand) } - } - catch [CAPIError] { - Write-Warning $_.Exception.ErrorMessage() - } - [Single]$ptr -} - - Function MB_Set { param( [Int64]$ID, [Single]$SET, [Int64]$MODE @@ -169,7 +125,6 @@ Function MB_Set { } } - Function MB_Get { param( [Int64]$ID, [Int64]$MODE @@ -188,6 +143,29 @@ Function MB_Get { [Int]$ptr } +Function Param_Set_Multi { + param( + [HashTable]$HASH + ) + ForEach ($key in $HASH.keys) { + $classobj , $m2, $m3 = $key.Split("_") + if ($m2 -match "^\d+$") {$index = [int]$m2} else {$index = [int]$m3} + + ForEach ($h in $HASH[$key].GetEnumerator()) { + $property = $h.Name + $value = $h.Value + if ($value -in ('False', 'True')) { [System.Convert]::ToBoolean($value) } + + Switch($classobj) { + 'strip' { $this.strip[$index].$property = $value } + 'bus' { $this.bus[$index].$property = $value } + {($_ -eq 'button') -or ($_ -eq 'mb')} { $this.button[$index].$property = $value } + 'vban' { $this.vban.$m2[$index].$property = $value } + } + } + } +} + Function DefineVersion { param( [Int]$TYPE @@ -230,31 +208,30 @@ Function DefineVersion { $global:layout = $layout } - Function Login { param( - [String]$TYPE=$null + [String]$KIND=$null ) try { $retval = [Int][Voicemeeter.Remote]::VBVMR_Login() if(-not $retval) { Write-Host("LOGGED IN") } elseif($retval -eq 1) { Write-Host("VM NOT RUNNING") - New-Variable -Name kind -Value 0 + New-Variable -Name vm_exe -Value 0 - Switch($TYPE) { - 'basic' { $kind = 1; Break} - 'banana' { $kind = 2; Break} + Switch($KIND) { + 'basic' { $vm_exe = 1; Break} + 'banana' { $vm_exe = 2; Break} 'potato' { if ([Environment]::Is64BitOperatingSystem) { - $kind = 6 - } else { $kind = 3 } + $vm_exe = 6 + } else { $vm_exe = 3 } Break } Default { throw [LoginError]::new('Unknown Voicemeeter type') } } - $retval = [Int][Voicemeeter.Remote]::VBVMR_RunVoicemeeter([Int64]$kind) + $retval = [Int][Voicemeeter.Remote]::VBVMR_RunVoicemeeter([Int64]$vm_exe) if(-not $retval) { Write-Host("STARTING VOICEMEETER") } else { Throw [CAPIError]::new($retval, $MyInvocation.MyCommand) } Start-Sleep -s 1 @@ -279,19 +256,16 @@ Function Login { DefineVersion -TYPE $ptr } - Function Logout { Start-Sleep -m 20 $retval = [Int][Voicemeeter.Remote]::VBVMR_Logout() if(-not $retval) { Write-Host("LOGGED OUT") } } - Function P_Dirty { [Bool][Voicemeeter.Remote]::VBVMR_IsParametersDirty() } - Function M_Dirty { [Bool][Voicemeeter.Remote]::VBVMR_MacroButton_IsDirty() }