Free, open-source desktop guitar practice app with real-time pitch detection and scrolling tab playback β a lightweight Yousician alternative.
Yousician is great but expensive for continuous use, and there's no good free alternative that combines Guitar Pro tab playback with live pitch detection. PickHero fills that gap: load any Guitar Pro tab file (GP3/GP4/GP5/GP7/GP8), plug in your guitar via a cheap USB cable, and practice with real-time visual feedback β all without an internet connection or subscription.
Designed to run on modest hardware (tested on an HP ProBook 650 G5 laptop). No ML models, no GPU required.
ββββββββββββββββ βββββββββββββββββ ββββββββββββββββββββ
β Audio Input ββββββΆβ Pitch Engine ββββββΆβ Note Matcher β
β (sounddevice) β β (aubio YIN) β β (compare to tab) β
ββββββββββββββββ βββββββββββββββββ ββββββββββ¬ββββββββββ
β
ββββββββββββββββ βββββββββββββββββ β
β Tab Loader ββββββΆβ Tab Timeline ββββββββββββββββ
β (PyGuitarPro)β β (note events) β
ββββββββββββββββ βββββββββ¬ββββββββ
β
βββββββββΌββββββββ
β Scrolling UI β
β (PyGame) β
β + feedback β
βββββββββββββββββ
Guitar Pro tabs scroll across the screen while the app listens to your guitar input, detects the notes you play in real-time using the YIN pitch detection algorithm, and shows visual feedback (hit / miss / close) synchronized with the tab timeline.
Electric guitar β USB guitar cable (1/4" TS to USB-A, ~β¬12-15) β PC. The cable appears as a standard "USB Audio Device" in Windows. For hearing yourself while playing, use a regular guitar amp alongside or split the signal β the USB cable is input-only for detection.
A regular microphone also works for acoustic guitar or as a quick test, though a direct USB connection gives cleaner detection.
PickHero reads Guitar Pro files (.gp3, .gp4, .gp5, .gp7, .gp8). You can get tabs from:
- Songsterr β 1M+ songs, GP5 download via built-in downloader
- GProTab.net β 70K+ free Guitar Pro files
- TuxGuitar β free editor for creating your own tabs
- Ultimate Guitar β GP files available (some require subscription)
| Component | Library | Why |
|---|---|---|
| Audio capture | sounddevice |
Works with any USB audio device, low latency |
| Pitch detection | aubio (YIN) |
Real-time, pure C, tiny footprint |
| Onset detection | aubio |
Detects note strikes for timing |
| Tab parsing | pyguitarpro |
Reads GP3/GP4/GP5 structured data |
| UI | pygame |
Game-loop oriented, fast rendering |
| Audio playback | pygame.midi |
Real-time MIDI backing tracks via system synth |
| Packaging | PyInstaller |
Single .exe for Windows |
Grab PickHero.exe from the latest release. No Python install needed β just run it.
# Clone
git clone https://github.com/Artemarius/PickHero.git
cd PickHero
# Install dependencies
pip install -r requirements.txt
# Run
python -m pickhero- Windows 10/11 (primary target; Linux/macOS may work but untested)
- A USB audio input device (guitar cable or microphone)
- Python 3.10+ (only if running from source)
PickHero/
βββ pickhero/
β βββ main.py # Entry point
β βββ audio/
β β βββ input.py # sounddevice audio capture
β β βββ detector.py # aubio pitch + onset detection
β β βββ midi_playback.py # MIDI backing track playback
β β βββ note_utils.py # frequency β note/string/fret mapping
β βββ tabs/
β β βββ loader.py # pyguitarpro file reader
β β βββ timeline.py # song timeline data structure
β β βββ downloader.py # Songsterr tab fetcher
β βββ ui/
β β βββ app.py # main game loop / window
β β βββ scrolling.py # scrolling note highway renderer
β β βββ colors.py # color constants, string palette
β β βββ calibration_menu.py # guitar calibration wizard
β β βββ device_menu.py # audio input device selector
β β βββ feedback.py # hit/miss visual effects
β β βββ menu.py # song selection, settings
β βββ config.py # user settings, audio device config
β βββ matcher.py # note matching engine (hit/close/miss)
β βββ progress.py # per-song score tracking + section history
β βββ recommendations.py # practice suggestion engine
βββ assets/
β βββ fonts/
βββ songs/ # local GP5 tab storage
βββ tests/
Under active development β see Development Phases below.
Audio Detection PoC βDonesounddevice+aubiopitch detection, console outputTab Parser & Timeline β GP5 loading viaDonepyguitarpro, timeline data structureScrolling Display MVP β PyGame window with 6 string lanes, tempo-synced scrollingDoneLive Matching & Feedback β pitch comparison, hit/miss visuals, accuracy scoringDonePolish β tempo control, section looping, device selector, backing tracks, count-in, progress tracking, song browser, difficulty filter, themes, practice recommendations,Done.exepackagingWait Mode β beginner-friendly practice mode that pauses playback when you haven't played the correct note, resumes instantly when you do. Toggle with W during playback.Done
No notes detected / no signal:
- Turn up the volume knob on your guitar (most common gotcha!)
- Check the pickup selector is in a live position (bridge or neck, not between clicks)
- Unplug and re-plug the USB cable at both ends
- Use a rear motherboard USB port, not a front panel or hub
- In Windows:
Settings > System > Sound > Inputβ select "USB Audio" and check the volume slider isn't at zero. You should see the input meter move when you strum.
Testing your setup:
Run python -m pickhero --console to see detected notes printed live in the terminal. This helps isolate whether the issue is hardware (no signal) or software (signal present but not matching).
Audio detection not working in-game:
- Audio detection is enabled by default. If you turned it off, press A during playback to re-enable it. The bottom status bar should show
A: audio ON. - Press D on the menu screen to select the correct audio input device.
- Press G on the menu screen to run guitar calibration β this improves detection accuracy by learning your guitar's actual frequencies.
Beginner tip β Wait Mode:
- Press W during playback to enable wait mode. The tab will pause whenever you haven't played the correct note yet and resume the moment you do. Great for learning new songs at your own pace without accumulating misses.
High latency or missed notes:
- Lower the noise gate with X during playback (default is -60 dB)
- Cheap USB cables can add 10-20ms of latency β this is usually fine but noticeable on fast passages
- Slow the song down with PgDn while practicing
- Press H during playback to see a full help overlay with controls and color legend
- aubio β pitch/onset detection
- PyGuitarPro β GP file parser
- TabRiPP β Songsterr GP5 downloader (reference for API approach)
- AlphaTab β JS tab rendering engine (UI reference)
- TuxGuitar β free Guitar Pro editor
MIT