Slopsmith
Self-contained Docker web app for browsing, playing, and practicing Rocksmith 2014 CDLC
Install / Use
/learn @byrongamatos/SlopsmithREADME
Slopsmith
A self-contained web application for browsing, playing, and practicing Rocksmith 2014 Custom DLC (CDLC). Runs entirely in Docker — no local dependencies required.

Features
Library Browser
- Grid View — album art cards with arrangement badges, tuning, lyrics indicator
- Artist/Album Tree View — hierarchical browser with letter filter (A-Z), expandable artist and album groups
- Search — filter by song title, artist, or album name
- Sort — by artist, title, recently added, or tuning
- Favorites — mark songs with a heart, browse favorites in a dedicated view
- Edit Metadata — update song title, artist, album, and album art directly from the library
- Retune to E Standard — pitch-shift songs in Eb/D/C#/C Standard to E Standard with one click
Note Highway Player
A real-time canvas-based note highway that renders Rocksmith arrangements as they would appear in the game.
Note rendering:
- Fret-positioned notes with string colors (red, orange, blue, orange, green, purple)
- Open string bars spanning the highway
- Chord brackets connecting chord notes with chord name labels
- Sustain tails that stay visible until the sustain finishes
Techniques:
- Bends with curved arrows and labels (1/2, full, 1-1/2, 2)
- Unison bends with dashed connector and "U" label
- Slides (diagonal arrow)
- Hammer-ons / Pull-offs / Taps (H/P/T labels)
- Palm mutes (PM label)
- Tremolo (wavy line)
- Accents (> marker)
- Harmonics (diamond shape)
- Pinch harmonics (diamond + PH label)
Additional features:
- Synced lyrics display (phrase-based, multi-row, karaoke highlighting) — toggleable
- Dynamic anchor zoom — fret range adjusts smoothly, looks ahead at upcoming notes
- Arrangement switcher — switch between Lead, Rhythm, Bass during playback
- Speed control — continuous slider from 0.25x to 1.50x
- Volume control
Practice Tools
- A-B Looping — set start (A) and end (B) points to repeat a section
- Saved Loops — name and save multiple loop sections per song, persisted across sessions
- 4-Count Click — tempo-matched metronome count-in (1-2-3-4) before each loop repetition
- Rewind Effect — highway smoothly rewinds to the loop start point
CDLC Creation
- Create from Guitar Pro Tab — search Ultimate Guitar for GP3/GP4/GP5 tabs and convert them to playable CDLC with MIDI audio (available as a plugin)
Compatibility
- Supports both custom CDLC (from CustomsForge, etc.) and official Rocksmith DLC
- Official DLC: automatically converts SNG binary files to XML via built-in RsCli tool
- Reads arrangement names from manifest JSON (accurate Lead/Rhythm/Bass identification)
Scalability
- In-memory PSARC scanning — reads metadata without writing to disk
- Parallel scanning — 8-thread metadata extraction
- Server-side pagination and search — SQLite-backed, handles 80,000+ songs
- Non-blocking scan — browse already-scanned songs while import continues in background
Quick Start
Prerequisites
- Docker and Docker Compose
Run
-
Clone the repository:
git clone https://github.com/byrongamatos/slopsmith.git cd slopsmith -
Set your DLC folder path and start:
DLC_PATH=/path/to/your/Rocksmith2014/dlc docker compose up -d -
Open http://localhost:8000 in your browser.
On 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.
Configuration
- DLC Folder — set in Settings or via the
DLC_PATHenvironment variable - Default Arrangement — choose Lead, Rhythm, or Bass as the default when opening songs (Settings)
Docker Compose Example
services:
web:
build: .
ports:
- "8000:8000"
volumes:
# Mount your Rocksmith DLC folder
- /path/to/Rocksmith2014/dlc:/dlc
# Persistent config, cache, and favorites
- slopsmith-config:/config
# Optional: mount plugins for development
# - ./plugins:/app/plugins
environment:
- DLC_DIR=/dlc
- CONFIG_DIR=/config
volumes:
slopsmith-config:
Plugins
Slopsmith supports a plugin system for extending functionality. Plugins can add navigation links, screens, settings sections, and API routes — all discovered automatically at startup.
Installing a Plugin
Drop the plugin folder into the plugins/ directory (or mount it as a Docker volume):
plugins/
my_plugin/
plugin.json
routes.py
screen.html
screen.js
settings.html (optional)
Then restart the container. The plugin's nav link, screen, and settings will appear automatically.
Plugin Structure
Each plugin requires a plugin.json manifest:
{
"id": "my_plugin",
"name": "My Plugin",
"version": "1.0.0",
"nav": {
"label": "My Feature",
"screen": "my-screen"
},
"screen": "screen.html",
"script": "screen.js",
"settings": { "html": "settings.html" },
"routes": "routes.py"
}
| Field | Required | Description | |------------|----------|------------------------------------------------------------------| | id | Yes | Unique identifier, used in API paths | | name | Yes | Display name | | nav | No | Navigation link with label and screen ID | | screen | No | HTML file for the plugin screen content | | script | No | JavaScript file loaded after the screen is injected | | settings | No | Object with html field pointing to a settings HTML fragment | | routes | No | Python module with a setup(app, context) function for API routes |
Plugin API Routes
The routes.py module must export a setup(app, context) function:
def setup(app, context):
config_dir = context["config_dir"] # Path to config directory
get_dlc_dir = context["get_dlc_dir"] # Function returning DLC Path
meta_db = context["meta_db"] # MetadataDB instance
extract_meta = context["extract_meta"] # Function to extract PSARC metadata
@app.get("/api/plugins/my_plugin/search")
def search(q: str):
# Your logic here
return {"results": []}
Routes are registered under /api/plugins/{plugin_id}/ to avoid conflicts.
Plugin Frontend
screen.html— HTML fragment (no<html>or<body>tags). Injected into a<div class="screen">container.screen.js— JavaScript loaded after the HTML. Has access to all core functions (showScreen(),esc(),formatTime(), etc.).settings.html— HTML fragment injected into the Settings page.
Available Plugins
| Plugin | Description | Install |
|--------|-------------|---------|
| Create from Tab | Search Ultimate Guitar for GP tabs and convert to playable CDLC | git clone ...slopsmith-plugin-ug.git ultimate_guitar |
| Import Tab | Drag and drop Guitar Pro files to create CDLC | git clone ...slopsmith-plugin-tabimport.git tab_import |
| Practice Journal | Auto-track practice time, speed, loops. Dashboard with charts | git clone ...slopsmith-plugin-practice.git practice_journal |
| Setlist Builder | Create ordered playlists with sequential playback | git clone ...slopsmith-plugin-setlist.git setlist |
| Metronome | Audible click and visual beat flash synced to song tempo | git clone ...slopsmith-plugin-metronome.git metronome |
| Tone Player | View amp/pedal/cab signal chains with Rocksmith gear artwork | git clone ...slopsmith-plugin-tones.git tones |
| Fretboard View | Live fretboard overlay showing active notes in real-time | git clone ...slopsmith-plugin-fretboard.git fretboard |
| Tab View | Scrolling guitar tablature notation via alphaTab | git clone ...slopsmith-plugin-tabview.git tab_view |
| MIDI Amp Control | Auto-switch amp/modeler presets via MIDI on tone changes | git clone ...slopsmith-plugin-midi.git midi_amp |
| Section Map | Color-coded song structure minimap with clickable navigation | git clone ...slopsmith-plugin-sectionmap.git section_map |
| RS1 Extractor | Extract RS1 compatibility songs into individual CDLCs | git clone ...slopsmith-plugin-rs1extract.git rs1_extract |
| Base Game Extractor | Extract on-disc base game songs from songs.psarc into individual CDLCs | git clone ...slopsmith-plugin-discextract.git disc_extract |
| 3D Highway | Three.js 3D perspective highway view as an alternative to the 2D canvas | git clone ...slopsmith-plugin-3dhighway.git 3dhighway |
| Arrangement Editor | DAW-like visual editor for creating and editing CDLC note charts | git clone ...slopsmith-plugin-editor.git editor |
| Profile Import | Import play counts, favorites, and scores from Rocksmith profiles | `git clo
