Minor text cleanup in comments, configs, and tests
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
# Root-level .dockerignore — applied to the build context for the frontend
|
# Root-level .dockerignore - applied to the build context for the frontend
|
||||||
# (which uses the repo root as context). Keep this list aggressive so the
|
# (which uses the repo root as context). Keep this list aggressive so the
|
||||||
# build context stays small.
|
# build context stays small.
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
# ─── Bach to Basics — environment configuration ─────────────────────────────
|
# ─── Bach to Basics - environment configuration ─────────────────────────────
|
||||||
# Copy this file to .env and customize for your deployment.
|
# Copy this file to .env and customize for your deployment.
|
||||||
# .env is gitignored — never commit secrets.
|
# .env is gitignored - never commit secrets.
|
||||||
|
|
||||||
# ── Authentication ───────────────────────────────────────────────────────────
|
# ── Authentication ───────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@ __pycache__/
|
|||||||
*.key
|
*.key
|
||||||
secrets.*
|
secrets.*
|
||||||
|
|
||||||
# ── Audiveris (large binary — download separately per README) ────────────────
|
# ── Audiveris (large binary - download separately per README) ────────────────
|
||||||
backend/bin/*.jar
|
backend/bin/*.jar
|
||||||
|
|
||||||
# ── OS metadata ───────────────────────────────────────────────────────────────
|
# ── OS metadata ───────────────────────────────────────────────────────────────
|
||||||
|
|||||||
@@ -14,45 +14,45 @@ frontend/public/soundfont/sonivox.sf3
|
|||||||
Used here as the AlphaTab playback soundfont.
|
Used here as the AlphaTab playback soundfont.
|
||||||
|
|
||||||
────────────────────────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────────────────────────
|
||||||
Frontend dependencies (selected — full list in frontend/package.json)
|
Frontend dependencies (selected - full list in frontend/package.json)
|
||||||
────────────────────────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
AlphaTab — MPL-2.0 (sheet music renderer)
|
AlphaTab - MPL-2.0 (sheet music renderer)
|
||||||
PixiJS — MIT (WebGL renderer)
|
PixiJS - MIT (WebGL renderer)
|
||||||
Tone.js — MIT (audio scheduling)
|
Tone.js - MIT (audio scheduling)
|
||||||
smplr — MIT (sample-based instruments)
|
smplr - MIT (sample-based instruments)
|
||||||
WebMidi.js — Apache-2.0 (MIDI input)
|
WebMidi.js - Apache-2.0 (MIDI input)
|
||||||
React — MIT
|
React - MIT
|
||||||
Zustand — MIT
|
Zustand - MIT
|
||||||
Vite — MIT
|
Vite - MIT
|
||||||
Tailwind CSS — MIT
|
Tailwind CSS - MIT
|
||||||
|
|
||||||
MPL-2.0 note: AlphaTab is consumed unmodified as an npm dependency. MPL-2.0
|
MPL-2.0 note: AlphaTab is consumed unmodified as an npm dependency. MPL-2.0
|
||||||
is per-file copyleft — if you modify AlphaTab's own source files you must
|
is per-file copyleft - if you modify AlphaTab's own source files you must
|
||||||
share those changes under MPL-2.0, but the rest of this codebase remains
|
share those changes under MPL-2.0, but the rest of this codebase remains
|
||||||
under MIT.
|
under MIT.
|
||||||
|
|
||||||
────────────────────────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────────────────────────
|
||||||
Backend dependencies (selected — full list in backend/requirements.txt)
|
Backend dependencies (selected - full list in backend/requirements.txt)
|
||||||
────────────────────────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
music21 — LGPL-3.0 (music theory + MusicXML)
|
music21 - LGPL-3.0 (music theory + MusicXML)
|
||||||
FastAPI — MIT
|
FastAPI - MIT
|
||||||
defusedxml — PSF-2.0
|
defusedxml - PSF-2.0
|
||||||
pianoplayer — MIT (Parncutt fingering algorithm)
|
pianoplayer - MIT (Parncutt fingering algorithm)
|
||||||
yt-dlp — Unlicense (YouTube audio extraction)
|
yt-dlp - Unlicense (YouTube audio extraction)
|
||||||
pdf2image — MIT
|
pdf2image - MIT
|
||||||
Basic Pitch (optional) — Apache-2.0 (audio → MIDI transcription)
|
Basic Pitch (optional) - Apache-2.0 (audio → MIDI transcription)
|
||||||
|
|
||||||
LGPL note (music21): used as a pure Python library import, unmodified.
|
LGPL note (music21): used as a pure Python library import, unmodified.
|
||||||
|
|
||||||
────────────────────────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────────────────────────
|
||||||
Optional external tools (NOT bundled — user installs separately)
|
Optional external tools (NOT bundled - user installs separately)
|
||||||
────────────────────────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
Audiveris 5.x — AGPL-3.0 (PDF → MusicXML OMR)
|
Audiveris 5.x - AGPL-3.0 (PDF → MusicXML OMR)
|
||||||
|
|
||||||
Audiveris is invoked as a subprocess if the user places audiveris.jar at
|
Audiveris is invoked as a subprocess if the user places audiveris.jar at
|
||||||
backend/bin/. Because it's distributed separately by the user (and is
|
backend/bin/. Because it's distributed separately by the user (and is
|
||||||
optional), the AGPL obligations apply only to anyone redistributing the
|
optional), the AGPL obligations apply only to anyone redistributing the
|
||||||
JAR or hosting Audiveris itself — not to this codebase.
|
JAR or hosting Audiveris itself - not to this codebase.
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ describe("AccuracyTracker", () => {
|
|||||||
bus.emit("note:on", note);
|
bus.emit("note:on", note);
|
||||||
bus.emit("input:note:on", { midi: 60, velocity: 80 }); // correct hit
|
bus.emit("input:note:on", { midi: 60, velocity: 80 }); // correct hit
|
||||||
const countBefore = updates.length;
|
const countBefore = updates.length;
|
||||||
bus.emit("note:off", note); // already hit — should not emit again
|
bus.emit("note:off", note); // already hit - should not emit again
|
||||||
|
|
||||||
// No new accuracy:update should have been emitted for the note:off
|
// No new accuracy:update should have been emitted for the note:off
|
||||||
expect(updates.length).toBe(countBefore);
|
expect(updates.length).toBe(countBefore);
|
||||||
@@ -247,7 +247,7 @@ describe("AccuracyTracker", () => {
|
|||||||
bus.emit("transport:seek", { seconds: 5 }); // clears pending
|
bus.emit("transport:seek", { seconds: 5 }); // clears pending
|
||||||
|
|
||||||
const countBefore = updates.length;
|
const countBefore = updates.length;
|
||||||
bus.emit("note:off", note); // pending was cleared — should be a no-op
|
bus.emit("note:off", note); // pending was cleared - should be a no-op
|
||||||
|
|
||||||
// No new accuracy:update should have fired
|
// No new accuracy:update should have fired
|
||||||
expect(updates.length).toBe(countBefore);
|
expect(updates.length).toBe(countBefore);
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ describe("MidiClock", () => {
|
|||||||
mockTransport.seconds = 2;
|
mockTransport.seconds = 2;
|
||||||
expect(clock.currentSeconds).toBe(5);
|
expect(clock.currentSeconds).toBe(5);
|
||||||
|
|
||||||
// Change multiplier — currentSeconds must remain 5
|
// Change multiplier - currentSeconds must remain 5
|
||||||
clock.tempoMultiplier = 0.5;
|
clock.tempoMultiplier = 0.5;
|
||||||
expect(clock.currentSeconds).toBeCloseTo(5);
|
expect(clock.currentSeconds).toBeCloseTo(5);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ describe("lighten", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("handles zero channel values", () => {
|
it("handles zero channel values", () => {
|
||||||
// Red only — green and blue stay 0
|
// Red only - green and blue stay 0
|
||||||
// Math.round(255 * 0.5) = Math.round(127.5) = 128 = 0x80
|
// Math.round(255 * 0.5) = Math.round(127.5) = 128 = 0x80
|
||||||
expect(lighten(0xff0000, 0.5)).toBe(0x800000);
|
expect(lighten(0xff0000, 0.5)).toBe(0x800000);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user