diff --git a/Audio/Visualization/VisualizationController.swift b/Audio/Visualization/VisualizationController.swift index b77d764cb..6e22eb0e3 100644 --- a/Audio/Visualization/VisualizationController.swift +++ b/Audio/Visualization/VisualizationController.swift @@ -98,15 +98,26 @@ class VisualizationController : NSObject { var outPCMCopy = Array(repeating: 0.0, count: 4096) serialQueue.sync { - let latencySamples = (Int)(self.latency * self.sampleRate) + // Offset latency so the target sample is in the center of the window + let latencySamples = (Int)((self.latency + latencyOffset) * self.sampleRate) + 2048 + var samplesToDo = 4096; + if(latencySamples < 4096) { + // Latency can sometimes dip below this threshold + samplesToDo = latencySamples; + } var j = self.visAudioCursor - latencySamples let k = self.visAudioSize if j < 0 { j += k } - for i in 0...4095 { + for i in 0..= k { j = 0 } } + if(samplesToDo < 4096) { + for i in samplesToDo...4095 { + outPCMCopy[i] = 0 + } + } } if(outPCM != nil) {