mirror of
				https://github.com/onyx-and-iris/voicemeeter-api-powershell.git
				synced 2025-11-04 06:11:46 +00:00 
			
		
		
		
	Compare commits
	
		
			5 Commits
		
	
	
		
			4e9ff66640
			...
			f480b637eb
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f480b637eb | |||
| 09078d382b | |||
| 598e0dd647 | |||
| 72b5ac02d3 | |||
| a031d25a41 | 
							
								
								
									
										63
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    // Use IntelliSense to learn about possible attributes.
 | 
				
			||||||
 | 
					    // Hover to view descriptions of existing attributes.
 | 
				
			||||||
 | 
					    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
 | 
				
			||||||
 | 
					    "version": "0.2.0",
 | 
				
			||||||
 | 
					    "configurations": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "PowerShell: Launch CLI Example",
 | 
				
			||||||
 | 
					            "type": "PowerShell",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "cwd": "${workspaceRoot}/examples/cli",
 | 
				
			||||||
 | 
					            "script": "${workspaceFolder}/examples/cli/CLI.ps1",
 | 
				
			||||||
 | 
					            "args": [
 | 
				
			||||||
 | 
					                "-s",
 | 
				
			||||||
 | 
					                "\"strip[0].mute\",",
 | 
				
			||||||
 | 
					                "\"!strip[0].mute\",",
 | 
				
			||||||
 | 
					                "\"strip[0].mute\",",
 | 
				
			||||||
 | 
					                "\"bus[2].eq.on=1\",",
 | 
				
			||||||
 | 
					                "\"command.lock=1\""
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "createTemporaryIntegratedConsole": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "PowerShell: Launch NextBus Example",
 | 
				
			||||||
 | 
					            "type": "PowerShell",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "cwd": "${workspaceRoot}/examples/nextbus",
 | 
				
			||||||
 | 
					            "script": "${workspaceFolder}/examples/nextbus/GoTo-NextBus.ps1",
 | 
				
			||||||
 | 
					            "args": [],
 | 
				
			||||||
 | 
					            "createTemporaryIntegratedConsole": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "PowerShell: Launch OBS Example",
 | 
				
			||||||
 | 
					            "type": "PowerShell",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "cwd": "${workspaceRoot}/examples/obs",
 | 
				
			||||||
 | 
					            "script": "${workspaceFolder}/examples/obs/Vm-Obs-Sync.ps1",
 | 
				
			||||||
 | 
					            "args": [],
 | 
				
			||||||
 | 
					            "createTemporaryIntegratedConsole": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "PowerShell: Run Pester Tests",
 | 
				
			||||||
 | 
					            "type": "PowerShell",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "cwd": "${workspaceRoot}",
 | 
				
			||||||
 | 
					            "script": "${workspaceFolder}/tests/pre-commit.ps1",
 | 
				
			||||||
 | 
					            "args": [],
 | 
				
			||||||
 | 
					            "createTemporaryIntegratedConsole": true
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "name": "PowerShell: Launch Quick Test",
 | 
				
			||||||
 | 
					            "type": "PowerShell",
 | 
				
			||||||
 | 
					            "request": "launch",
 | 
				
			||||||
 | 
					            "cwd": "${workspaceRoot}",
 | 
				
			||||||
 | 
					            "script": "${workspaceFolder}/quick.ps1",
 | 
				
			||||||
 | 
					            "args": [
 | 
				
			||||||
 | 
					                "-Verbose",
 | 
				
			||||||
 | 
					                "-Debug"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "createTemporaryIntegratedConsole": true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -10,6 +10,7 @@ Before any major/minor/patch is released all test units will be run to verify th
 | 
				
			|||||||
## [Unreleased] These changes have not been added to PSGallery yet
 | 
					## [Unreleased] These changes have not been added to PSGallery yet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- [x] Level methods for Strip,Bus classes implemented.
 | 
					- [x] Level methods for Strip,Bus classes implemented.
 | 
				
			||||||
 | 
					- [x] More Recorder commands implemented.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## [3.0.0]
 | 
					## [3.0.0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										56
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								README.md
									
									
									
									
									
								
							@ -390,18 +390,18 @@ $vmr.vban.outstream[3].bit = 16
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Certain 'special' commands are defined by the API as performing actions rather than setting values.
 | 
					Certain 'special' commands are defined by the API as performing actions rather than setting values.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The following methods are available:
 | 
					The following commands are available:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- show
 | 
					- show
 | 
				
			||||||
- hide
 | 
					- hide
 | 
				
			||||||
- restart
 | 
					- restart
 | 
				
			||||||
- shutdown
 | 
					- shutdown
 | 
				
			||||||
- Load(filepath)
 | 
					- showvbanchat: boolean (write only)
 | 
				
			||||||
 | 
					- lock: boolean (write only)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The following properties are write only and accept boolean values:
 | 
					The following methods are available:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- showvbanchat
 | 
					- Load($filepath): string
 | 
				
			||||||
- lock
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
example:
 | 
					example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -415,7 +415,7 @@ $vmr.command.Load("path/to/filename.xml")
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### Recorder
 | 
					### Recorder
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The following methods are available:
 | 
					The following commands are available:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- play
 | 
					- play
 | 
				
			||||||
- stop
 | 
					- stop
 | 
				
			||||||
@ -423,19 +423,53 @@ The following methods are available:
 | 
				
			|||||||
- record
 | 
					- record
 | 
				
			||||||
- ff
 | 
					- ff
 | 
				
			||||||
- rew
 | 
					- rew
 | 
				
			||||||
 | 
					- A1 - A5: boolean
 | 
				
			||||||
 | 
					- B1 - B3: boolean
 | 
				
			||||||
 | 
					- samplerate: int (22050, 24000, 32000, 44100, 48000, 88200, 96000, 176400, 192000)
 | 
				
			||||||
 | 
					- bitresolution: int (8, 16, 24, 32)
 | 
				
			||||||
 | 
					- channel: int from 1 to 8
 | 
				
			||||||
 | 
					- kbps: int (32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The following properties accept boolean values.
 | 
					The following methods are available:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- loop
 | 
					- Load($filepath): string
 | 
				
			||||||
- A1 - A5
 | 
					- GoTo($timestring): string, must match the format 'hh:mm:ss'
 | 
				
			||||||
- B1 - B3
 | 
					- FileType($format): string, ('wav', 'aiff', 'bwf', 'mp3')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
example:
 | 
					example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```powershell
 | 
					```powershell
 | 
				
			||||||
$vmr.recorder.play
 | 
					$vmr.recorder.play
 | 
				
			||||||
 | 
					$vmr.recorder.A1 = $true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$vmr.recorder.loop = $true
 | 
					$vmr.recorder.GoTo("00:01:15")  # go to 1min 15sec into track
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Mode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following commands are available:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- recbus
 | 
				
			||||||
 | 
					- playonload
 | 
				
			||||||
 | 
					- loop
 | 
				
			||||||
 | 
					- multitrack
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```powershell
 | 
				
			||||||
 | 
					$vmr.recorder.mode.loop = $true
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### ArmStrip[i]|ArmBus[i]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The following method is available:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Set($val): boolean
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```powershell
 | 
				
			||||||
 | 
					$vmr.recorder.armstrip[0].Set($true)
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Multiple parameters
 | 
					### Multiple parameters
 | 
				
			||||||
 | 
				
			|||||||
@ -63,4 +63,4 @@ function main {
 | 
				
			|||||||
    finally { Disconnect-Voicemeeter }
 | 
					    finally { Disconnect-Voicemeeter }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ($MyInvocation.InvocationName -ne '.') { main }
 | 
					main
 | 
				
			||||||
 | 
				
			|||||||
@ -68,4 +68,4 @@ function main {
 | 
				
			|||||||
    }    
 | 
					    }    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if ($MyInvocation.InvocationName -ne '.') { main }
 | 
					main
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										148
									
								
								lib/recorder.ps1
									
									
									
									
									
								
							
							
						
						
									
										148
									
								
								lib/recorder.ps1
									
									
									
									
									
								
							@ -8,28 +8,47 @@ class IRecorder {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [single] Getter ($param) {
 | 
					    [single] Getter ($param) {
 | 
				
			||||||
        return $this.remote.Getter("$($this.identifier()).$param")
 | 
					        $this.Cmd($param) | Write-Debug
 | 
				
			||||||
 | 
					        return $this.remote.Getter($this.Cmd($param))
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [void] Setter ($param, $val) {
 | 
					    [void] Setter ($param, $val) {
 | 
				
			||||||
 | 
					        "$($this.Cmd($param))=$val" | Write-Debug
 | 
				
			||||||
        if ($val -is [Boolean]) {
 | 
					        if ($val -is [Boolean]) {
 | 
				
			||||||
            $this.remote.Setter("$($this.identifier()).$param", $(if ($val) { 1 } else { 0 }))
 | 
					            $this.remote.Setter($this.Cmd($param), $(if ($val) { 1 } else { 0 }))
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            $this.remote.Setter("$($this.identifier()).$param", $val)
 | 
					            $this.remote.Setter($this.Cmd($param), $val)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }    
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [string] Cmd ($param) {
 | 
				
			||||||
 | 
					        if ([string]::IsNullOrEmpty($param)) {
 | 
				
			||||||
 | 
					            return $this.identifier()
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return "$($this.identifier()).$param"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Recorder : IRecorder {
 | 
					class Recorder : IRecorder {
 | 
				
			||||||
    [Object]$remote
 | 
					    [Object]$remote
 | 
				
			||||||
    [Object]$mode
 | 
					    [Object]$mode
 | 
				
			||||||
 | 
					    [System.Collections.ArrayList]$armstrip
 | 
				
			||||||
 | 
					    [System.Collections.ArrayList]$armbus
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Recorder ([Object]$remote) : base ($remote) {
 | 
					    Recorder ([Object]$remote) : base ($remote) {
 | 
				
			||||||
        $this.remote = $remote
 | 
					 | 
				
			||||||
        $this.mode = [RecorderMode]::new($remote)
 | 
					        $this.mode = [RecorderMode]::new($remote)
 | 
				
			||||||
 | 
					        $this.armstrip = @()
 | 
				
			||||||
 | 
					        0..($remote.kind.p_in + $remote.kind.v_in - 1) | ForEach-Object {
 | 
				
			||||||
 | 
					            $this.armstrip.Add([RecorderArmStrip]::new($_, $remote))
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $this.armbus = @()
 | 
				
			||||||
 | 
					        0..($remote.kind.p_out + $remote.kind.v_out - 1) | ForEach-Object {
 | 
				
			||||||
 | 
					            $this.armbus.Add([RecorderArmBus]::new($_, $remote))
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        AddActionMembers -PARAMS @('play', 'stop', 'pause', 'replay', 'record', 'ff', 'rew')
 | 
					        AddActionMembers -PARAMS @('play', 'stop', 'pause', 'replay', 'record', 'ff', 'rew')
 | 
				
			||||||
 | 
					        AddFloatMembers -PARAMS @('gain')
 | 
				
			||||||
        AddChannelMembers
 | 
					        AddChannelMembers
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -51,14 +70,101 @@ class Recorder : IRecorder {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    hidden $_samplerate = $($this | Add-Member ScriptProperty 'samplerate' `
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            $this.Getter('samplerate')
 | 
				
			||||||
 | 
					        } `
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            param([int]$arg)
 | 
				
			||||||
 | 
					            $opts = @(22050, 24000, 32000, 44100, 48000, 88200, 96000, 176400, 192000)
 | 
				
			||||||
 | 
					            if ($opts.Contains($arg)) {
 | 
				
			||||||
 | 
					                $this._samplerate = $this.Setter('samplerate', $arg)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                "samplerate got: $arg, expected one of $opts" | Write-Warning
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    hidden $_bitresolution = $($this | Add-Member ScriptProperty 'bitresolution' `
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            $this.Getter('bitresolution')
 | 
				
			||||||
 | 
					        } `
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            param([int]$arg)
 | 
				
			||||||
 | 
					            $opts = @(8, 16, 24, 32)
 | 
				
			||||||
 | 
					            if ($opts.Contains($arg)) {
 | 
				
			||||||
 | 
					                $this._bitresolution = $this.Setter('bitresolution', $arg)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                "bitresolution got: $arg, expected one of $opts" | Write-Warning
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    hidden $_channel = $($this | Add-Member ScriptProperty 'channel' `
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            $this.Getter('channel')
 | 
				
			||||||
 | 
					        } `
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            param([int]$arg)
 | 
				
			||||||
 | 
					            if ($arg -ge 1 -and $arg -le 8) {
 | 
				
			||||||
 | 
					                $this._channel = $this.Setter('channel', $arg)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                "channel got: $arg, expected value from 1 to 8" | Write-Warning
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    hidden $_kbps = $($this | Add-Member ScriptProperty 'kbps' `
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            $this.Getter('kbps')
 | 
				
			||||||
 | 
					        } `
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            param([int]$arg)
 | 
				
			||||||
 | 
					            $opts = @(32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320)
 | 
				
			||||||
 | 
					            if ($opts.Contains($arg)) {
 | 
				
			||||||
 | 
					                $this._kbps = $this.Setter('kbps', $arg)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else {
 | 
				
			||||||
 | 
					                "kbps got: $arg, expected one of $opts" | Write-Warning
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [void] Load ([string]$filename) {
 | 
					    [void] Load ([string]$filename) {
 | 
				
			||||||
        $this.Setter('load', $filename)
 | 
					        $this.Setter('load', $filename)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [void] GoTo ([string]$timestring) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            if ([datetime]::ParseExact($timestring, "HH:mm:ss", $null)) {
 | 
				
			||||||
 | 
					                $timespan = [timespan]::Parse($timestring)
 | 
				
			||||||
 | 
					                $this.Setter("GoTo", $timespan.TotalSeconds)                
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        catch [FormatException] {
 | 
				
			||||||
 | 
					            "Time string $timestring does not match the required format 'hh:mm:ss'" | Write-Warning
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [void] FileType($format) {
 | 
				
			||||||
 | 
					        [int]$val = 0
 | 
				
			||||||
 | 
					        switch ($format) {
 | 
				
			||||||
 | 
					            "wav" { $val = 1 }
 | 
				
			||||||
 | 
					            "aiff" { $val = 2 }
 | 
				
			||||||
 | 
					            "bwf" { $val = 3 }
 | 
				
			||||||
 | 
					            "mp3" { $val = 100 }
 | 
				
			||||||
 | 
					            default { "Filetype() got: $format, expected one of 'wav', 'aiff', 'bwf', 'mp3'" }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $this.Setter("filetype", $val)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RecorderMode : IRecorder {
 | 
					class RecorderMode : IRecorder {
 | 
				
			||||||
    RecorderMode ([Object]$remote) : base ($remote) {
 | 
					    RecorderMode ([Object]$remote) : base ($remote) {
 | 
				
			||||||
        AddBoolMembers -PARAMS @('loop')
 | 
					        AddBoolMembers -PARAMS @('recbus', 'playonload', 'loop', 'multitrack')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    [string] identifier () {
 | 
					    [string] identifier () {
 | 
				
			||||||
@ -66,6 +172,36 @@ class RecorderMode : IRecorder {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class RecorderArm : IRecorder {
 | 
				
			||||||
 | 
					    [int]$index
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    RecorderArm ([int]$index, [Object]$remote) : base ($remote) {
 | 
				
			||||||
 | 
					        $this.index = $index
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Set ([bool]$val) {
 | 
				
			||||||
 | 
					        $this.Setter("", $(if ($val) { 1 } else { 0 }))
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class RecorderArmStrip : RecorderArm {
 | 
				
			||||||
 | 
					    RecorderArmStrip ([int]$index, [Object]$remote) : base ($index, $remote) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [string] identifier () {
 | 
				
			||||||
 | 
					        return "Recorder.ArmStrip[$($this.index)]"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class RecorderArmBus : RecorderArm {
 | 
				
			||||||
 | 
					    RecorderArmBus ([int]$index, [Object]$remote) : base ($index, $remote) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    [string] identifier () {
 | 
				
			||||||
 | 
					        return "Recorder.ArmBus[$($this.index)]"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function Make_Recorder ([Object]$remote) {
 | 
					function Make_Recorder ([Object]$remote) {
 | 
				
			||||||
    return [Recorder]::new($remote)
 | 
					    return [Recorder]::new($remote)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -70,7 +70,7 @@ class Vban : IVban {
 | 
				
			|||||||
        } `
 | 
					        } `
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            param([string]$arg)
 | 
					            param([string]$arg)
 | 
				
			||||||
            if ($arg -in 1024..65535) {
 | 
					            if ($arg -ge 1024 -and $arg -le 65535) {
 | 
				
			||||||
                $this._port = $this.Setter('port', $arg)
 | 
					                $this._port = $this.Setter('port', $arg)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
@ -106,7 +106,7 @@ class Vban : IVban {
 | 
				
			|||||||
            param([int]$arg)
 | 
					            param([int]$arg)
 | 
				
			||||||
            if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
 | 
					            if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
                if ($arg -in 1..8) {
 | 
					                if ($arg -ge 1 -and $arg -le 8) {
 | 
				
			||||||
                    $this._channel = $this.Setter('channel', $arg)
 | 
					                    $this._channel = $this.Setter('channel', $arg)
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else {
 | 
					                else {
 | 
				
			||||||
@ -144,7 +144,7 @@ class Vban : IVban {
 | 
				
			|||||||
            param([int]$arg)
 | 
					            param([int]$arg)
 | 
				
			||||||
            if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
 | 
					            if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
                if ($arg -in 0..4) {
 | 
					                if ($arg -ge 0 -and $arg -le 4) {
 | 
				
			||||||
                    $this._quality = $this.Setter('quality', $arg)
 | 
					                    $this._quality = $this.Setter('quality', $arg)
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else {
 | 
					                else {
 | 
				
			||||||
@ -162,7 +162,7 @@ class Vban : IVban {
 | 
				
			|||||||
            param([int]$arg)
 | 
					            param([int]$arg)
 | 
				
			||||||
            if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
 | 
					            if ($this.direction -eq "in") { Write-Warning ('Error, read only value') }
 | 
				
			||||||
            else {
 | 
					            else {
 | 
				
			||||||
                if ($arg -in 0..8) {
 | 
					                if ($arg -ge 0 -and $arg -le 8) {
 | 
				
			||||||
                    $this._route = $this.Setter('route', $arg)
 | 
					                    $this._route = $this.Setter('route', $arg)
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else {
 | 
					                else {
 | 
				
			||||||
 | 
				
			|||||||
@ -73,5 +73,4 @@ function main() {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					main
 | 
				
			||||||
if ($MyInvocation.InvocationName -ne '.') { main }
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user