Files
PodTui/tasks/podcast-tui-app/43-waveform-visualization.md
Michael Freno f08afb2ed1 init
2026-02-03 23:29:36 -05:00

1.8 KiB

42. Implement Playback Controls

meta: id: podcast-tui-app-42 feature: podcast-tui-app priority: P0 depends_on: [41] tags: [playback, controls, audio, solidjs]

objective:

  • Implement playback controls (play/pause, skip, progress)
  • Create control buttons
  • Add keyboard shortcuts
  • Handle playback state

deliverables:

  • src/components/PlaybackControls.tsx with control buttons
  • src/utils/playback.ts with playback logic
  • src/hooks/usePlayback.ts with playback hook

steps:

  • Create src/utils/playback.ts:
    • playAudio(audioUrl: string): void
    • pauseAudio(): void
    • skipForward(): void
    • skipBackward(): void
    • setPlaybackSpeed(speed: number): void
    • Handle audio player integration
  • Create src/hooks/usePlayback.ts:
    • createSignal for playback state
    • Methods: play, pause, seek, setSpeed
    • Handle audio events (timeupdate, ended)
  • Create src/components/PlaybackControls.tsx:
    • Play/Pause button
    • Previous/Next episode buttons
    • Volume control (slider)
    • Speed control (1x, 1.25x, 1.5x, 2x)
    • Keyboard shortcuts (space, arrows)

tests:

  • Unit: Test playback logic
  • Unit: Test playback hook
  • Integration: Test playback controls

acceptance_criteria:

  • Play/pause button works
  • Skip forward/backward works
  • Speed control works
  • Volume control works
  • Keyboard shortcuts work

validation:

  • Run application and test playback
  • Press play/pause
  • Test skip buttons
  • Change playback speed
  • Test keyboard shortcuts

notes:

  • Audio integration: Trigger system player or use Web Audio API
  • Use Web Audio API for waveform
  • Handle audio errors
  • Add loading state during playback
  • Store playback speed preference
  • Support keyboard shortcuts:
    • Space: Play/Pause
    • Arrow Right: Skip forward
    • Arrow Left: Skip backward
    • Arrow Up: Volume up
    • Arrow Down: Volume down