Skip to content

Add batch optimization, listening-note preference learning, and waveform preview#12

Open
MLyte wants to merge 1 commit intomainfrom
codex/implement-batch-processing
Open

Add batch optimization, listening-note preference learning, and waveform preview#12
MLyte wants to merge 1 commit intomainfrom
codex/implement-batch-processing

Conversation

@MLyte
Copy link
Copy Markdown
Owner

@MLyte MLyte commented Apr 23, 2026

Motivation

  • Implement the requested feature set: batch processing, A/B listening notes / preference learning, and a waveform preview in the GUI.
  • Persist lightweight listening history so user notes can influence future ranking decisions.
  • Give a quick visual overview of the source with a small waveform image to help review candidates faster.

Description

  • Added CLI commands optimaster optimize-batch ... to run optimization over multiple files and optimaster add-note ... to save listening ratings (changes in src/optimaster/cli.py).
  • Introduced PreferenceStore to persist notes and compute per-preset bias, saved to renders/preferences.json, and a PreferenceStore API (src/optimaster/preferences.py).
  • Integrated preference bias into scoring inside EngineService.optimize so saved listening notes adjust candidate scores and append a scoring reason when bias is applied (src/optimaster/service.py).
  • Added FFmpeg-based waveform preview generation render_waveform_preview and wired it into the GUI to display a waveform image after file selection, plus rating controls and a "Save listening note" action in the recommended candidate panel (src/optimaster/ffmpeg.py, src/optimaster/gui.py).
  • Updated docs/backlog to mark these features implemented (README.md, TASKS_MASTER.md) and added unit test tests/test_preferences.py covering preference persistence and bias direction.

Testing

  • Ran PYTHONPATH=src pytest -q and all tests passed: 5 passed.
  • Verified compiled syntax via python -m py_compile for the modified modules and it succeeded for src/optimaster/gui.py, cli.py, service.py, ffmpeg.py, preferences.py.
  • Note: a plain pytest -q run initially failed in this environment because the package root was not on PYTHONPATH, so tests were re-run with PYTHONPATH=src and succeeded.

Codex Task

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant