@@ -115,9 +115,10 @@ function trackNeedsWebAudio(track: Track): boolean {
115115 || ( track . sends ?. some ( ( send ) => send . amount > 0.000001 ) ?? false ) ;
116116}
117117
118- function canUseNativeClipPlayback ( project : Project , entries : NativePlaybackEntry [ ] ) : boolean {
118+ export function canUseNativeClipPlayback ( project : Project , entries : NativePlaybackEntry [ ] ) : boolean {
119119 if ( project . mastering ?. enabled ) return false ;
120120 if ( ( project . returnTracks ?. length ?? 0 ) > 0 ) return false ;
121+ if ( project . automationLanes ?. some ( ( lane ) => lane . points . length > 0 ) ) return false ;
121122 if ( entries . some ( clipNeedsWebAudio ) ) return false ;
122123 return ! project . tracks . some ( trackNeedsWebAudio ) ;
123124}
@@ -922,6 +923,7 @@ export function useTransport() {
922923
923924 const startScrub = useCallback ( async ( time : number ) => {
924925 const engine = getAudioEngine ( ) ;
926+ const bridge = getAudioBridge ( engine ) ;
925927 const transport = useTransportStore . getState ( ) ;
926928 const scrubProject = useProjectStore . getState ( ) . project ;
927929 if ( ! scrubProject ) return ;
@@ -932,6 +934,8 @@ export function useTransport() {
932934 const resumePlayback = transport . isPlaying || engine . playing ;
933935 if ( resumePlayback ) {
934936 engine . stop ( ) ;
937+ setTauriPlaybackClockOwner ( 'web-audio' ) ;
938+ bridge . stopAllSources ( ) ;
935939 synthEngine . releaseAll ( ) ;
936940 subtractiveEngine . releaseAll ( ) ;
937941 wavetableEngine . releaseAll ( ) ;
0 commit comments