Voicemeeter.psm1
. $PSScriptRoot\errors.ps1 . $PSScriptRoot\meta.ps1 . $PSScriptRoot\base.ps1 . $PSScriptRoot\kinds.ps1 . $PSScriptRoot\strip.ps1 . $PSScriptRoot\bus.ps1 . $PSScriptRoot\macrobuttons.ps1 . $PSScriptRoot\vban.ps1 . $PSScriptRoot\command.ps1 . $PSScriptRoot\recorder.ps1 . $PSScriptRoot\profiles.ps1 class Remote { [String]$vmpath [Hashtable]$kind [Object]$profiles Remote ([String]$kindId) { $this.vmpath = Setup_DLL $this.kind = GetKind($kindId) $this.profiles = Get_Profiles($this.kind.name) } [string] ToString() { return "Voicemeeter " + $this.kind.name.substring(0, 1).toupper() + $this.kind.name.substring(1) } [Remote] Login() { Login -kindId $this.kind.name return $this } [void] Logout() { Logout } [string] GetType() { return VmType } [String] GetVersion() { return VmVersion } [void] Set_Profile([String]$config) { Set_Profile -DATA $this.profiles -CONF $config } [Single] Getter([String]$param) { return Param_Get -PARAM $param } [String] Getter_String([String]$param) { return Param_Get -PARAM $param -IS_STRING $true } [void] Setter([String]$param, [Object]$value) { Param_Set -PARAM $param -VALUE $value } [void] Set_Multi([HashTable]$hash) { Param_Set_Multi -HASH $hash } [void] SendText([String]$script) { Set_By_Script -SCRIPT $script } [void] PDirty() { P_Dirty } [void] MDirty() { M_Dirty } } class RemoteBasic : Remote { [System.Collections.ArrayList]$strip [System.Collections.ArrayList]$bus [System.Collections.ArrayList]$button [PSCustomObject]$vban [Object]$command RemoteBasic () : base ('basic') { $this.strip = Make_Strips($this) $this.bus = Make_Buses($this) $this.button = Make_Buttons $this.vban = Make_Vban($this) $this.command = Make_Command($this) } } class RemoteBanana : Remote { [System.Collections.ArrayList]$strip [System.Collections.ArrayList]$bus [System.Collections.ArrayList]$button [PSCustomObject]$vban [Object]$command [Object]$recorder RemoteBanana () : base ('banana') { $this.strip = Make_Strips($this) $this.bus = Make_Buses($this) $this.button = Make_Buttons $this.vban = Make_Vban($this) $this.command = Make_Command($this) $this.recorder = Make_Recorder($this) } } class RemotePotato : Remote { [System.Collections.ArrayList]$strip [System.Collections.ArrayList]$bus [System.Collections.ArrayList]$button [PSCustomObject]$vban [Object]$command [Object]$recorder RemotePotato () : base ('potato') { $this.strip = Make_Strips($this) $this.bus = Make_Buses($this) $this.button = Make_Buttons $this.vban = Make_Vban($this) $this.command = Make_Command($this) $this.recorder = Make_Recorder($this) } } Function Get-RemoteBasic { [RemoteBasic]::new().Login() } Function Get-RemoteBanana { [RemoteBanana]::new().Login() } Function Get-RemotePotato { [RemotePotato]::new().Login() } Function Connect-Voicemeeter { param([String]$Kind) switch ($Kind) { "basic" { return Get-RemoteBasic } "banana" { return Get-RemoteBanana } "potato" { return Get-RemotePotato } default { throw [LoginError]::new("Unknown Voicemeeter kind `"$Kind`"") } } } Function Disconnect-Voicemeeter { Logout } Export-ModuleMember -Function Get-RemoteBasic, Get-RemoteBanana, Get-RemotePotato, Connect-Voicemeeter, Disconnect-Voicemeeter |