Spaces:
Sleeping
Sleeping
Commit History
-
Winner-takes-all drum transcription + harsher piano rhythm gridβ
Ewan +1: Claude Opus 4.6Drums: NMF components all fire at every onset (broadband), so switched from independent peak-picking per component to winner-takes-all β detect onsets once, assign each to the component with highest activation. Only allows kick+cymbal secondary when >60% of primary. Cymbal sub-classified by decay envelope (hihat/crash/ride). Piano: cap dominant rhythm bins at 4 (was 6), raise merge threshold to 2x median (was 1.5x), reduce RH concurrent to 3/2 complex/normal (was 4/3), increase final consolidation snap to 100ms. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8b89f6d -
Fix peak_pick dtype error in NMF drum transcriptionβ
Ewan +1: Claude Opus 4.6Cast novelty array to float64 and ensure all peak_pick parameters are native Python types. The Cython ufunc __peak_pick requires float64 input and fails with numpy arrays of other dtypes from NMF decomposition. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8784d79 -
NMF-based drum transcription, wider final rhythm snapβ
Ewan +1: Claude Opus 4.6Replace spectral threshold drum classification with NMF decomposition. Decomposes the magnitude spectrogram into 3 frequency-sorted components (kick/snare/cymbal) using sklearn NMF via librosa.decompose. Extracts onsets from each activation curve using half-wave rectified first difference with peak picking. Cymbal onsets sub-classified into hihat/crash/ride by decay envelope analysis. This is the standard MIR approach (Wu & Lerch 2015) and fundamentally more robust than per-onset spectral feature classification. Piano: increase final rhythm consolidation snap from 60ms to 80ms for more aggressive cleanup of stray timing after playability filters. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>15d315f -
Fix drum classification and tighten piano rhythm gridβ
Ewan +1: Claude Opus 4.6Drums: rewrite classification as priority decision tree instead of multi-label independent detection. Key changes: - Kick requires sub_bass_r > 25% (was low_r > 35%), much less false positives - Snare distinguished from toms by mid_flatness > 0.04 (noise from wires) - Toms get proper detection path (low flatness + mid frequency = tonal) - Simultaneous kick+cymbal only when both bands are clearly independent - Single-path returns prevent over-classification Piano rhythm: cap dominant bins at 6 (was 8), raise min_count to 4%/3. Add 8th-note fallback grid so notes too far from dominant positions still get quantized rather than being left unsnapped. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>cb9bb7e -
Real drum samples from LinnDrum CDN, tighter rhythm and fewer notesβ
Ewan +1: Claude Opus 4.6Replace synthesized drum samples with real LinnDrum (LM-2) recordings from smpldsnds CDN (OGG format, CORS-enabled). Removes 412KB base64 module, bundle drops from 919KB to 497KB. Piano rhythm: rewrite consolidate_rhythm to pick top bins by count (capped at 8 max) instead of threshold-based selection. Increase max_snap to 60ms. Reduce concurrent note limits (RH: 4->3, LH: 2->1 for normal; 5->4, 3->2 for complex). Raise merge_repeated_notes energy threshold from 1.2x to 1.5x median so more re-attacks merge into sustains. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f8777bb -
Sample-based drum kit and tighter rhythm snappingβ
Ewan +1: Claude Opus 4.6Replace synthesized drums with DSP-generated WAV samples encoded as base64 in a JS module (no binary files). Kick/snare/hihat/crash/ride/toms use proper filtered synthesis (scipy bandpass, layered noise+sine) rendered offline for much better sound quality than real-time Tone.js synthesis. Loaded via Tone.Players from data URIs. Piano: tighten rhythm consolidation - dominant bin threshold raised to 25%/5%, add second consolidation pass (Step 9) after all note manipulation with 60ms snap range to catch notes shifted off-grid by CQT extension and playability filters. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8fbe43c -
Tighten rhythm snapping and fix drum syncβ
Ewan +1: Claude Opus 4.6Piano: increase consolidate_rhythm max_snap from 40ms to 50ms, tighten dominant bin threshold from 15%/3% to 25%/5% so fewer subdivisions qualify and notes snap to a cleaner rhythmic grid. Drums: add global offset correction step that measures median timing drift between drum events and audio onsets, then shifts all events to compensate. This fixes drums being out of sync with the original audio overlay. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>84b4faf
-
Fix drum transcription and playback soundsβ
Ewan +1: Claude Opus 4.6Rewrite drum transcription: single-pass full-band onset detection with multi-label spectral classification (replaces overlapping sub-band approach that caused misclassification). Adds beat-grid quantization and velocity normalization. Replace MetalSynth cymbals with filtered NoiseSynth for more realistic hi-hat/crash/ride sounds. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b7f2b6f -
LH anchors on melody (top note), enforce span on concurrent notes tooβ
Ewan +1: Claude Opus 4.6Fundamental voicing philosophy change: both hands now protect the MELODY (highest note) and build harmonics downward. Previously LH protected the bass (lowest note), which led to wide unplayable voicings. Changes across three functions: - enforce_hand_span: Now checks concurrent sounding notes (sustained overlaps), not just chord groups. Both hands anchor on highest note. Sustained notes exceeding span get trimmed rather than removed. - limit_concurrent_notes: LH now protects highest (melody) not lowest - limit_total_concurrent: Same - LH protects melody voice - remove_hand_outliers: Both hands flag lowest outlier, protecting melody Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9c5db09 -
Add 15s timeout fallback for sample loadingβ
Ewan +1: Claude Opus 4.6Prevents the app from getting stuck forever on 'loading piano sounds' if the Salamander CDN is slow or unreachable. After 15 seconds, proceeds with whatever samples have loaded β Tone.js interpolates missing notes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>0ff9816 -
Enforce hand span limit β no chord wider than an octave per handβ
Ewan +1: Claude Opus 4.6New enforce_hand_span() step based on empirical pianist hand span data (Boyle et al. 2015, n=473): average adult comfortable span is 12 semitones (one octave), with 14-16 being a stretch for large hands. For each chord, if any hand spans more than 12 semitones: - RH: protects melody (highest note), removes lowest until span fits - LH: protects bass (lowest note), removes highest until span fits This catches physically impossible voicings that passed the note-count limiter β e.g. 2 notes spanning 15 semitones is within the count limit but unplayable for most pianists. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5c1af8d -
Merge repeated same-pitch notes into sustains, increase drum detection sensitivityβ
Ewan +1: Claude Opus 4.6Piano: New merge_repeated_notes() step (7c) checks onset energy at re-attack points of consecutive same-pitch notes. If re-attack energy is below 1.2x the median onset strength, the notes are merged into one sustained note instead of stuttering re-strikes. Preserves real repeated notes with genuine attack energy. Drums: Significantly increased detection sensitivity: - Hi-hat band: delta 0.05->0.03, RMS threshold 0.003->0.001, wait 3->2 - Mid band: delta 0.06->0.04, RMS 0.005->0.003, wait 3->2 - Low band: delta 0.08->0.06 - Added full-band safety net pass (catches hits all sub-bands miss) - Improved fallback classifier for full-band-only detections - Merge window 25ms->30ms for better cross-band alignment Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f474670 -
Add rhythm consolidation step to discipline note onsetsβ
Ewan +1: Claude Opus 4.6After onset correction pulls notes toward audio onsets, stray timings can scatter across many micro-positions, losing rhythmic clarity. New consolidate_rhythm() step: 1. Builds histogram of note positions within each beat (16 bins = 16th notes) 2. Identifies dominant subdivisions (bins with significant note density) 3. Re-snaps stray onsets to the nearest dominant position (within 40ms) Notes already on dominant positions are untouched. This preserves the melodic contour while disciplining timing to the song's actual rhythmic pattern. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1f67352 -
Remove hand outlier harmonics, rewrite drum transcription with multi-band detectionβ
Ewan +1: Claude Opus 4.6Piano: Add remove_hand_outliers step that detects notes isolated from their hand cluster (>7 semitones from nearest neighbor). Catches high harmonics in LH and low harmonics in RH that cannot be physically played. Drums: Rewrite transcription with sub-band onset detection - filters into low (<250Hz), mid (200-5000Hz), high (>3000Hz) bands and detects onsets independently. Classification based on which bands triggered (e.g. snare = mid+high, kick = low-only, hihat = high-only). Handles simultaneous hits naturally. Uses 5-band spectral energy aligned to actual drum physics. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>79912b8 -
Use solo piano optimizer for full-song melodic stem, reduce LH bass notesβ
Ewan +1: Claude Opus 4.6Switch full-song pipeline from optimize_other to the full solo piano optimizer for the melodic stem β produces much better rhythm, playability, and note accuracy. Also reduces left-hand concurrent notes limit (2 normal, 3 complex) to avoid muddy bass chords while keeping right hand at 4-5. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>aa08171 -
Fix MetalSynth API (HH/ride/crash) and use mix audio for beat trackingβ
Ewan +1: Claude Opus 4.6- MetalSynth.triggerAttackRelease in Tone.js v14+ requires frequency as first param: (freq, duration, time, velocity). Old code used r13 sig (duration, time, velocity) which silently failed. Now passes explicit Hz values for hihat (400), crash (300), ride (500). - Use original mixed audio for beat tracking in optimize_other instead of the separated stem. The full mix has drums/bass which drive the beat, giving much more accurate tempo detection and beat grid. Onset detection still uses the clean separated stem. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>ecae4b3 -
Fix piano roll quality, drum sounds, add original audio playback, fix speedβ
Ewan +1: Claude Opus 4.6- Add playability limits to full-song optimizer (limit_concurrent_notes, limit_total_concurrent, remove_harmonic_ghosts) β reduces note count to physically playable levels - Fix drum hi-hat not audible: increase MetalSynth volume -12 -> -4dB, extend trigger duration 32n -> 16n, boost crash/ride volumes too - Add original audio playback: new /api/jobs/{id}/audio endpoint serves uploaded file back, HTML Audio element synced to Transport with toggle button + volume slider in Controls - Fix speed scaler: preserve playbackRate via tempoRef across scheduleNotes reschedules (transport.stop() was losing the rate) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b5c16f8 -
Replace madmom with librosa for drum onset detectionβ
Ewan +1: Claude Opus 4.6madmom requires git install + Cython compilation which fails in HF Docker build. Since Demucs already isolates a clean drums stem, librosa onset detection works well without the extra dependency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>00c09df -
Add drum transcription with madmom onset detection + spectral classificationβ
Ewan +1: Claude Opus 4.6New feature: Drums tab in full song mode. Uses madmom RNNOnsetProcessor for high-quality onset detection on the Demucs drums stem, then classifies each hit (kick/snare/hi-hat/crash/ride/tom) by spectral content using librosa features (centroid, flatness, ZCR, frequency band energy). - transcriber/drums.py: drum transcription pipeline - DrumSheet.jsx: lane-based drum grid renderer (color-coded by instrument, diamonds for cymbals, X for hi-hat, circles for kick/snare/toms) - usePlayback.js: synthesized drum kit (MembraneSynth for kick/toms, NoiseSynth+MembraneSynth for snare, MetalSynth for hi-hat/crash/ride) - Dockerfile: install madmom from git (PyPI version incompatible with 3.12) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>eed42a3
-
Fix bass in piano roll, upgrade guitar samples, improve bass optimizerβ
Ewan +1: Claude Opus 4.6- Piano roll: use pianoRollNotes (bass filtered) for audio scheduling, not full notes array. Bass was bleeding through to piano playback. - Guitar samples: switch from Magenta SGM+ (sparse MP3 every 3 semitones) to tonejs-instruments (University of Iowa chromatic OGG recordings for acoustic, Karoryfer for electric). Much warmer, less tinny. - Bass optimizer: add pitch floor (E1=28), percussion bleed removal (short notes + spectral centroid check), octave error correction (contour-based), isolated note removal. Should produce cleaner bass lines with fewer wrong notes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1c51e5f
-
Remove unused vocal transcription and arrangement from full song pipelineβ
Ewan +1: Claude Opus 4.6The arrangement engine output is no longer used (piano roll shows the "other" stem directly). Skip vocal transcription, vocal optimization, and arrangement generation to save ~15-20s of processing time. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>477c19c -
Use direct melodic transcription for piano roll instead of arrangementβ
Ewan +1: Claude Opus 4.6The arrangement engine (vocals + chord voicings) was producing poor results because vocal transcription via Basic Pitch is inherently noisy and chord detection on mixed stems compounds errors. Now the piano roll uses the "other" stem transcription directly β the same data that produces good guitar tabs. This is the actual transcribed melodic instruments (guitar, piano, synths) rather than a lossy derivation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a14f449 -
Improve transcription quality + upgrade to Magenta SGM+ samplesβ
Ewan +1: Claude Opus 4.6Bass optimizer: - Lower pitch ceiling from MIDI 64 to 55 (G3, full 4-string bass range) - Add monophonic enforcement (keep lowest pitch at each onset) - Add spurious onset removal - Fix overlap trimming to trim against ANY next note (bass is monophonic) Vocals optimizer: - Add pitch ceiling at MIDI 84 (C6, soprano range) - Add pitch floor at MIDI 40 (E2, below = bass territory) - Add phantom high note removal - Add spurious onset removal Samples: Replace tonejs-instruments with Google Magenta SGM+ soundfont (acoustic_guitar_steel, electric_guitar_clean, electric_bass_finger). Higher quality source recordings, professional soundfont. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>83ff7ad -
Sample-based guitar/bass sounds, filter bass from piano roll, two guitar tabsβ
Ewan +1: Claude Opus 4.6Replace synthesized PluckSynth/MonoSynth with real recorded samples from tonejs-instruments (acoustic guitar, electric guitar, bass electric). Filter bass notes from piano roll in full song mode. Split guitar tab into Acoustic Guitar and Electric Guitar views. Update timing estimate. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>aeb0fce -
Full Song quality pass: light optimizer, better guitar sound, tab accuracyβ
Ewan +1: Claude Opus 4.6- New optimize_other.py: skips 7 piano-specific steps (CQT recovery, duration extension, harmonic ghost removal, playability limits) that corrupt mixed-instrument content from the Demucs "other" stem - Guitar synth: Karplus-Strong PluckSynth pool with chorus + reverb replaces synthetic FM triangle oscillator - Bass synth: MonoSynth with filter envelope (finger-pluck brightness decay) + compressor replaces basic triangle wave - Tab accuracy: polyphony cap (6 notes), fret span constraint (5 frets), duration cap (2s), EMA hand position, tighter pitch range (40-84) - Arrangement: sparser RH fill (1s gap threshold, 2 tones, vel 45) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>78ef95d -
Add instrument-specific audio: guitar synth for guitar tab, bass synth for bass tabβ
Ewan +1: Claude Opus 4.6Guitar tab view now plays through a plucked triangle synth, bass tab through a warm bass synth. Piano roll/sheet music route bass-instrument notes through the bass synth. Switching tabs reschedules playback with the correct instrument. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>eff87bd -
Add piano arrangement engine + guitar/bass tab views for Full Song modeβ
Ewan +1: Claude Opus 4.6Full Song mode now generates a proper piano arrangement (LH chord voicings, RH vocal melody with harmonic fill) instead of raw stem dumps. Adds scrolling canvas-based guitar and bass tab views with playback tracking. New backend pipeline: optimize_vocals β arrange_piano β tabs generation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1a538e9 -
Smooth progress line movement on sheet musicβ
Ewan +1: Claude Opus 4.6CSS transition on left/top for smooth motion within a staff line. Transition disabled on line jumps so it snaps instantly to the new line. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>57d692f -
Fix audio not playing in Safari: fall back to MP3 samplesβ
Ewan +1: Claude Opus 4.6Safari doesn't support OGG audio. Detect format support at startup and use .mp3 Salamander samples as fallback when OGG isn't available. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f3e5cc5 -
Add playback progress line and note coloring to sheet musicβ
Ewan +1: Claude Opus 4.6- Purple progress line sweeps across each measure during playback - Notes change from black to purple as they are played - Auto-scrolls to keep the current position visible - Colors reset when playback returns to start Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d4b669a -
Add torchcodec dependency for Demucsβ
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>124d7f4 -
Fix Demucs segment size: htdemucs max is 7.8, use 7β
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b34d3ea -
Fix Demucs OOM on HF Spaces and update Full Song descriptionβ
Ewan +1: Claude Opus 4.6- Add --segment 10 to process audio in smaller chunks (fixes memory issues on cpu-basic hardware) - Filter download progress bars from error messages to show actual errors - Update description to mention guitar/synths alongside piano and bass Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5ac3881 -
Add guitar fretboard and drumstick legs to octopus logoβ
Ewan +1: Claude Opus 4.6Mr. Octopus now has 6 legs representing all supported instruments: guitar fretboard (left), 4 piano keys (center), drumstick (right). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4b989e5 -
Fix Dockerfile: install torchaudio from CPU index, skip model pre-downloadβ
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>645dc08 -
Add Full Song mode with Demucs source separationβ
Ewan +1: Claude Opus 4.6New "Full Song" tab on the upload screen uses Demucs to separate any audio into stems, then transcribes piano and bass parts independently. Bass notes render in amber on the piano roll. - New transcriber/separate.py: Demucs wrapper - New transcriber/optimize_bass.py: simplified bass optimization - New API endpoint POST /api/transcribe-full with async polling - Upload screen: Solo Piano / Full Song tab switcher - Color scheme: bass instrument color (amber) - MIDI parser: instrument detection from MIDI program number - Dockerfile: CPU-only PyTorch + Demucs + pre-downloaded model Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>56c8033 -
Add light outline to black key for visibilityβ
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f9c4bfd -
Spread logo keys wider and make black key same length as whiteβ
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>7504971 -
Add outlines to logo keys and widen spacingβ
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b64b06d
-
Widen spacing between logo key-legs for clarityβ
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8935471 -
Simplify logo to 4 straighter key-legs (1 black, 3 white)β
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>8e61479 -
Redesign loop controls to clear 3-state contextual flowβ
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>adf3d85 -
Add file title to sheet music headerβ
Ewan +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>edc3e6d -
Update loading time estimate and tighten logo key splayβ
Ewan +1: Claude Opus 4.6- Loading screen: 5-10s β 20-30s to match actual transcription time - Logo tentacles: reduce splay from Β±66Β° to Β±35Β° so keys read as piano keys - Slightly longer key lengths for better proportions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>dcbf9b4 -
Add sheet music tab with VexFlow notation and PNG downloadβ
Ewan +1: Claude Opus 4.6- New SheetMusic component renders grand staff (treble + bass clef) - MIDI-to-notation converter: quantizes durations, splits clefs, fills rests - Tab switching between Piano Roll and Sheet Music views - PNG download button (SVG β Canvas β PNG at 2x DPI) - Code-split: VexFlow chunk loads only when Sheet Music tab is active - Loop hint text: "Seek then press A, then B" for new users - Stop playback when switching songs or clicking New Song - Expose midiObject from useMidi hook for notation access Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>006ab73 -
Improve transcription fidelity: trailing notes, sustain pedal, complexity tuningβ
Ewan +1: Claude Opus 4.6- Fix trailing silence threshold (5% β 2% RMS + 3s protection zone) β recovers 7s of cut-off endings - Fix leading silence threshold (10% β 5% + always protect first note) - Add spectral masking in harmonic ghost removal for two-hand texture - Add sustain pedal detection from audio spectral flux analysis - Add complexity-aware tuning (note density + polyphony estimation) - Add audio analysis toolkit (spectral comparison, CQT visualization) - UI: larger transport icons, loop label, 5s skip labels Jewish Bride spectral MSE: -40.3% overall, -73.8% at 95th percentile Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1646c97 -
Enhance spurious onset filter for higher precisionβ
Ewan +1: Claude Opus 4.6- Lower Cat 5 distance threshold from 200ms to 120ms (catches more hallucinated multi-note onsets far from audio) - Add Cat 6: remove onsets where all notes are <50ms (splinter artifacts) - Add Cat 7: remove onsets >70ms from audio with strength <2.5 (near-miss hallucinations just outside matching window) - Benchmarks: F1 improved across all songs (Adele 0.929β0.953, Beatles 0.963β0.974, IDWBYA 0.918β0.952, WTPO 0.963β0.971, Jorja 0.948β0.952) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>7dd6b8a -
Improve register balance: CQT-check bass, relax upper thresholdβ
Ewan +1: Claude Opus 4.6- Extend pitch-unconfirmed CQT filter to check MIDI 40-47 (bass) with -35dB threshold, catching bass notes without real spectral energy - Relax upper register threshold from -20dB to -25dB, preserving more legitimate notes above C5 - Results: bass notes reduced ~1-2%, upper notes increased 5-40% across benchmarks with F1 maintained or improved Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>81f7585 -
Fix tempo doubling and reduce harmonic ghost over-removalβ
Ewan +1: Claude Opus 4.6- Halve detected tempo when >140 BPM and half-tempo is reasonable (50-120), fixing songs like Billie Eilish IDWBYA being detected at 172 instead of 86 - Tighten harmonic ghost velocity ratio thresholds (0.75β0.55 general/C5+, 0.95β0.85 sub-bass) to preserve more legitimate notes on clean piano - Benchmarked: IDWBYA F1 improved 0.905β0.917, Adele retains 103 more notes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>307ea81 -
Initial commit - Mr Octopus piano tutorial app
Ewanf0a176a