{"id":51123681,"url":"https://github.com/priyxansh/reasig","last_synced_at":"2026-06-25T05:30:48.354Z","repository":{"id":360290811,"uuid":"1249429611","full_name":"priyxansh/reasig","owner":"priyxansh","description":"A DSP-first AI mixing assistant for REAPER. Analyzes your audio tracks, reads your FX parameters, and streams expert mixing advice via OpenRouter into a seamless ReaImGui chat interface.","archived":false,"fork":false,"pushed_at":"2026-06-02T13:33:48.000Z","size":163,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T15:23:28.611Z","etag":null,"topics":["audio-processing","dsp","imgui","lua","python","reaper","reaper-scripts","reascript"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/priyxansh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-25T17:33:35.000Z","updated_at":"2026-06-02T15:16:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/priyxansh/reasig","commit_stats":null,"previous_names":["priyxansh/reabot","priyxansh/reasig"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/priyxansh/reasig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyxansh%2Freasig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyxansh%2Freasig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyxansh%2Freasig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyxansh%2Freasig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/priyxansh","download_url":"https://codeload.github.com/priyxansh/reasig/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/priyxansh%2Freasig/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34761844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-processing","dsp","imgui","lua","python","reaper","reaper-scripts","reascript"],"created_at":"2026-06-25T05:30:47.335Z","updated_at":"2026-06-25T05:30:48.349Z","avatar_url":"https://github.com/priyxansh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ReaSig\n\n**DSP Track Analyser \u0026 AI Mix Assistant for REAPER**\n\nReaSig is a REAPER utility that analyses your audio tracks using professional DSP algorithms and translates the results into specific, actionable mixing advice — powered by LLMs via [OpenRouter](https://openrouter.ai/). It runs as a floating chat window inside REAPER, referencing your actual plugin chains, exact parameter values, and measured signal characteristics.\n\n\u003cvideo src=\"https://github.com/user-attachments/assets/91dff3d7-5d9c-43a3-a55e-1d47b94c9f02\" controls=\"controls\" muted=\"muted\" style=\"max-width: 100%;\"\u003e\u003c/video\u003e\n\n## Features\n\n- **DSP-First Analysis** — Spectral balance, loudness (LUFS), dynamics, transients, stereo width, harmonic distortion, reverb tails, muddiness, and masking — all measured, not guessed\n- **Plugin-Aware Advice** — Reads your ReaEQ, ReaComp, and other FX parameters and references them directly in suggestions\n- **LLM-Powered Intelligence** — Uses models via [OpenRouter](https://openrouter.ai/) (free tier works) for expert mixing guidance grounded in your actual signal data\n- **Streaming Chat** — Responses stream in real-time inside a ReaImGui floating window\n- **Session Persistence** — Conversation history is stored in SQLite and survives daemon restarts\n- **Thread-Safe Architecture** — Decoupled daemon process ensures REAPER never hangs during analysis or LLM calls\n\n## DSP Features\n\nReaSig employs a suite of purpose-built audio analysis modules to extract meaningful data from your tracks:\n\n- **Spectrum Analysis** (`librosa`) — Calculates spectral centroid, rolloff, and energy distribution across sub, bass, mid, and treble bands.\n- **Loudness \u0026 Metering** (`pyloudnorm`) — Accurately measures Integrated LUFS, Short-term LUFS, and True Peak levels to broadcast standards.\n- **Dynamics** (`numpy`) — Computes crest factor and Peak-to-RMS ratios to evaluate how compressed or dynamic a signal is.\n- **Transients** (`librosa` \u0026 `numpy`) — Detects onset events and measures attack sharpness to gauge punchiness.\n- **Stereo Width** (`numpy`) — Analyzes Mid/Side correlation to determine spatial spread and phase coherence.\n- **Harmonic Distortion** (`numpy`) — Estimates Total Harmonic Distortion (THD) by analyzing overtones relative to the fundamental.\n- **Reverb \u0026 Tails** (`numpy`) — Measures decay times to detect lingering tails and assess room ambiance.\n- **Musicality** (`librosa`) — Estimates track key and tempo (BPM) for context-aware mixing decisions.\n- **Noise Floor** (`numpy`) — Estimates the background noise level during quiet passages.\n- **Muddiness \u0026 Masking** — Evaluates lower-midrange buildup and potential frequency clashes between multiple tracks.\n\n## Architecture\n\n```text\n                  [Track Metadata \u0026 Audio Path]\n  REAPER (Lua)  ─────────────────────────────────►  ReaSig Daemon (Python)\n (ReaImGui UI)  ◄─────────────────────────────────  (DSP Math + OpenRouter)\n                     [Streaming LLM Text Chunks]\n```\n\n- **UI Layer**: ReaImGui (Dear ImGui bindings for REAPER)\n- **DSP Layer**: Offline spectral/temporal analysis engine\n- **API Layer**: Decoupled Python daemon with async OpenRouter streaming\n- **Persistence Layer**: SQLite database for session history and memory across restarts\n\n## Quick Start\n\n```bash\n# 1. Clone and setup\ngit clone https://github.com/priyxansh/reasig.git\ncd reasig\nchmod +x setup.sh \u0026\u0026 ./setup.sh\n\n# 2. Add your OpenRouter API key\n#    Edit .env and set OPENROUTER_API_KEY=sk-or-v1-...\n\n# 3. Start the daemon\n# Bash/Zsh:\nsource .venv/bin/activate\npython -m daemon\n\n# Fish shell:\nsource .venv/bin/activate.fish\npython -m daemon\n\n# 4. In REAPER:\n#    - Install ReaImGui via ReaPack (Extensions → ReaPack → Browse → search \"ReaImGui\")\n#    - Actions → Load ReaScript → select reascript/reasig_main.lua\n#    - Run the action to open the chat window\n```\n\n## Requirements\n\n- **REAPER** (v6.0+)\n- **Python** ≥ 3.9\n- **ReaImGui** extension (install via ReaPack)\n- **OpenRouter API key** (free tier works — [get one here](https://openrouter.ai/keys))\n\n## Project Structure\n\n```text\nreasig/\n├── daemon/                 # Standalone Python daemon process\n│   ├── dsp/                # Audio analysis algorithms\n│   ├── llm/                # OpenRouter API client \u0026 prompt engineering\n│   ├── __main__.py         # Daemon entry point\n│   ├── server.py           # Async TCP server\n│   ├── session.py          # SQLite database \u0026 chat history manager\n│   ├── protocol.py         # JSON-lines IPC protocol\n│   └── config.py           # Configuration management\n├── reascript/              # Runs inside REAPER\n│   ├── reasig_main.lua     # Main action entry script\n│   ├── ui/                 # ReaImGui chat window\n│   ├── bridge/             # TCP socket client to daemon\n│   ├── extraction/         # Track \u0026 FX metadata extraction\n│   ├── render/             # Async background audio rendering\n│   └── lib/                # Third-party Lua libraries (e.g. dkjson)\n├── tests/                  # Unit tests\n├── requirements.txt        # Daemon Python dependencies\n└── setup.sh                # One-shot setup script\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpriyxansh%2Freasig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpriyxansh%2Freasig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpriyxansh%2Freasig/lists"}