feat: AudioLevel helper and AudioRecorder.onLevel
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import Testing
|
||||
@testable import SstCore
|
||||
|
||||
struct AudioLevelTests {
|
||||
@Test func constantTenthIsMinusTwentyDbfs() {
|
||||
let level = AudioLevel.rmsDbfs([Float](repeating: 0.1, count: 1_000))
|
||||
#expect(abs(level - (-20)) < 0.01)
|
||||
}
|
||||
|
||||
@Test func fullScaleIsZeroDbfs() {
|
||||
let level = AudioLevel.rmsDbfs([Float](repeating: 1.0, count: 100))
|
||||
#expect(abs(level) < 0.01)
|
||||
}
|
||||
|
||||
@Test func negativeSamplesCountLikePositiveOnes() {
|
||||
let level = AudioLevel.rmsDbfs([Float](repeating: -0.1, count: 1_000))
|
||||
#expect(abs(level - (-20)) < 0.01)
|
||||
}
|
||||
|
||||
@Test func emptyAndSilentBuffersHitTheFloor() {
|
||||
#expect(AudioLevel.rmsDbfs([]) == AudioLevel.silenceFloorDbfs)
|
||||
#expect(AudioLevel.rmsDbfs([Float](repeating: 0, count: 64)) == AudioLevel.silenceFloorDbfs)
|
||||
}
|
||||
|
||||
@Test func vuIsRelativeToTheReference() {
|
||||
#expect(AudioLevel.vu(fromDbfs: -20) == 0)
|
||||
#expect(AudioLevel.vu(fromDbfs: -40) == -20)
|
||||
#expect(AudioLevel.vu(fromDbfs: -17) == 3)
|
||||
#expect(AudioLevel.vu(fromDbfs: -30, referenceDbfs: -18) == -12)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user