commit 90ef9456c88dcb4f5878730cd7470617bea1b71e Author: wompmacho Date: Sun May 17 16:18:37 2026 +0000 init commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1ce250d --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# REAPER / Project backups +*.RPP-bak +*.reaper-ext +*.bak + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db + +# Lua / Busted +.luarocks/ +lua_modules/ +*.o +*.a +*.so +*.dll + +# IDEs +.vscode/ +.idea/ +*.swp +*.swo + +# Docker +.dockerignore + +# MeowTab specific +*.original.md +/home/wompmacho/.gemini/tmp/ +/notes_on_pitch_to_midi/ +/legacy/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..b6ba71f --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +# MeowTab: Simplicity-First MIDI Tablature Editor for REAPER ๐Ÿฑ๐ŸŽธ + +MeowTab is a lightweight, low-latency REAPER extension designed to act as a visual guitar tablature editor. It provides a simplified interface for editing MIDI notes directly on a fretboard, acting as a streamlined alternative to the standard Piano Roll. + +## โœจ Features +* **Visual Fretboard Editor:** Insert and modify MIDI notes by clicking directly on a customizable fretboard. +* **Dual-Layer MIDI Encoding:** Uses REAPER Text Events for 100% visual accuracy and General MIDI hacks (velocity/legato) for immediate audible feedback and compatibility with tools like Guitar Pro. +* **Real-Time Sync:** The fretboard visualizer scrolls in real-time with REAPER's transport, showing notes passing a neon-green playback cursor. +* **Piano Roll Integration:** Highlight notes in the native REAPER Piano Roll and update their string/fret position via the MeowTab UI. +* **Customizable Instrument Setup:** Configure any number of strings and per-string tunings to match your guitar, bass, or other fretted instrument. +* **Built-in Preview:** Hear what you're writing immediately with a default synth tone preview on click. +* **Interaction Logging:** Dedicated log tab for tracking tool actions and troubleshooting. + +## ๐Ÿ›  Architecture +* **UI Layer (`src/main_ui.lua`):** Hardware-accelerated interface using **ReaImGui**. +* **Logic Module (`src/tuning_logic.lua`):** Advanced MIDI-to-Fret mapping and TDD-validated tuning matrices. +* **MIDI Engine:** Custom Lua logic for inserting dual-layer MIDI data (Text Events + Note properties). + +## ๐Ÿš€ Development & Testing + +### 1. Test-Driven Development (TDD) +MeowTab is developed using strict TDD. All core logic must have a passing test in the `spec/` directory. + +#### Local Docker Testing +We use a headless REAPER environment for testing. +```bash +docker build -t meowtab-test -f Dockerfile.test . +docker run --rm -v $(pwd):/app meowtab-test +``` + +### 2. REAPER Dependencies +MeowTab relies on several community extensions: +* **ReaImGui:** Essential for the visual tablature interface. +* **SWS Extension:** Recommended for advanced track/item management. +* **js_ReaScriptAPI:** Required for advanced window and mouse handling. + +## ๐ŸŽธ Usage Workflow +1. **Initialize:** Open the MeowTab extension and click **"Create Tab Track"**. +2. **Configure:** Set your string count and tuning in the **Settings** tab. +3. **Edit:** Select a note length and modifier (e.g., Palm Mute), then click on the fretboard to place a note. +4. **Visualize:** Hit play in REAPER; the fretboard will automatically scroll and highlight notes as they are played. + +## ๐Ÿงช Running Unit Tests +Once Lua and Busted are installed, you can verify the core logic: +```bash +busted +``` + +## ๐Ÿ“ˆ Development Roadmap +- [x] **Phase 1:** Pivot Architecture to Visual Tab Editor. +- [x] **Phase 2:** Dockerized Headless Testing Environment. +- [ ] **Phase 3:** ReaImGui UI Skeleton (Settings, Editor, Log). +- [ ] **Phase 4:** TDD Implementation of Dual-Layer MIDI Engine. +- [ ] **Phase 5:** Real-Time Visualizer Scrolling. +- [ ] **Phase 6:** ReaPack Distribution. + +## ๐Ÿ“ Documentation +* [Architecture & Tools](./architecture_and_tools.md) - Detailed breakdown of MIDI encoding and external libraries. +* [Implementation Plan](./implementation_plan.md) - The master roadmap and user stories. +* [Prompt Log](./prompt_log.md) - History of project decisions and development steps. + +author: wompmacho +date: '2024-05-24T12:05:00-04:00' +lastmod: '2024-05-24' +tags: ["guitar", "tabs", "reaper", "midi", "tdd"]