Skip to content

Added custom folders and playback speed functionality#3

Open
isa wants to merge 7 commits intocoolcode:mainfrom
isa:main
Open

Added custom folders and playback speed functionality#3
isa wants to merge 7 commits intocoolcode:mainfrom
isa:main

Conversation

@isa
Copy link
Copy Markdown

@isa isa commented Mar 30, 2026

Added:

1- System starts with current folder by default to find the mp3 files now
2- Added a custom folder passing, during launch if a folder is passed wheter ~/Music, or ./data or any other custom folder, it tries to find the mp3 files and plays them
3- Updated some of the keyboard shortcuts (? is now help, a few other to support playback speed)
4- From 1-9 automatically positions playback to 10%-90% mark (useful when listening podcasts)
5- Added playback speed functionality (very useful to listen podcasts or long lessons)

isa and others added 7 commits March 29, 2026 23:28
Replace timestretch crate with ~90-line WSOLA (Waveform Similarity
Overlap-Add) implementation for cleaner time-stretching. Fix seek
rewinding to beginning by rebuilding VecSource instead of try_seek.
Pause audio during stretch computation to avoid chipmunk artifacts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…fade

Replace Hann-window OLA with cosine cross-fade to eliminate amplitude
modulation artifacts (rattling/grrhing voice). Use normalized
cross-correlation for reliable waveform matching. Copy non-overlapping
regions directly to preserve original waveform fidelity.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: pitch-preserving playback speed control
Add pitch-preserving speed control feature to docs (+/-/= keys).
Fix music directory documentation — specify folder as arg or use
current directory (removed stale ~/Music and ./data references).
Remove rand from dependencies list. Fix clone URL and line count.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…etch

- Clamp seek to song duration — can't skip past end of track
- Split progress bar into [gauge | time] so they don't overlap
- Add 1-9 keys to jump to 10%-90% of song
- Pre-fetch next 60s chunk while current plays — seamless transitions
- Fix auto-skip at ~1min: compute song duration from decoded samples
  (rodio Decoder::total_duration() returns None for most MP3s)
- Refactor seek into reusable seek_to_position method
- Update README with correct keybindings (? for help, 0 for reset, 1-9)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: seek clamping, progress bar, percentage jump, chunk prefetch
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant