diff --git a/.gitignore b/.gitignore index 7ba7be46..4dd960ed 100644 --- a/.gitignore +++ b/.gitignore @@ -174,3 +174,4 @@ whombat.db back/src/whombat/statics/* back/src/whombat/user_guide/* back/.build_venv +front/tests-examples diff --git a/front/src/components/recordings/RecordingSpectrogram.tsx b/front/src/components/recordings/RecordingSpectrogram.tsx index 9ddced6c..a96f536b 100644 --- a/front/src/components/recordings/RecordingSpectrogram.tsx +++ b/front/src/components/recordings/RecordingSpectrogram.tsx @@ -11,7 +11,7 @@ import useCanvas from "@/hooks/draw/useCanvas"; import useSpectrogram from "@/hooks/spectrogram/useSpectrogram"; import useSpectrogramTrackAudio from "@/hooks/spectrogram/useSpectrogramTrackAudio"; -import type { Recording, SpectrogramParameters } from "@/types"; +import type { Recording, SpectrogramParameters, Position } from "@/types"; export default function RecordingSpectrogram({ recording, @@ -62,12 +62,22 @@ export default function RecordingSpectrogram({ startTime: bounds.time.min, }); + const { seek, play } = audio; + const handleDoubleClick = useCallback( + ({ position }: { position: Position }) => { + seek(position.time); + play(); + }, + [seek, play], + ); + const spectrogram = useSpectrogram({ dimensions, recording, bounds, initial, parameters, + onDoubleClick: handleDoubleClick, enabled: !audio.isPlaying, }); diff --git a/front/src/hooks/audio/useAudio.ts b/front/src/hooks/audio/useAudio.ts index d7a45837..9ed5fbbf 100644 --- a/front/src/hooks/audio/useAudio.ts +++ b/front/src/hooks/audio/useAudio.ts @@ -198,8 +198,8 @@ export default function useAudio({ }, []); const handleSeek = useCallback((time: number) => { - audio.current.currentTime = time / speed; - }, [speed]); + audio.current.currentTime = (time - startTime) / speed; + }, [speed, startTime]); const handleTogglePlay = useCallback(() => { if (isPlaying) {