Types/Wave/get_SampleRate.ps1

<#
.SYNOPSIS
    Gets Wave Sample Rate
.DESCRIPTION
    Gets the Sample Rate used for the Wave.

    This is the number of audio samples per second
.NOTES
    This is bytes 4 to 7 in the Format `fmt ` chunk (`4..7`)

    Mathematically speaking, we can have a negative sample rate, or a fractional sample rate.

    The `.wav` standard specifies the length in four bytes.
    
    Those bytes are expected to be a `[uint32]`.

    Many players will not play wave files below a 4400hz rate.
#>


# The expected range
$range = 4..7
# If we have no cached format
if (-not $this.'#fmt') {
    # read chunks.
    $null = $this.Chunk
    # Return if we still have no cached format
    if (-not $this.'#fmt') { return }
}

# Otherwise, convert the range into a [uint32]
[bitConverter]::ToUint32($this.'#fmt'[$range] -as [byte[]], 0)