# Python
__pycache__/
*.py[cod]
*$py.class
*.egg-info/
dist/
build/

# Tooling caches (pytest writes its own .gitignore inside its cache dir)
.mypy_cache/

# Config (user-specific files; midi-map.yaml.default is tracked)
config.yaml
midi-map.yaml
midi-map-*.yaml

# Logs
*.log

# OS-generated thumbnail and metadata files
Thumbs.db
ehthumbs.db
.DS_Store
desktop.ini

# Audio and video files — never tracked anywhere in the repo.
*.wav
*.flac
*.aiff
*.aif
*.ogg
*.mp3
*.mpeg
*.m4a
*.wma
*.opus
*.mp4
*.mkv
*.avi
*.mov

# Analysis sidecars — generated locally, not tracked, EXCEPT the shipped GM
# reference fingerprints under subsample/data/reference/ (package data,
# re-tracked below).
*.analysis.json

# Preview PNGs — generated alongside each sample for OS file-manager
# thumbnails; regeneratable via scripts/regen_previews_png.py from the
# audio + analysis sidecar, so there's no reason to track them.
*.preview.png

# Shipped product data (subsample/data/) is package data and must stay
# trackable, so re-include the maps and reference fingerprints that the broad
# `midi-map-*.yaml` / `*.analysis.json` patterns above would otherwise ignore.
# Audio is deliberately NOT re-included — data/ ships fingerprints, never WAVs.
!subsample/data/*.yaml
!subsample/data/reference/*.analysis.json

# Third-party sample-browser databases (e.g. Sononym writes sononym.db into
# any folder it scans).  Never tracked anywhere under samples/.
samples/**/*.db

# samples/ — only these four subdirectories belong to the repo.  Each commits
# an empty directory (via .gitkeep) and ignores its own contents through its
# own .gitignore.  samples/reference/ is extract_gm_drums.py's working area; the
# GM reference sidecars that ship are package data under
# subsample/data/reference/.  Everything else under samples/ — other capture
# folders, personal or scratch working sets — is local-only and never tracked.
!samples/
samples/*
!samples/captures/
!samples/instrument/
!samples/reference/
!samples/variant-cache/

# Documentation build output
docs/html/
docs/*.html

# Project metadata and instructions
README-AGENTS.md
AGENT-INSTRUCTIONS.md
.vscode/

# Claude Code — local only, never commit
CLAUDE.local.md
.claude/
