mirror of
https://github.com/onyx-and-iris/voicemeeter-api-powershell.git
synced 2025-01-18 05:10:48 +00:00
IVban class added
getters/setters moved into IVban refactored to use identifier()
This commit is contained in:
parent
14c8a54f01
commit
c37b4e0b1b
74
lib/vban.ps1
74
lib/vban.ps1
@ -1,70 +1,76 @@
|
||||
class Vban {
|
||||
class IVban {
|
||||
[int32]$index
|
||||
[string]$direction
|
||||
|
||||
# Constructor
|
||||
Vban ([int]$index) {
|
||||
IVban ([int]$index, [string]$direction) {
|
||||
$this.index = $index
|
||||
$this.direction = $direction
|
||||
}
|
||||
|
||||
[string] identifier () {
|
||||
return "vban." + $this.direction + "stream[" + $this.index + "]"
|
||||
}
|
||||
|
||||
[string] ToString() {
|
||||
return $this.GetType().Name + $this.index
|
||||
}
|
||||
|
||||
[single] Getter ($cmd) {
|
||||
return Param_Get -PARAM $cmd -IS_STRING $false
|
||||
[single] Getter ($param) {
|
||||
return Param_Get -PARAM "$($this.identifier()).$param" -IS_STRING $false
|
||||
}
|
||||
|
||||
[string] Getter_String ($cmd) {
|
||||
return Param_Get -PARAM $cmd -IS_STRING $true
|
||||
[string] Getter_String ($param) {
|
||||
return Param_Get -PARAM "$($this.identifier()).$param" -IS_STRING $true
|
||||
}
|
||||
|
||||
[void] Setter ($cmd, $set) {
|
||||
Param_Set -PARAM $cmd -Value $set
|
||||
[void] Setter ($param, $val) {
|
||||
Param_Set -PARAM "$($this.identifier()).$param" -Value $val
|
||||
}
|
||||
}
|
||||
|
||||
[string] cmd ($arg) {
|
||||
return "vban." + $this.direction + "stream[" + $this.index + "].$arg"
|
||||
class Vban : IVban {
|
||||
# Constructor
|
||||
Vban ([int]$index, [string]$direction) : base ($index, $direction) {
|
||||
}
|
||||
|
||||
hidden $_on = $($this | Add-Member ScriptProperty 'on' `
|
||||
{
|
||||
$this.Getter($this.cmd('on'))
|
||||
$this.Getter('on')
|
||||
} `
|
||||
{
|
||||
param([bool]$arg)
|
||||
$this._on = $this.Setter($this.cmd('on'), $arg)
|
||||
$this._on = $this.Setter('on', $arg)
|
||||
}
|
||||
)
|
||||
|
||||
hidden $_name = $($this | Add-Member ScriptProperty 'name' `
|
||||
{
|
||||
$this.Getter_String($this.cmd('name'))
|
||||
$this.Getter_String('name')
|
||||
} `
|
||||
{
|
||||
param([string]$arg)
|
||||
$this._name = $this.Setter($this.cmd('name'), $arg)
|
||||
$this._name = $this.Setter('name', $arg)
|
||||
}
|
||||
)
|
||||
|
||||
hidden $_ip = $($this | Add-Member ScriptProperty 'ip' `
|
||||
{
|
||||
$this.Getter_String($this.cmd('ip'))
|
||||
$this.Getter_String('ip')
|
||||
} `
|
||||
{
|
||||
param([string]$arg)
|
||||
$this._ip = $this.Setter($this.cmd('ip'), $arg)
|
||||
$this._ip = $this.Setter('ip', $arg)
|
||||
}
|
||||
)
|
||||
|
||||
hidden $_port = $($this | Add-Member ScriptProperty 'port' `
|
||||
{
|
||||
$this.Getter($this.cmd('port'))
|
||||
$this.Getter('port')
|
||||
} `
|
||||
{
|
||||
param([string]$arg)
|
||||
if ($arg -in 1024..65535) {
|
||||
$this._port = $this.Setter($this.cmd('port'), $arg)
|
||||
$this._port = $this.Setter('port', $arg)
|
||||
}
|
||||
else {
|
||||
Write-Warning ('Expected value from 1024 to 65535')
|
||||
@ -74,7 +80,7 @@ class Vban {
|
||||
|
||||
hidden $_sr = $($this | Add-Member ScriptProperty 'sr' `
|
||||
{
|
||||
$this.Getter($this.cmd('sr'))
|
||||
$this.Getter('sr')
|
||||
} `
|
||||
{
|
||||
param([int]$arg)
|
||||
@ -82,7 +88,7 @@ class Vban {
|
||||
else {
|
||||
$opts = @(11025, 16000, 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000)
|
||||
if ($opts.Contains($arg)) {
|
||||
$this._port = $this.Setter($this.cmd('sr'), $arg)
|
||||
$this._port = $this.Setter('sr', $arg)
|
||||
}
|
||||
else {
|
||||
Write-Warning ('Expected one of', $opts)
|
||||
@ -93,14 +99,14 @@ class Vban {
|
||||
|
||||
hidden $_channel = $($this | Add-Member ScriptProperty 'channel' `
|
||||
{
|
||||
$this.Getter($this.cmd('channel'))
|
||||
$this.Getter('channel')
|
||||
} `
|
||||
{
|
||||
param([int]$arg)
|
||||
if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
|
||||
else {
|
||||
if ($arg -in 1..8) {
|
||||
$this._channel = $this.Setter($this.cmd('channel'), $arg)
|
||||
$this._channel = $this.Setter('channel', $arg)
|
||||
}
|
||||
else {
|
||||
Write-Warning ('Expected value from 1 to 8')
|
||||
@ -111,7 +117,7 @@ class Vban {
|
||||
|
||||
hidden $_bit = $($this | Add-Member ScriptProperty 'bit' `
|
||||
{
|
||||
$val = if ($this.Getter($this.cmd('bit')) -eq 1) { 16 } else { 24 }
|
||||
$val = if ($this.Getter('bit') -eq 1) { 16 } else { 24 }
|
||||
return $val
|
||||
} `
|
||||
{
|
||||
@ -120,7 +126,7 @@ class Vban {
|
||||
else {
|
||||
if (@(16, 24).Contains($arg)) {
|
||||
$val = if ($arg -eq 16) { 1 } else { 2 }
|
||||
$this._bit = $this.Setter($this.cmd('bit'), $val)
|
||||
$this._bit = $this.Setter('bit', $val)
|
||||
}
|
||||
else {
|
||||
Write-Warning ('Expected value 16 or 24')
|
||||
@ -131,14 +137,14 @@ class Vban {
|
||||
|
||||
hidden $_quality = $($this | Add-Member ScriptProperty 'quality' `
|
||||
{
|
||||
$this.Getter($this.cmd('quality'))
|
||||
$this.Getter('quality')
|
||||
} `
|
||||
{
|
||||
param([int]$arg)
|
||||
if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
|
||||
else {
|
||||
if ($arg -in 0..4) {
|
||||
$this._quality = $this.Setter($this.cmd('quality'), $arg)
|
||||
$this._quality = $this.Setter('quality', $arg)
|
||||
}
|
||||
else {
|
||||
Write-Warning ('Expected value from 0 to 4')
|
||||
@ -149,14 +155,14 @@ class Vban {
|
||||
|
||||
hidden $_route = $($this | Add-Member ScriptProperty 'route' `
|
||||
{
|
||||
$this.Getter($this.cmd('route'))
|
||||
$this.Getter('route')
|
||||
} `
|
||||
{
|
||||
param([int]$arg)
|
||||
if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
|
||||
else {
|
||||
if ($arg -in 0..8) {
|
||||
$this._route = $this.Setter($this.cmd('route'), $arg)
|
||||
$this._route = $this.Setter('route', $arg)
|
||||
}
|
||||
else {
|
||||
Write-Warning ('Expected value from 0 to 8')
|
||||
@ -169,16 +175,14 @@ class Vban {
|
||||
|
||||
class VbanInstream : Vban {
|
||||
# Constructor
|
||||
VbanInstream ([int]$index) : base ($index) {
|
||||
$this.direction = "in"
|
||||
VbanInstream ([int]$index, [string]$direction) : base ($index, $direction) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class VbanOutstream : Vban {
|
||||
# Constructor
|
||||
VbanOutstream ([int]$index) : base ($index) {
|
||||
$this.direction = "out"
|
||||
VbanOutstream ([int]$index, [string]$direction) : base ($index, $direction) {
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,10 +192,10 @@ function Make_Vban ([Object]$remote) {
|
||||
[System.Collections.ArrayList]$outstream = @()
|
||||
|
||||
0..$($remote.kind.vban_in - 1) | ForEach-Object {
|
||||
[void]$instream.Add([VbanInstream]::new($_))
|
||||
[void]$instream.Add([VbanInstream]::new($_, "in"))
|
||||
}
|
||||
0..$($remote.kind.vban_out - 1) | ForEach-Object {
|
||||
[void]$outstream.Add([VbanOutstream]::new($_))
|
||||
[void]$outstream.Add([VbanOutstream]::new($_, "out"))
|
||||
}
|
||||
|
||||
$CustomObject = [pscustomobject]@{
|
||||
|
Loading…
Reference in New Issue
Block a user