All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Render + Analysis Pipeline: AI can now render audio from REAPER and analyze it
render_tracksMCP tool: render master, stems, or selected tracks to WAV (bars, seconds, full project, or time selection)- 7 focused analysis MCP tools:
analyze_loudness,analyze_spectrum,analyze_pitch,analyze_rhythm,analyze_timbre,analyze_dynamics,analyze_stereo - Resolution control:
full,per_beat,per_bar,per_secondfor time-series data - Render service with Lua generation, path management, metadata persistence
- Renders stored at
workspace/renders/<project>/<render_id>/
- Renders admin page: Browse renders by project, play audio in browser, delete per-render/project/all, storage stats
- Essentia migration: New
tools/analyze_audio.pyusing Essentia for richer music-specific analysis (key, chords, LUFS, chromagram)sample_analysisSQLite table caches full Essentia JSON output per sample- Existing
audio_featurestable preserved for backward compatibility
HOST_WORKSPACE_PATHenv var passed to container for REAPER render output pathsHostPathworkspace config field for host filesystem path mappingExecuteAndReadWithTimeouton PluginBridge for long-running operations (renders)- Sample library with SQLite-backed indexing, background scanning, and audio feature extraction
- MCP sample tools:
search_samples,find_similar_samples,get_sample_info,browse_sample_library,insert_audio_sample,load_sampler - Audio analysis pipeline with Python-based feature extraction (MFCC, spectral, transients)
- Samples page in admin UI with scan controls, filters, stats, and tag editor
- Sample Library settings card in admin Settings page
- MCP project context tools
SAMPLES_PATHenv var for one-step sample library setup- LLM system prompt includes feature availability notes for disabled features
- Dev Docker setup with hot-reloading via
air(Go) and Vite HMR (Vue) —make dev - Sample library state awareness: system prompt now includes library stats (count, categories) at session start, and new
get_sample_library_infoMCP tool for on-demand overview - WAV duration parsing in render results (reads WAV header to report actual duration)
- Dockerfile replaces
librosawithessentiafor audio analysis Command()on PluginBridge refactored to delegate toCommandWithTimeout()- Simplified sample library config to two user-facing options (enabled toggle and host path)
- Updated
.env.samplewithREAPER_PROJECTS_PATH,SAMPLES_PATH, and GoReap branding - Selected tracks render now names output files after actual track names instead of "Master"
- Fixed
insert_midi_patterncorrupted MIDI notes whenstart_measure> 1 - Samples page shows "not configured" message instead of 503 console errors
- Fixed selected tracks render producing "Master.wav" — now uses actual track name(s)
- Fixed renders being louder than DAW playback due to REAPER normalize setting not being reset
- Fixed
analyze_pitchoutput too large for LLM — chords now deduplicated to change-only events - Fixed render results reporting duration as 0
- Initial Build
[Deployment] Notes for deployment [Added] for new features. [Changed] for changes in existing functionality. [Deprecated] for once-stable features removed in upcoming releases. [Removed] for deprecated features removed in this release. [Fixed] for any bug fixes. [Security] to invite users to upgrade in case of vulnerabilities. [YANKED] Note the emphasis, used for Hotfixes