Types/OBS.Beat/TapBPM.ps1
<# .SYNOPSIS Tap BPM .DESCRIPTION Tap out a BPM by pressing ENTER on N beats. The BPM will be set to the average time between taps, and the beat will be started. #> param( # The number of taps. [int] $TapCount = 8 ) Write-Host "Press ENTER on the next..." $beatTimes = @() $beatTimeStart = [datetime]::Now $lastBeatTime = [timespan]::FromMilliseconds(0) $beatTimes = do { Write-Host "$($TapCount -$beatTimes.Length) beats:" -NoNewline $readNothing = Read-Host $beatTimes += [datetime]::Now $lastBeatTime = $beatTimes[-1] - $beatTimeStart $beatTimeStart = [datetime]::Now $lastBeatTime } while ($beatTimes.Length -lt $TapCount) $averageTimeBetweenBeats = $beatTimes.TotalMilliseconds | Measure-Object -Average | Select-Object -ExpandProperty Average $this.Duration = [Timespan]::FromMilliseconds($averageTimeBetweenBeats) $this.BeatStart = $beatTimeStart $this.BPM |