mirror of
https://github.com/onyx-and-iris/voicemeeter-api-powershell.git
synced 2025-12-21 20:27:47 +00:00
Create io.ps1
- IOControl - IOLevels - IOEq - IODevice
This commit is contained in:
parent
837211424f
commit
0c60c5e6c5
151
lib/io.ps1
Normal file
151
lib/io.ps1
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
class IOControl : IRemote {
|
||||||
|
IOControl ([int]$index, [Object]$remote) : base ($index, $remote) {
|
||||||
|
AddBoolMembers -PARAMS @('mute')
|
||||||
|
AddFloatMembers -PARAMS @('gain')
|
||||||
|
AddStringMembers -PARAMS @('label')
|
||||||
|
}
|
||||||
|
|
||||||
|
[void] FadeTo ([single]$target, [int]$time) {
|
||||||
|
$this.Setter('FadeTo', "($target, $time)")
|
||||||
|
}
|
||||||
|
|
||||||
|
[void] FadeBy ([single]$target, [int]$time) {
|
||||||
|
$this.Setter('FadeBy', "($target, $time)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class IOLevels : IRemote {
|
||||||
|
IOLevels ([int]$index, [Object]$remote) : base ($index, $remote) {
|
||||||
|
}
|
||||||
|
|
||||||
|
hidden [single] Convert([single]$val) {
|
||||||
|
if ($val -gt 0) {
|
||||||
|
return [math]::Round(20 * [math]::Log10($val), 1)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return -200.0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Collections.ArrayList] Getter([int]$mode) {
|
||||||
|
[System.Collections.ArrayList]$vals = @()
|
||||||
|
$this.init..$($this.init + $this.offset - 1) | ForEach-Object {
|
||||||
|
$vals.Add($this.Convert($(Get_Level -MODE $mode -INDEX $_)))
|
||||||
|
}
|
||||||
|
return $vals
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class IOEq : IRemote {
|
||||||
|
[System.Collections.ArrayList]$channel
|
||||||
|
[string]$kindOfEq
|
||||||
|
|
||||||
|
IOEq ([int]$index, [Object]$remote, [string]$kindOfEq) : base ($index, $remote) {
|
||||||
|
$this.kindOfEq = $kindOfEq
|
||||||
|
|
||||||
|
AddBoolMembers -PARAMS @('on', 'ab')
|
||||||
|
|
||||||
|
$this.channel = @()
|
||||||
|
for ($ch = 0; $ch -lt $remote.kind.eq_ch[$this.kindOfEq]; $ch++) {
|
||||||
|
$this.channel.Add([EqChannel]::new($ch, $remote, $this.identifier()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[void] Load ([string]$filename) {
|
||||||
|
$param = 'Command.Load{0}Eq[{1}]' -f $this.kindOfEq, $this.index
|
||||||
|
$this.remote.Setter($param, $filename)
|
||||||
|
}
|
||||||
|
|
||||||
|
[void] Save ([string]$filename) {
|
||||||
|
$param = 'Command.Save{0}Eq[{1}]' -f $this.kindOfEq, $this.index
|
||||||
|
$this.remote.Setter($param, $filename)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class EqChannel : IRemote {
|
||||||
|
[System.Collections.ArrayList]$cell
|
||||||
|
[string]$eqId
|
||||||
|
|
||||||
|
EqChannel ([int]$index, [Object]$remote, [string]$eqId) : base ($index, $remote) {
|
||||||
|
$this.eqId = $eqId
|
||||||
|
|
||||||
|
$this.cell = @()
|
||||||
|
$cellCount = $this.remote.kind.cells
|
||||||
|
for ($c = 0; $c -lt $cellCount; $c++) {
|
||||||
|
$this.cell.Add([EqCell]::new($c, $remote, $this.identifier()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[string] identifier () {
|
||||||
|
return '{0}.Channel[{1}]' -f $this.eqId, $this.index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class EqCell : IRemote {
|
||||||
|
[string]$channelId
|
||||||
|
|
||||||
|
EqCell ([int]$index, [Object]$remote, [string]$channelId) : base ($index, $remote) {
|
||||||
|
$this.channelId = $channelId
|
||||||
|
|
||||||
|
AddBoolMembers -PARAMS @('on')
|
||||||
|
AddIntMembers -PARAMS @('type')
|
||||||
|
AddFloatMembers -PARAMS @('f', 'gain', 'q')
|
||||||
|
}
|
||||||
|
|
||||||
|
[string] identifier () {
|
||||||
|
return '{0}.Cell[{1}]' -f $this.channelId, $this.index
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class IODevice : IRemote {
|
||||||
|
IODevice ([int]$index, [Object]$remote) : base ($index, $remote) {
|
||||||
|
}
|
||||||
|
|
||||||
|
hidden $_name = $($this | Add-Member ScriptProperty 'name' `
|
||||||
|
{
|
||||||
|
$this.Getter_String('name')
|
||||||
|
} `
|
||||||
|
{
|
||||||
|
return Write-Warning ("ERROR: $($this.identifier()).name is read only")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
hidden $_sr = $($this | Add-Member ScriptProperty 'sr' `
|
||||||
|
{
|
||||||
|
[int]$this.Getter('sr')
|
||||||
|
} `
|
||||||
|
{
|
||||||
|
return Write-Warning ("ERROR: $($this.identifier()).sr is read only")
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
hidden $_wdm = $($this | Add-Member ScriptProperty 'wdm' `
|
||||||
|
{
|
||||||
|
return Write-Warning ("ERROR: $($this.identifier()).wdm is write only")
|
||||||
|
} `
|
||||||
|
{
|
||||||
|
param([string]$arg)
|
||||||
|
return $this.Setter('wdm', $arg)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
hidden $_ks = $($this | Add-Member ScriptProperty 'ks' `
|
||||||
|
{
|
||||||
|
return Write-Warning ("ERROR: $($this.identifier()).ks is write only")
|
||||||
|
} `
|
||||||
|
{
|
||||||
|
param([string]$arg)
|
||||||
|
return $this.Setter('ks', $arg)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
hidden $_mme = $($this | Add-Member ScriptProperty 'mme' `
|
||||||
|
{
|
||||||
|
return Write-Warning ("ERROR: $($this.identifier()).mme is write only")
|
||||||
|
} `
|
||||||
|
{
|
||||||
|
param([string]$arg)
|
||||||
|
return $this.Setter('mme', $arg)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user