[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82433":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":15,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":8,"rankLanguage":8,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":8,"pushedAt":8,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},82433,"slopsmith","slopsmith\u002Fslopsmith","Self-hosted Docker web app for browsing, playing & practicing interactive full-band music notation, with an extensive plugin system",null,"JavaScript",1205,127,13,279,0,56,71,28,81.42,"GNU Affero General Public License v3.0",false,"main",true,[],"2026-06-13 04:01:33","# Slopsmith\n\nA self-contained web application for browsing, playing, and practicing interactive music notation for a full band — guitar, bass, keys, drums, and vocals — extended by a large plugin system. Runs entirely in Docker — no local dependencies required.\n\n> **Looking for a desktop app?** [Slopsmith Desktop](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-desktop) is a standalone native app for non-technical users — no Docker required. It includes everything in the web version plus a built-in audio engine with VST3\u002FAU\u002FLV2 plugin hosting, Neural Amp Modeler (NAM) for amp simulation, cabinet IR loading, and automatic tone switching that changes your signal chain as tones change during a song.\n\n![Library](docs\u002Flibrary.png)\n![3D Highway Player](docs\u002Fplayer-3d.jpg)\n\n> The screenshot above shows the **3D Highway** — a bundled visualization plugin selectable from the viz picker, featuring depth-aware camera, lighting, and per-string lane glow. \n\n![Classic 2D Highway](docs\u002Fplayer-2d.jpg)\n\n> The **Classic 2D Highway** is also available in the picker for low-powered devices.\n\n## Features\n\n### Library Browser\n- **Grid View** — album art cards with arrangement badges, tuning, lyrics indicator\n- **Artist\u002FAlbum Tree View** — hierarchical browser with letter filter (A-Z), expandable artist and album groups\n- **Search** — filter by song title, artist, or album name\n- **Sort** — by artist, title, recently added, or tuning\n- **Favorites** — mark songs with a heart, browse favorites in a dedicated view\n- **Edit Metadata** — update song title, artist, album, and album art directly from the library\n- **Retune to E Standard** — pitch-shift songs in Eb\u002FD\u002FC#\u002FC Standard to E Standard with one click\n\n### Note Highway Player\nA real-time note highway that renders arrangements as scrolling, fret-positioned notes. Bundled visualization options include a 3D highway with depth-aware camera, lighting, and per-string lane glow, and a classic 2D highway selectable from the visualization picker.\n\n**Note rendering:**\n- Fret-positioned notes with string colors (red, orange, blue, orange, green, purple)\n- Open string bars spanning the highway\n- Chord brackets connecting chord notes with chord name labels\n- Sustain tails that stay visible until the sustain finishes\n\n**Techniques:**\n- Bends with curved arrows and labels (1\u002F2, full, 1-1\u002F2, 2)\n- Unison bends with dashed connector and \"U\" label\n- Slides (diagonal arrow)\n- Hammer-ons \u002F Pull-offs \u002F Taps (H\u002FP\u002FT labels)\n- Palm mutes (PM label)\n- Vibrato (animated sustain)\n- Tremolo (wavy line)\n- Accents (> marker)\n- Harmonics (diamond shape)\n- Pinch harmonics (diamond + PH label)\n\n**Additional features:**\n- Synced lyrics display (phrase-based, multi-row, karaoke highlighting) — toggleable\n- Dynamic anchor zoom — fret range adjusts smoothly, looks ahead at upcoming notes\n- Arrangement switcher — switch between Lead, Rhythm, Bass during playback\n- Speed control — continuous slider from 0.25x to 1.50x\n- Volume control\n\n### Practice Tools\n- **A-B Looping** — set start (A) and end (B) points to repeat a section\n- **Saved Loops** — name and save multiple loop sections per song, persisted across sessions\n- **4-Count Click** — tempo-matched metronome count-in (1-2-3-4) before each loop repetition\n- **Rewind Effect** — highway smoothly rewinds to the loop start point\n\n### Song Creation\n- **Create from Guitar Pro Tab** — search Ultimate Guitar for GP3\u002FGP4\u002FGP5 tabs and convert them to playable songs with MIDI audio (available as a plugin)\n\n### Compatibility\n- Supports both **custom songs** and **official song packs**\n- Official packs: automatically converts binary note files (SNG) to XML via the built-in note compiler\n- Reads arrangement names from manifest JSON (accurate Lead\u002FRhythm\u002FBass identification)\n\n### Scalability\n- **In-memory PSARC scanning** — reads metadata without writing to disk\n- **Parallel scanning** — 8-thread metadata extraction\n- **Server-side pagination and search** — SQLite-backed, handles 80,000+ songs\n- **Non-blocking scan** — browse already-scanned songs while import continues in background\n\n## Quick Start\n\n### Prerequisites\n- [Docker](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) and [Docker Compose](https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Finstall\u002F)\n\n### Run\n\n1. Clone the repository:\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith.git\n   cd slopsmith\n   ```\n\n2. Set your DLC folder path and start:\n   ```bash\n   DLC_PATH=\u002Fpath\u002Fto\u002Fyour\u002Fsongs docker compose up -d\n   ```\n\n3. Open http:\u002F\u002Flocalhost:8000 in your browser.\n\nOn first launch, the app scans your DLC folder and imports metadata. A progress banner shows at the bottom of the screen. The library is usable while the scan runs.\n\n### Configuration\n\n- **DLC Folder** — set in Settings or via the `DLC_PATH` environment variable\n- **Default Arrangement** — choose Lead, Rhythm, or Bass as the default when opening songs (Settings)\n\n### Logging\n\nControl log verbosity and format via environment variables:\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `LOG_LEVEL` | `INFO` | Severity threshold: `DEBUG`, `INFO`, `WARNING`, or `ERROR` |\n| `LOG_FORMAT` | `text` | `text` for coloured console output; `json` for structured output (Loki, ELK, Promtail) |\n| `LOG_FILE` | *(unset)* | If set, also write logs to this path (e.g. `\u002Fconfig\u002Fslopsmith.log`) |\n\n### Reporting Bugs \u002F Diagnostics\n\nWhen you hit a bug, **Settings → Diagnostics → Export Diagnostics** produces a single zip containing everything a maintainer (or AI agent) needs to triage:\n\n- Server logs (tail of `LOG_FILE`)\n- System info (Python, OS, Slopsmith version)\n- Hardware (CPU, RAM, GPU) — works in Docker, Electron (slopsmith-desktop), or bare Python\n- Plugin inventory with git commit SHAs (so we know exactly which build you're on) — including orphaned plugins that failed to load\n- Browser console transcript (all `console.log\u002Finfo\u002Fwarn\u002Ferror\u002Fdebug` + uncaught errors + promise rejections, last 500 entries)\n- Browser hardware (WebGL renderer, WebGPU adapter)\n- Per-plugin contributed diagnostics (when plugins opt in)\n\n**Privacy:** redaction is on by default. DLC paths, song filenames, IP addresses, and bearer tokens are replaced with stable hashed tokens (`\u003Csong:a3f1c2d4>`) before the bundle is created. Click **Preview Bundle** to see exactly what's about to be exported.\n\nSet `LOG_FILE` first if you want server logs included — without it the bundle still ships system + hardware + browser console, but the `logs\u002F` section will be empty.\n\nThe bundle layout and per-file schemas are fully documented in [`docs\u002Fdiagnostics-bundle-spec.md`](docs\u002Fdiagnostics-bundle-spec.md). Top-level `manifest.json` carries a `schema` field on every JSON data file so AI agents can dispatch by version.\n\nAttach the zip to a GitHub issue or share with whoever's helping you debug.\n\n### Docker Compose Example\n\n```yaml\nservices:\n  web:\n    build: .\n    ports:\n      - \"8000:8000\"\n    volumes:\n      # Mount your song folder\n      - \u002Fpath\u002Fto\u002Fyour\u002Fsongs:\u002Fdlc\n      # Persistent config, cache, and favorites\n      - slopsmith-config:\u002Fconfig\n      # Optional: mount plugins for development\n      # - .\u002Fplugins:\u002Fapp\u002Fplugins\n    environment:\n      - DLC_DIR=\u002Fdlc\n      - CONFIG_DIR=\u002Fconfig\n\nvolumes:\n  slopsmith-config:\n```\n## Apache Reverse Proxy\n\nTo expose Slopsmith behind an Apache reverse proxy, add the following configuration to your virtual host:\n\n```apache\nProxyPass \u002Fslopsmith\u002F http:\u002F\u002Flocalhost:8000\u002F\nProxyPassReverse \u002Fslopsmith\u002F http:\u002F\u002Flocalhost:8000\u002F\n\nProxyPass \u002Fapi\u002F http:\u002F\u002Flocalhost:8000\u002Fapi\u002F\nProxyPassReverse \u002Fapi\u002F http:\u002F\u002Flocalhost:8000\u002Fapi\u002F\n\nProxyPass \u002Fstatic\u002F http:\u002F\u002Flocalhost:8000\u002Fstatic\u002F\nProxyPassReverse \u002Fstatic\u002F http:\u002F\u002Flocalhost:8000\u002Fstatic\u002F\n\nProxyPass \u002Fws ws:\u002F\u002Flocalhost:8000\u002Fws\n\nProxyPass \u002Faudio\u002F http:\u002F\u002Flocalhost:8000\u002Faudio\u002F\nProxyPassReverse \u002Faudio\u002F http:\u002F\u002Flocalhost:8000\u002Faudio\u002F\n```\n\nEnsure the required Apache modules are enabled:\n\n```bash\nsudo a2enmod proxy\nsudo a2enmod proxy_http\nsudo a2enmod proxy_wstunnel\n```\n\nThen restart Apache:\n\n```bash\nsudo systemctl restart apache2\n```\n\n> **Note:** If Slopsmith is running on a different server, replace `localhost:8000` with the appropriate URL or IP address (e.g., `http:\u002F\u002F192.168.1.100:8000` or `http:\u002F\u002Fslopsmith.internal:8000`).\n>\n> **Important:** Even though the app entrypoint is proxied at `\u002Fslopsmith`, Slopsmith currently uses absolute frontend paths (for example `\u002Fstatic\u002F...` and `\u002Fapi\u002F...`). That is why the config also proxies `\u002Fapi`, `\u002Fstatic`, `\u002Fws`, and `\u002Faudio` at the virtual-host root. These root routes will be exposed and can conflict with an existing site that already uses the same paths.\n>\n> Slopsmith is not fully base-path aware yet, so it cannot be cleanly nested entirely under `\u002Fslopsmith` without additional rewriting or app changes. If you need to avoid route collisions, use a dedicated subdomain (for example `slopsmith.your-domain`) as the cleanest option.\n\n## Proxmox LXC Container\n\n`build-proxmox-ct.sh` builds a self-contained Proxmox LXC rootfs tarball from WSL2. It bootstraps a Debian Trixie rootfs, installs the runtime dependencies (Python, FFmpeg, fluidsynth, vgmstream) plus a build-only .NET SDK, builds RsCli, copies the app, removes the .NET SDK, and packages the result as a `.tar.zst` importable by `pct restore`.\n\n```bash\n# Prerequisites (WSL2):\nsudo apt install debootstrap systemd-container tar zstd curl unzip git\n\n# Build (run from repo root):\nsudo bash build-proxmox-ct.sh amd64 slopsmith-ct\n\n# Transfer + import on Proxmox:\nscp slopsmith-ct.tar.zst root@proxmox:\u002Fvar\u002Flib\u002Fvz\u002Ftemplate\u002Fcache\u002F\npct restore 200 \u002Fvar\u002Flib\u002Fvz\u002Ftemplate\u002Fcache\u002Fslopsmith-ct.tar.zst \\\n    --storage local-lvm --rootfs 8 --memory 2048 --cores 2 \\\n    --net0 name=eth0,bridge=vmbr0,ip=dhcp --unprivileged 1 --start 1\n```\n\nOverride the song source directory (the directory that contains both `dlc\u002F` and `songs.psarc`) via environment, using `sudo env` so the variable survives `sudo`: `sudo env SONG_SRC_DIR=\u002Fpath\u002Fto\u002Fyour\u002Fsongs bash build-proxmox-ct.sh amd64 slopsmith-ct`.\n\nThe build copies `*_p.psarc` files from `${SONG_SRC_DIR}\u002Fdlc\u002F` and `songs.psarc` from `${SONG_SRC_DIR}\u002F` — point the variable at the source root, not at the `dlc\u002F` folder. .NET is installed only as a build dependency; RsCli is published with `--self-contained`, so the system-wide .NET tree is removed before the rootfs is packaged (the runtime ships bundled inside `RsCli`).\n\nThe build verifies downloaded files (vgmstream, dotnet-install.sh) against pinned SHA256 hashes. Set `SKIP_HASH_CHECK=1` to bypass verification — useful when an upstream artifact (e.g. `dot.net\u002Fv1\u002Fdotnet-install.sh`) rolls and the pinned hash hasn't been refreshed yet:\n\n```bash\nsudo env SKIP_HASH_CHECK=1 bash build-proxmox-ct.sh amd64 slopsmith-ct\n```\n\nThe script is linted with `shellcheck`. Only `amd64` is supported out of the box; `arm64` requires `qemu-user-static` + binfmt registration.\n\n## Portainer Setup\n\nThis guide walks through installing Docker, Portainer, and Slopsmith on Ubuntu.\n\n**Step 1:** Update Package Lists & install docker\n```bash\nsudo apt update\nsudo apt install docker.io -y\nsudo usermod -aG docker $USER\n```\n**Step 2:** Install Portainer on Ubuntu\n```bash\nsudo docker pull portainer\u002Fportainer-ce:latest\nsudo docker run -d -p 9000:9000 --restart always -v \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock portainer\u002Fportainer-ce:latest\n```\n**Step 3:** Access the Portainer Web Interface\nOpen the following URL in your browser:\n\n    • http:\u002F\u002Fserver-ip:9000\n\n**Step 4:** Pull the Slopsmith Image\nIn Portainer, go to the Images tab and build a new image using the following settings:\n\n    • Image Name: slopsmith:latest\n    \n    • Repository URL: https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith.git\n\n**Step 5:** Create a Stack for Slopsmith\nClick '+ Add Stack' and paste the following Docker Compose configuration into the editor. Replace '\u002Fpath\u002Fto\u002Fdlc\u002F' with the correct path where your dlc is on your host system.\n```bash\nversion: \"3.9\"\n\nservices:\n  web:\n    image: slopsmith:latest\n    container_name: slopsmith-web\n    restart: unless-stopped\n\n    ports:\n      - \"7000:8000\"\n\n    volumes:\n      - \u002Fpath\u002Fto\u002Fdlc\u002F:\u002Fdlc\n      - slopsmith-config:\u002Fconfig\n\n    environment:\n      DLC_DIR: \u002Fdlc\n      CONFIG_DIR: \u002Fconfig\n\nvolumes\n  slopsmith-config:\n```\nClick 'Deploy the stack'. This creates a container named 'slopsmith-web'.\nAccess Slopsmith at: http:\u002F\u002Fserver-ip:7000\n\n**Step 6:** Add the Update Manager\n\nClone the Update Manager repository on the host machine and copy to container.\n```bash\ncd \u002Fhome\u002Fyour_user\ngit clone https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-update-manager.git update_manager\nsudo docker cp \u002Fhome\u002Fyour_user\u002Fupdate_manager slopsmith-web:\u002Fapp\u002Fplugins\u002F\n```\n**Step 7:** Restart the Slopsmith Container\n\nIn the Portainer web interface, go to Containers, select 'slopsmith-web', and restart the container.\n\n**Step 8:** Install Recommended Plugins\n\nOpen Slopsmith at http:\u002F\u002Fserver-ip:7000 and install the following recommended plugins via the update manager:\n\n    • NAM Tone Engine - Enables Slopsmith to interface with your guitar\u002Faudio cable.\n        1. Download amp models and cabinet IRs from: https:\u002F\u002Fwww.tone3000.com\u002F\n        \n    • Note Detection - Allows Slopsmith to detect the notes you are playing.\n\n## Plugins\n\nSlopsmith supports a plugin system for extending functionality. Plugins can add navigation links, screens, settings sections, and API routes — all discovered automatically at startup.\n\n### Installing a Plugin\n\nDrop the plugin folder into the `plugins\u002F` directory (or mount it as a Docker volume):\n\n```\nplugins\u002F\n  my_plugin\u002F\n    plugin.json\n    routes.py\n    screen.html\n    screen.js\n    settings.html  (optional)\n```\n\nThen restart the container. The plugin's nav link, screen, and settings will appear automatically.\n\n### Plugin Structure\n\nEach plugin requires a `plugin.json` manifest:\n\n```json\n{\n  \"id\": \"my_plugin\",\n  \"name\": \"My Plugin\",\n  \"version\": \"1.0.0\",\n  \"nav\": {\n    \"label\": \"My Feature\",\n    \"screen\": \"my-screen\"\n  },\n  \"screen\": \"screen.html\",\n  \"script\": \"screen.js\",\n  \"settings\": { \"html\": \"settings.html\" },\n  \"routes\": \"routes.py\"\n}\n```\n\n| Field      | Required | Description                                                      |\n|------------|----------|------------------------------------------------------------------|\n| id         | Yes      | Unique identifier, used in API paths                             |\n| name       | Yes      | Display name                                                     |\n| nav        | No       | Navigation link with label and screen ID                         |\n| screen     | No       | HTML file for the plugin screen content                          |\n| script     | No       | JavaScript file loaded after the screen is injected              |\n| settings   | No       | Object with html field pointing to a settings HTML fragment      |\n| routes     | No       | Python module with a setup(app, context) function for API routes |\n\n### Plugin API Routes\n\nThe `routes.py` module must export a `setup(app, context)` function:\n\n```python\ndef setup(app, context):\n    config_dir = context[\"config_dir\"]    # Path to config directory\n    get_dlc_dir = context[\"get_dlc_dir\"]  # Function returning DLC Path\n    meta_db = context[\"meta_db\"]          # MetadataDB instance\n    extract_meta = context[\"extract_meta\"] # Function to extract PSARC metadata\n\n    @app.get(\"\u002Fapi\u002Fplugins\u002Fmy_plugin\u002Fsearch\")\n    def search(q: str):\n        # Your logic here\n        return {\"results\": []}\n```\n\nRoutes are registered under `\u002Fapi\u002Fplugins\u002F{plugin_id}\u002F` to avoid conflicts.\n\n### Plugin Frontend\n\n- `screen.html` — HTML fragment (no `\u003Chtml>` or `\u003Cbody>` tags). Injected into a `\u003Cdiv class=\"screen\">` container.\n- `screen.js` — JavaScript loaded after the HTML. Has access to all core functions (`showScreen()`, `esc()`, `formatTime()`, etc.).\n- `settings.html` — HTML fragment injected into the Settings page.\n\n### Capability Pipelines\n\nPlugins can declare runtime capability domains in `plugin.json` so profiles, diagnostics, core services, and other plugins can reason about provider\u002Frequester relationships without private globals. Core registers manifest declarations before plugin scripts hydrate; runtime owners then attach command handlers through `window.slopsmith.capabilities`.\n\nThe public flow for cross-plugin automation is claim, dispatch, then release. For example, NAM claims `stems` while AMP is enabled, dispatches `stems.mute` for the guitar target, and releases the claim when AMP stops. Stems owns the mute\u002Frestore snapshots and records manual overrides so a user stem toggle wins over automation for the current session.\n\nSee [docs\u002Fcapability-domains.md](docs\u002Fcapability-domains.md) for manifest fields, runtime registration, diagnostics, idempotent hydration rules, and validation commands.\n\n### Available Plugins\n\n| Plugin                                                                             | Description                                                                                                                                                                                                                      | Install                                                                 |\n|------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------|\n| [Create from Tab](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-ug)             | Search Ultimate Guitar for GP tabs and convert to playable songs                                                                                                                                                                 | `git clone ...slopsmith-plugin-ug.git ultimate_guitar`                  |\n| [Import Tab](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-tabimport)           | Drag and drop Guitar Pro files to create songs                                                                                                                                                                                   | `git clone ...slopsmith-plugin-tabimport.git tab_import`                |\n| [Practice Journal](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-practice)      | Auto-track practice time, speed, loops. Dashboard with charts                                                                                                                                                                    | `git clone ...slopsmith-plugin-practice.git practice_journal`           |\n| [Setlist Builder](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-setlist)        | Create ordered playlists with sequential playback                                                                                                                                                                                | `git clone ...slopsmith-plugin-setlist.git setlist`                     |\n| [Metronome](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-metronome)            | Audible click and visual beat flash synced to song tempo                                                                                                                                                                         | `git clone ...slopsmith-plugin-metronome.git metronome`                 |\n| [Tone Player](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-tones)              | View amp\u002Fpedal\u002Fcab signal chains with gear artwork                                                                                                                                                                               | `git clone ...slopsmith-plugin-tones.git tones`                         |\n| [Fretboard View](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-fretboard)       | Live fretboard overlay showing active notes in real-time                                                                                                                                                                         | `git clone ...slopsmith-plugin-fretboard.git fretboard`                 |\n| [Tab View](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-tabview)               | Scrolling guitar tablature notation via alphaTab                                                                                                                                                                                 | `git clone ...slopsmith-plugin-tabview.git tab_view`                    |\n| [MIDI Amp Control](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-midi)          | Auto-switch amp\u002Fmodeler presets via MIDI on tone changes                                                                                                                                                                         | `git clone ...slopsmith-plugin-midi.git midi_amp`                       |\n| [Section Map](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-sectionmap)         | Color-coded song structure minimap with clickable navigation                                                                                                                                                                     | `git clone ...slopsmith-plugin-sectionmap.git section_map`              |\n| [RS1 Extractor](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-rs1extract)       | Extract RS1 compatibility songs into individual song files                                                                                                                                                                       | `git clone ...slopsmith-plugin-rs1extract.git rs1_extract`              |\n| [Base Game Extractor](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-discextract) | Extract on-disc base game songs from songs.psarc into individual song files                                                                                                                                                      | `git clone ...slopsmith-plugin-discextract.git disc_extract`            |\n| [Arrangement Editor](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-editor)      | DAW-like visual editor for creating and editing song note charts                                                                                                                                                                 | `git clone ...slopsmith-plugin-editor.git editor`                       |\n| [Profile Import](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-profileimport)   | Import play counts, favorites, and scores from game profiles                                                                                                                                                                     | `git clone ...slopsmith-plugin-profileimport.git profileimport`         |\n| [MIDI Capo](https:\u002F\u002Fgithub.com\u002Fmasc0t\u002Fslopsmith-plugin-midi-capo)                  | MIDI capo control for real-time transposition                                                                                                                                                                                    | `git clone ...slopsmith-plugin-midi-capo.git midi_capo`                 |\n| [Note Detection](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-notedetect)      | Real-time pitch detection and scoring against highway notes                                                                                                                                                                      | `git clone ...slopsmith-plugin-notedetect.git note_detect`              |\n| [Find More](https:\u002F\u002Fgithub.com\u002Fmasc0t\u002Fslopsmith-plugin-find-more)                  | Search for more songs by the same artist                                                                                                                                                                                         | `git clone ...slopsmith-plugin-find-more.git find_more`                 |\n| [Piano Highway](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-piano)            | Scrolling piano\u002Fkeyboard view for Keys arrangements with MIDI input                                                                                                                                                              | `git clone ...slopsmith-plugin-piano.git piano`                         |\n| [Studio](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-studio)                  | Collaborative band recording and multi-track mixing                                                                                                                                                                              | `git clone ...slopsmith-plugin-studio.git studio`                       |\n| [Drum Highway](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-drums)             | Lane-based drum highway with MIDI drum pad input and built-in sounds                                                                                                                                                             | `git clone ...slopsmith-plugin-drums.git drums`                         |\n| [Split Screen](https:\u002F\u002Fgithub.com\u002Ftopkoa\u002Fslopsmith-plugin-splitscreen)             | 2-4 highway panels side-by-side for multi-arrangement practice                                                                                                                                                                   | `git clone ...slopsmith-plugin-splitscreen.git splitscreen`             |\n| [Sloppak Converter](https:\u002F\u002Fgithub.com\u002Ftopkoa\u002Fslopsmith-plugin-sloppak-converter)  | Convert PSARC to .sloppak with Demucs stem splitting — bulk-select cards or one-click \"convert all PSARCs missing a sloppak\", with a Conversions queue dashboard (pause\u002Fresume, retry, per-job metadata + Demucs result summary) | `git clone ...slopsmith-plugin-sloppak-converter.git sloppak_converter` |\n| [Stems Mixer](https:\u002F\u002Fgithub.com\u002Ftopkoa\u002Fslopsmith-plugin-stems)                    | Per-stem mute\u002Fvolume controls for .sloppak songs                                                                                                                                                                                 | `git clone ...slopsmith-plugin-stems.git stems`                         |\n| [Invert Highway](https:\u002F\u002Fgithub.com\u002Fmasc0t\u002Fslopsmith-plugin-invert-highway)        | Flip the highway note direction                                                                                                                                                                                                  | `git clone ...slopsmith-plugin-invert-highway.git invert_highway`       |\n| [Jumping Tab](https:\u002F\u002Fgithub.com\u002Frenanboni\u002Fslopsmith-plugin-jumpingtab)            | Yousician-style 2D horizontal tab with trajectory arcs and hopping ball                                                                                                                                                          | `git clone ...slopsmith-plugin-jumpingtab.git jumpingtab`               |\n| [Step Mode](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-stepmode)             | Step-by-step practice mode — highway freezes at each note until played (via Note Detection) or Space                                                                                                                             | `git clone ...slopsmith-plugin-stepmode.git step_mode`                  |\n| [Lyrics Sync](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-lyrics-sync)        | Generate synced LRC lyrics from text + vocals stem via Whisper alignment                                                                                                                                                         | `git clone ...slopsmith-plugin-lyrics-sync.git lyrics_sync`             |\n| [Lyrics Karaoke](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-lyrics-karaoke)  | Per-syllable karaoke pitch ribbon for sloppak songs (Whisper alignment + librosa pYIN)                                                                                                                                           | `git clone ...slopsmith-plugin-lyrics-karaoke.git lyrics_karaoke`       |\n| [NAM Tone Engine](https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-nam-tone)       | In-browser amp modeling with NAM WASM, cabinet IRs, tone auto-switching                                                                                                                                                          | `git clone ...slopsmith-plugin-nam-tone.git nam_tone`                   |\n| [Guitar Theory Lab](https:\u002F\u002Fgithub.com\u002Ftopkoa\u002Fslopsmith-plugin-guitar-theory)      | Explore scales, chords, intervals, tunings, and voicings on a fully interactive fretboard                                                                                                                                        | `git clone ...slopsmith-plugin-nam-tone.git guitar-theory-lab`          |\n| [Themes](https:\u002F\u002Fgithub.com\u002Fmasc0t\u002Fslopsmith-plugin-themes)                        | Offers several basic recolorings of the interface                                                                                                                                                                                | `git clone ...slopsmith-plugin-themes.git themes`                       |\n| [Update Manager](https:\u002F\u002Fgithub.com\u002Fmasc0t\u002Fslopsmith-update-manager)               | Installs, updates, and uninstalls other plugins and the slopsmith core itself                                                                                                                                                    | `git clone ...slopsmith-update-manager.git update_manager`              |\n| [Tuner](https:\u002F\u002Fgithub.com\u002FOmikronApex\u002Fslopsmith-plugin-tuner)                     | Floating tuner with customizable tunings                                                                                                                                                                                         | `git clone ...slopsmith-plugin-tuner.git tuner`                         |\n| [Simplify Chords](https:\u002F\u002Fgithub.com\u002Fbkranendonk\u002Fslopsmith-plugin-simplify-chords) | Changes complex chords on the note highway to simpler ones. Inspired by Ultimate Guitar's Simplify button.                                                                                                                       | `git clone ...slopsmith-plugin-simplify-chords.git simplify-chords`     |\n| [Key Bindings](https:\u002F\u002Fgithub.com\u002Fjackipicco\u002Fslopsmith-plugin-key-bindings)        | Highway key bindings for keyboard and TV remote                                                                                                                                                                                  | `git clone ...slopsmith-plugin-key-bindings.git key_bindings`           |\n| [Folder Organizer](https:\u002F\u002Fgithub.com\u002FElit3d\u002Fslopsmith-plugin-folder-organizer)    | Organize your sloppak DLC songs into a folder tree view, grouped by subfolder name                                                                                                                                               | `git clone ...slopsmith-plugin-folder-organizer.git folder-organizer`   |\n| [SlopScale](https:\u002F\u002Fgithub.com\u002FChrisBeWithYou\u002Fslopsmith-plugin-slopscale)          | Scale, arpeggio, and sweep-arpeggio practice routines with 3D highway, 2D highway, and tab renderers. Pathway selector, CAGED shape-run arpeggios, and generated audio backing.                                                  | `git clone ...slopsmith-plugin-slopscale.git slopscale`                 |\n| [NAM Rig Builder](https:\u002F\u002Fgithub.com\u002FJafz2001\u002Fslopsmith-plugin-nam-rig-builder)    | Map Rocksmith tones to chained NAM neural-amp rigs (tone3000 captures + IRs) — full pedal→amp→cab playback, per-stage bypass, and a gear catalog                                                                                 | `git clone ...slopsmith-plugin-nam-rig-builder.git nam_rig_builder`     |\n| [Audio Preview](https:\u002F\u002Fgithub.com\u002Fsaleemk\u002Fslopsmith-plugin-audio-preview)         | Quick audio previews from library cards with configurable start time, volume, and duration                                                                                                                                       | `git clone ...slopsmith-plugin-audio-preview.git audio_preview`         |\n| [Song Preview](https:\u002F\u002Fgithub.com\u002FDeathlySin\u002Fslopsmith-plugin-song-preview)        | Quickly hear previews of songs in your library with a clean visual indicator of what's playing. Supports .psarc, .sloppak and loose folders song formats, with the visual indicator matching up to whatever theme you are using! | `git clone ...slopsmith-plugin-song-preview.git song_preview`           |\n| [Mobile Note Highway](https:\u002F\u002Fgithub.com\u002Fsaleemk\u002Fslopsmith-plugin-mobile-note-highway) | Touch-optimized player with collapsible controls, highway gestures, and device-adaptive layouts for phones and tablets | `git clone ...slopsmith-plugin-mobile-note-highway.git mobile_note_highway` |\n\nInstall any plugin by cloning it into your `plugins\u002F` directory and restarting:\n\n```bash\ncd plugins\ngit clone https:\u002F\u002Fgithub.com\u002Fbyrongamatos\u002Fslopsmith-plugin-ug.git ultimate_guitar\ndocker compose restart\n```\n\n## Documentation\n\n- [Sloppak format — developer guide](docs\u002Fsloppak-spec.md) — schema, wire format, and how to extend the format with new data types\n- [Sloppak hand-editing — user guide](docs\u002Fsloppak-hand-editing.md) — record your own stem, fix metadata, swap cover art\n- [Diagnostics bundle spec](docs\u002Fdiagnostics-bundle-spec.md) — layout and per-file schemas of the Export Diagnostics bundle\n\n## AI Agent Guide\n\nThis repo includes a [`CLAUDE.md`](CLAUDE.md) file with architecture overview, plugin conventions, and best practices for AI coding agents (Claude Code, etc.). If you're using AI tools to contribute, the guide is picked up automatically. If you're updating conventions or patterns, please keep `CLAUDE.md` in sync.\n\n## Tech Stack\n\n- **Backend**: Python \u002F FastAPI \u002F SQLite \u002F WebSocket\n- **Frontend**: Vanilla JS \u002F Canvas 2D \u002F Tailwind CSS (CDN)\n- **PSARC**: Custom AES-CFB-128 decryptor with in-memory reading\n- **Note Compiler**: F# CLI tool wrapping a third-party MIT-licensed .NET library (see [`rscli\u002FLICENSE`](rscli\u002FLICENSE))\n- **Audio**: vgmstream (WEM decode) \u002F FFmpeg \u002F FluidSynth (MIDI render) \u002F rubberband (pitch shift)\n- **Docker**: Self-contained image with all dependencies\n\n## Running tests\n\nCore library modules have a small pytest suite (pure functions only — no fixtures, no Docker). To run it locally:\n\n```bash\npip install -r requirements.txt -r requirements-test.txt\npytest\n```\n\nCI runs the same suite on every push and PR against `main` (see `.github\u002Fworkflows\u002Ftests.yml`). Contributions adding tests are welcome — the current targets are `lib\u002Ftunings.py` and `lib\u002Fsong.py`; natural follow-ups would be the pure helpers in `lib\u002Fsloppak_convert.py` and the tempo\u002Ftick math in `lib\u002Fgp2rs.py`.\n\n### Browser tests\n\nKeyboard shortcuts and UI interactions are tested with Playwright. To run them:\n\n```bash\n# Start the server first\nDLC_PATH=\u002Fpath\u002Fto\u002Fyour\u002Fdlc docker compose up -d\n\n# Install dependencies\nnpm install\nnpm run install:playwright\n\n# Run tests\nnpm test\n```\n\nSee `tests\u002Fbrowser\u002FREADME.md` for full documentation on browser tests.\n\n## Support Slopsmith\n\nSlopsmith is free, open-source software (AGPL-3.0), built and maintained in\nspare time. Running it — AI-assisted development, code-signing certificates,\nbuild CI, and test\u002Faudio compute — costs money.\n\nIf Slopsmith is useful to you, you can help cover those costs:\n\n- ❤️ **[Patreon](https:\u002F\u002Fpatreon.com\u002FSlopsmith)** — recurring support; patrons get a spot on the [supporter wall](SUPPORTERS.md) and a role in the community Discord.\n- ☕ **[Ko-fi](https:\u002F\u002Fko-fi.com\u002Fslopsmith)** — one-time tip, any amount.\n- 💬 **[Discord](https:\u002F\u002Fdiscord.gg\u002FTzPVK8fNBm)** — join the community (free for everyone).\n\nEven €1 genuinely helps — your support funds open-source software development.\n\n## License\n\nSlopsmith is licensed under the [GNU Affero General Public License v3.0](LICENSE) (AGPL-3.0-only).\n\nYou are free to use, modify, and redistribute Slopsmith — including running it on your own server. If you distribute modified versions, or run a modified version that interacts with users over a network, you must make the corresponding source code available under the same license. See [CONTRIBUTING.md](CONTRIBUTING.md) for contributor terms (DCO sign-off, plugin licensing policy).\n\nBundled and vendored third-party code retains its original license — see [`rscli\u002FLICENSE`](rscli\u002FLICENSE) for the F# wrapper's dependencies, and individual plugin repositories for plugin licenses.\n","Slopsmith 是一个自托管的 Docker Web 应用程序，用于浏览、播放和练习全乐队（吉他、贝斯、键盘、鼓和人声）的交互式乐谱。其核心功能包括一个强大的插件系统，支持多种可视化选项如3D高速公路视图和经典2D视图，并提供丰富的音乐编辑与演奏工具，如实时音符高速公路、同步歌词显示、动态锚点缩放及多种演奏技巧模拟。该应用适用于音乐爱好者和专业音乐人士进行个人练习或团队排练，尤其适合那些希望通过现代化技术手段提升乐器演奏技能的人群。",2,"2026-06-11 04:08:43","high_star"]