removed unwanted bar now with waveforms

This commit is contained in:
Mark Gregory
2026-11-06 10:06:12 +00:00
parent 2fdeef9030
commit dbaa74576d
2 changed files with 42 additions and 8 deletions
+20 -6
View File
@@ -336,31 +336,45 @@ import CoreAudio
var audibleScrubbing = false
private var scrubPreviewTask: Task<Void,Never>?
private var scrubPreviewActive = false
private var lastScrubAudio = -Double.infinity
private var scrubTarget: Double?
var scrubOutputLevel: Float { let levels = meter.snapshot();return max(levels.0,levels.1) }
/// Preview short grains through the deck's normal EQ, fader and output route.
/// Keep transport paused so scrubbing cannot start Automix or change sync state.
func scrub(to value: Double) {
guard audibleScrubbing,!playing,let file,value.isFinite else { seek(value);return }
guard audibleScrubbing,let file,value.isFinite else { seek(value);return }
let target = min(duration,max(0,value)),now = ProcessInfo.processInfo.systemUptime
scrubTarget = target
// Do not starve HAL by stopping/restarting the node on every mouse event.
if now-lastScrubAudio < 0.12 {
if !playing { time = target;render() }
return
}
lastScrubAudio = now
if playing { seek(target);return }
scrubPreviewTask?.cancel()
seek(value)
seek(target)
guard time < duration,engine.isRunning else { return }
generation = UUID();let token = generation
node.stop()
let rate = file.processingFormat.sampleRate
let start = AVAudioFramePosition(time*rate)
let count = AVAudioFrameCount(min(file.length-start,Int64(rate*0.1)))
let count = AVAudioFrameCount(min(file.length-start,Int64(rate*0.25)))
guard count > 0 else { return }
node.scheduleSegment(file,startingFrame:start,frameCount:count,at:nil)
scrubPreviewActive = true;node.play()
scrubPreviewTask = Task { @MainActor [weak self] in
do { try await Task.sleep(nanoseconds:100_000_000) } catch { return }
do { try await Task.sleep(nanoseconds:250_000_000) } catch { return }
guard let self,self.generation == token else { return }
self.endScrubbing()
}
}
func endScrubbing() {
scrubPreviewTask?.cancel();scrubPreviewTask = nil
guard scrubPreviewActive else { return };scrubPreviewActive = false
if !playing { schedule(at:time,play:false) }
let target = scrubTarget;scrubTarget = nil;lastScrubAudio = -Double.infinity
let previewed = scrubPreviewActive;scrubPreviewActive = false
if playing,let target { seek(target) }
else if previewed { schedule(at:target ?? time,play:false) }
}
func seek(_ value: Double) {
guard value.isFinite else { return }