Commit graph

38 commits

Author SHA1 Message Date
tryptz
79313e7a0a fix: address PR #523 review comments for EQ and binaural DSP
- Remove stale IIR coefficient JSDoc comment
- Reset M/S channel state on EQ import to prevent stale assignments
- Enforce strictly increasing GEQ frequencies to prevent rounding duplicates
- Guard Q calculation against zero octave spacing (Infinity/NaN)
- Export EQ from stored metadata instead of live BiquadFilterNode state
- Accept .csv in legacy GEQ import file input
- Expose public reconnect() on BinauralDSP instead of calling _connectInternal
- Dispatch binaural-mode-changed on channel count change, not just mode change
- Remove no-op channelCount/channelCountMode on MediaElementAudioSourceNode
- Add void to floating promises (toggleBinaural, notifyBinauralChannelCount, _loadBinauralSettings)
- Wrap binauralDspSettings._setAll in try/catch for QuotaExceededError
- Make generateHRTF synchronous (no awaits, was misleadingly async)
2026-04-10 16:06:04 +03:00
tryptz
ab23c3e64e style: auto-fix linting issues 2026-04-10 16:06:04 +03:00
tryptz
5bbc36cdb1 feat: add binaural/spatial DSP with multichannel HRTF rendering
Implement a complete binaural audio processing pipeline that sits before
EQ Studio in the signal chain. Supports multichannel (5.1) HRTF
binauralization for Dolby Atmos and Apple 3D Audio content, with
crossfeed and stereo widening for regular stereo content.

New modules:
- hrtf-generator.js: Procedural HRTF impulse response synthesis using
  Woodworth head model (ITD, ILD, head shadow, pinna coloring)
- binaural-dsp.js: BinauralDSP engine with multichannel splitter,
  per-channel ConvolverNode HRTF rendering, Bauer-style crossfeed
  (low/medium/high), and M/S stereo widener

Integration:
- Audio graph: binaural block inserted before preamp/EQ, multichannel
  passthrough via MediaElementSource channelCount=6
- Storage: binauralDspSettings with full persistence (JSON in localStorage)
- UI: toggle + sub-controls (crossfeed level, HRTF preset, width slider)
  placed before EQ Studio in settings
- Player: auto-enables binaural DSP when Atmos content detected,
  shows binaural badge on Atmos tracks
2026-04-10 16:06:04 +03:00
tryptz
f892d80bf6 style: auto-fix linting issues 2026-04-10 16:06:04 +03:00
tryptz
44e811f56d feat: per-band Mid/Side EQ, context menus, shelf presets, performance fix
- Add per-band M/S processing with full encoder/decoder matrix in Web Audio API
- Right-click context menu on EQ nodes for filter type and channel switching
- Right-click empty graph space to add nodes
- Remove nearest-node snap-click interaction
- Replace IIR shelf filters with native BiquadFilter for glitch-free updates
- Add 6 M/S showcase presets with research-informed mastering values
- Add 5 shelf-based stereo presets (Warm, Bright, Hi-Fi, Dark, Radio Ready)
- Standard presets now reset all bands to stereo/peaking
- Graph contrast fix for light themes using color-mix()
- Colored help button and rewritten how-to documentation
- Default graph zoom changed to ±16 dB
2026-04-10 16:06:04 +03:00
tryptz
4192263176 style: auto-fix linting issues 2026-04-10 16:06:04 +03:00
tryptz
a16d489b9f fix: address CodeRabbit review - array padding, storage validation, Q accuracy
- Pad band arrays when import/AutoEQ has fewer filters than MIN_BANDS
- Early return in applyAutoEQBands for zero enabled bands
- Persist interpolated gains before audio rebuild on band count change
- Derive export Q from actual octave spacing between adjacent bands
- Validate inputs in all GEQ storage setters
2026-04-10 16:06:04 +03:00
tryptz
55b49cc77a fix: address CodeRabbit review - shelf Q round-trip, IIR gain setters, import persistence, tooltip sum 2026-04-10 16:06:04 +03:00
tryptz
91eaa1f1dc feat: configurable band count and frequency range for legacy graphic EQ
- Add Bands/Min Hz/Max Hz controls to legacy EQ section
- Dynamic frequency generation with log spacing and auto-scaling Q
- Import/export handles variable band counts, Q optional for shelves
- Custom presets interpolate across different band counts
- Update legacy EQ tutorial for new controls
2026-04-10 16:06:04 +03:00
tryptz
0cfff0b0b2 fix: make Q optional in EQ import regex for shelf filters 2026-04-10 16:06:04 +03:00
tryptz
eae8655877 feat: add APO export for legacy EQ and fix shelf filter Q support
- Add Export APO button to legacy graphic EQ (GraphicEQ config line format)
- Fix shelf filters ignoring Q: use IIR filters with RBJ cookbook coefficients
- Update graph visualization to use actual Q for shelf curves
- Omit Q from shelf filters in all EQ text exports
2026-04-10 16:06:04 +03:00
tryptz
da6c2e2dd9 fix: address CodeRabbit review issues from PR #502
Android:
- Fix stale wake lock detection by checking isHeld() before reacquiring
- Wrap startForegroundService in try-catch to handle launch exceptions
- Add START/STOP intent actions to prevent stop/start race condition

HTML/Accessibility:
- Convert preset and preamp spans to proper <label> elements
- Add aria-controls to database collapse button
- Sync aria-expanded state when toggling database panel

JavaScript:
- Guard auto-resume with source check to avoid resuming when not playing
- Add _calculateQ() fallback in fast-path EQ filter updates
- Persist graphic EQ gains and preamp to storage from setters
- Include 'legacy' in EQ mode restoration check
- Clear container before rebuilding GEQ bands for idempotency
- Use AbortController for document-level listener cleanup
- Apply gain calculation for non-parametric modes in touch snap
- Validate stored GEQ values are finite numbers

CSS:
- Remove non-standard appearance: slider-vertical property
2026-04-05 20:07:39 +03:00
tryptz
d09e3aa72a feat: AutoEQ, speaker EQ enhancements, and audio performance fixes
- Add 16-band graphic equalizer with legacy EQ mode
- Add speaker measurement and room correction EQ
- Fix audio skipping with AutoEQ on Android background
- Improve audio performance to prevent skipping under CPU load
- Fix dual EQ applied when switching between legacy and parametric modes
- Remove redundant Equalizer settings tab
- Improve mobile EQ band layout and collapsible database section
2026-04-05 20:07:39 +03:00
tryptz
782e98061b fix: address all CodeRabbit review findings from PR #477
Engine & algorithm:
- Use default shelf Q (1/√2) in calculateBiquadResponse for shelf filters
- Compute normalization offset on measurement frequency grid to avoid bias
- Try stale cache for all fetch errors in autoeq-importer, not just timeouts

Audio pipeline:
- Pass postProcessingQuality (preserves Dolby Atmos override) in api.js
- Persist custom band frequencies in equalizerSettings storage
- Restore custom frequencies on _loadSettings instead of regenerating defaults
- Export clamped preamp value in applyAutoEQBands text output
- Propagate filter type and Q values through equalizer import chain
- Update freqRange after importing custom filter frequencies
- Remove return in finally block that hid LOSSLESS fallback failures

Data consistency:
- Normalize artist IDs with String() in blockArtist/unblockArtist

Lint & code quality:
- Annotate empty catch blocks (Atmos codec probes)
- Remove unused catch parameters

Accessibility:
- Add aria-label and for attributes to all AutoEQ form controls
- Add role="status" aria-live="polite" to feedback spans
- Update filter type documentation to reflect shelf support
- Hide parametric-only sections by default to match active tab

UI:
- Move AutoEq button directly under graph
- Hide shared button in Parametric/Speaker modes
- Replace hardcoded white legend dot with theme-adaptive color-mix
- Add pointer-events:none and focus-within to profile delete button
2026-04-02 11:05:12 +03:00
tryptz
d4d1fe8494 feat: AutoEQ and speaker EQ enhancements
Adds AutoEQ integration with interactive parametric EQ graph,
speaker/room correction with shelf filters, and improved EQ
persistence via IndexedDB.
2026-04-02 11:05:12 +03:00
edideaur
b6e8068652 capacitor app 2026-03-22 20:59:00 +02:00
Daniel
393491e2c8 refactor(platform-detection): add platform-detection.ts for browser and platform detection 2026-03-19 15:09:58 -05:00
SamidyFR
4cb8b84f91 style: auto-fix linting issues 2026-03-10 01:58:49 +00:00
Samidy
473e5ba8b6 feat(recommendations): Infinite Radio 2026-03-10 04:58:17 +03:00
JulienMaille
8731ddb502 style: auto-fix linting issues 2026-02-20 23:07:15 +00:00
Julien Maille
ae853636ce IMP: 192kHz playback, adapted visualizers 2026-02-21 00:07:00 +01:00
Eduard Prigoana
f20f3dbb9d EQ changes 2026-02-17 20:22:47 +00:00
Gareth Dawson
933d0e6a40 fix: resolve all yarn lint errors 2026-02-15 21:53:00 +00:00
IsraelGPT
0b20caff69 equalizer changes 2026-02-15 15:01:34 +00:00
Gareth Dawson
0d1910285c fix: restore iOS background play by detecting iOS before UA spoof 2026-02-14 22:56:33 +00:00
Eduard Prigoana
b47e11ef48 fix(iOS): don't set isInitialized flag when skipping Web Audio on iOS
Previously, the code was setting isInitialized = true on iOS even though
no AudioContext was created. This caused isReady() to return true, which
led other code to try to use the non-existent audio context.

Now isInitialized remains false on iOS, so isReady() returns false and
the code properly falls back to using the standard HTMLAudioElement APIs.
2026-02-14 20:01:09 +01:00
Julien Maille
02cf092904 FIX: try to fix application volume control on linux 2026-02-13 21:02:00 +01:00
Eduard Prigoana
ea005c68ad remove pitch changing and allow more granular playback speed control, remember what setting tab youre on 2026-02-10 19:57:18 +00:00
BlackSigkill
ed579624e2 fix linting 2026-02-09 20:48:02 +01:00
Eduard Prigoana
f81973af88 pitch and speed in settings, back to ko-fi 2026-02-09 14:04:40 +00:00
Eduard Prigoana
3974ec7551 feat: mono audio 2026-02-09 12:06:44 +00:00
Eduard Prigoana
c2fd81348a ACTUALLY fix butterchurn 2026-02-09 03:26:32 +00:00
Eduard Prigoana
4636ae3151 (final) implement butterchurn 2026-02-09 04:09:44 +02:00
Eduard Prigoana
44004d9c3f
Merge pull request #139 from blacksigkill/fix/linting-issues
fix all errors/warnings during linting
2026-02-04 12:50:40 +02:00
BlackSigkill
50834a48e0 fix all errors/warnings during linting 2026-02-03 15:20:50 +01:00
Eduard Prigoana
377adc8f0a fix iOS background play 2026-02-03 13:46:34 +00:00
EduardPrigoana
fc2229dbf6 style: auto-fix linting issues 2026-02-01 20:35:18 +00:00
EduardPrigoana
47cc05e60e EQUALIZER FINALLY 2026-02-01 22:14:35 +02:00