-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
95 lines (78 loc) · 3.27 KB
/
Copy pathpyproject.toml
File metadata and controls
95 lines (78 loc) · 3.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "stemforge"
version = "0.1.0"
description = "Local, GPU-accelerated audio workstation: stem separation, MIDI transcription, BPM time-stretch, drum decomposition."
readme = "README.md"
requires-python = ">=3.10,<3.12"
license = { text = "MIT" }
authors = [{ name = "Mac McFall" }]
# --- Core deps: pure-Python / no framework conflict. Safe to install anywhere. ---
# NOTE: torch / torchaudio are intentionally NOT listed here. Install them FIRST
# from the CUDA-matched index (see README §Install), then `pip install -e .[all]`.
dependencies = [
"numpy>=1.24,<2.2",
"soundfile>=0.12",
"librosa>=0.10",
"pyyaml>=6.0",
"typer>=0.15", # older typer + Click 8.4 = make_metavar TypeError
"rich>=13.0",
"tqdm>=4.66",
"pretty_midi>=0.2.10",
"mido>=1.3",
"pyloudnorm>=0.1.1", # ReplayGain/LUFS fallback when Essentia is absent
]
[project.optional-dependencies]
# Stem + drum separation (needs torch installed first).
separation = ["demucs>=4.0.1"]
# SOTA separation (BS-Roformer & the UVR model zoo) via audio-separator.
# WARNING: install this into the ISOLATED venv only (`stemforge setup-sota`
# provisions <project>/.venv-uvr) — NEVER into the main env: on Windows/py3.11
# it replaced torch 2.6.0+cu124 with CPU-only torch and bumped numpy to 2.4.x,
# breaking the demucs GPU stack. StemForge calls it via subprocess.
separation-sota = ["audio-separator[gpu]>=0.44"]
# Tempo / beat / downbeat. beat_this is the primary engine (PyTorch, no numpy pin).
# If the PyPI name resolves, great; otherwise install from git (see README).
beats = ["beat-this>=0.1.0"]
# Melodic -> MIDI. ONNX Runtime ONLY (no TensorFlow) per design §3.
midi = ["onnxruntime-gpu>=1.17"]
# Convenience note-postprocessing helpers from Spotify's package.
# WARNING: this pulls TensorFlow and can collide with the torch CUDA stack.
# Use ONLY if you understand the tradeoff; the ONNX path (extra `midi`) is preferred.
midi-tf = ["basic-pitch>=0.4.0"]
# Time-stretch. pyrubberband needs the system `rubberband` CLI (see README).
stretch = ["pyrubberband>=0.3.0", "python-stretch>=0.3.0"]
# Local web app — bespoke FastAPI backend + a static single-page front-end
# (served by uvicorn; no Gradio). python-multipart handles file uploads.
ui = ["fastapi>=0.110", "uvicorn>=0.29", "python-multipart>=0.0.9"]
# Everything pip-installable and conflict-free in one go (excludes torch + TF).
all = [
"demucs>=4.0.1",
"beat-this>=0.1.0",
"onnxruntime-gpu>=1.17",
"pyrubberband>=0.3.0",
"python-stretch>=0.3.0",
"fastapi>=0.110",
"uvicorn>=0.29",
"python-multipart>=0.0.9",
]
dev = ["pytest>=8.0", "ruff>=0.5", "mypy>=1.10", "httpx>=0.27"]
[project.scripts]
stemforge = "stemforge.cli:app"
[project.urls]
Homepage = "https://github.com/MacFall7/Stem-Forge"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
stemforge = ["py.typed", "web/*.html", "web/assets/*"]
[tool.ruff]
line-length = 100
target-version = "py311"
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-q"
# Put the repo root on sys.path so tests can import the top-level `benchmarks`
# package under a bare `pytest` invocation (CI), matching `python -m pytest`.
pythonpath = ["."]