Commit graph

421 commits

Author SHA1 Message Date
Samidy
7dd38bac80 feat(artists): Artist Banners 2026-04-13 14:55:13 +03:00
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
bee43e7e89 style: auto-fix linting issues 2026-04-10 16:06:04 +03:00
tryptz
4c35bed3f2 feat: EQ Studio header, channel select in band editor, tab reorder, legend toggle
- Rename section header to EQ Studio with updated description
- Add ST/M/S channel select dropdown to each parametric band control
- Move Parametric EQ tab before AutoEQ
- Hide Original/Target/Corrected legend in parametric mode
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
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
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
79a5e8cf71 Add save/delete custom presets for legacy graphic EQ
Save button prompts for a name and stores the current 16-band gains
as a custom preset in localStorage. Custom presets appear in an
optgroup at the bottom of the preset dropdown. Delete button shows
when a custom preset is selected.

https://claude.ai/code/session_01AgSx7SP1dH5KFmpGXCAUvU
2026-04-10 16:06:04 +03:00
tryptz
ae9446cbd1 Add import/export for legacy graphic EQ
Export outputs EqualizerAPO-compatible format with all 16 bands.
Import accepts EqualizerAPO format or simple freq/gain pairs,
maps to nearest GEQ band by log-frequency distance, and ignores
Q values since legacy mode uses fixed dB sliders.

https://claude.ai/code/session_01AgSx7SP1dH5KFmpGXCAUvU
2026-04-10 16:06:04 +03:00
ap5z
d031c44a40 style: auto-fix linting issues 2026-04-06 03:47:25 +00:00
a
f2135cc455
fix: visualizer bugs and better mobile support (#509)
* Refine fullscreen player to look more like apple music

* fix: buttons when in visualizer only mode

* fix: mobile sizing

* Update styles.css

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update js/ui.js

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: refine fullscreen apple player

* fix: add lyrics toggle for mobile

* add lyrics toggle for mobile

* wrong branch oops 😭

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-05 23:46:50 -04:00
binimum
10b7afc36e
Merge branch 'main' of https://github.com/monochrome-music/monochrome 2026-04-05 17:21:55 +00:00
binimum
995906f572
refactor: optimize image loading and enhance performance
- Removed unnecessary preconnect link to jsDelivr in index.html.
- Added lazy loading to contribs in app.js for improved performance.
- Implemented dynamic loading of am-lyrics and shaka based on image loading status to reduce lcp
- Introduced waitForImagesLoading function in player.js to ensure all images are loaded before initializing the player
- Enhanced image loading attributes in ui.js to include fetchpriority based on loading strategy.
- Updated package.json to include vite-plugin-purgecss for CSS optimization
- Configured Vite to use purgecss and enabled tree-shaking in vite.config.ts to reduce bundle size
2026-04-05 17:21:10 +00:00
edideaur
a73a7f11cb style: auto-fix linting issues 2026-04-05 17:13:07 +00:00
Alan Brooks
2bb06f1159 Refine fullscreen player to look more like apple music 2026-04-05 20:12:29 +03:00
tryptz
388a2b81a6 style: auto-fix linting issues 2026-04-05 20:07:39 +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
SamidyFR
07223b1cc9 style: auto-fix linting issues 2026-04-05 16:20:30 +00:00
Samidy
153d9b67ac feat(reviews): AOTY critics/users reviews 2026-04-05 19:19:50 +03:00
binimum
c710855874 style: auto-fix linting issues 2026-04-05 14:45:25 +00:00
binimum
b3da2da672
Merge branch 'main' of https://github.com/monochrome-music/monochrome 2026-04-05 14:44:50 +00:00
binimum
014d1ef74e
feat: change loading eagerness to make lcp faster 2026-04-05 14:44:40 +00:00
Samidy
fe8bfed0dc CORRECTLY handle catch in fetchcontributors() 2026-04-05 17:08:42 +03:00
binimum
cffd97ff69 style: auto-fix linting issues 2026-04-05 12:13:01 +00:00
binimum
6c1e0b5641
Merge branch 'main' of https://github.com/monochrome-music/monochrome 2026-04-05 12:12:23 +00:00
binimum
6f918e5c05
one more 2026-04-05 12:11:54 +00:00
binimum
52b62a2b1b style: auto-fix linting issues 2026-04-05 12:10:32 +00:00
binimum
57226892ab
feat: seo 2026-04-05 12:09:52 +00:00
SamidyFR
ad605c903b style: auto-fix linting issues 2026-04-04 19:50:46 +00:00
Samidy
90dc00ba5a Merge branch 'main' of github.com:monochrome-music/monochrome 2026-04-04 22:50:07 +03:00
Samidy
c3e9839845 feat(about): Contributors list 2026-04-04 22:49:01 +03:00
Daniel
5b727a103e feat(downloads): allow writing multiple artists to metadata
This will write each artist separately to the metadata rather than as a single concatenated string.  This allows for better library searching if the player supports it.

If multiple artists are written to an m4a file, iTunes will only show the first artist.
2026-04-03 14:31:19 +03:00
edideaur
8f30983296 style: auto-fix linting issues 2026-04-02 18:53:06 +00:00
edideaur
2ddf26ec4c
feat: right clicking context menu on miniplayer 2026-04-02 18:52:38 +00:00
edideaur
1345943a0b style: auto-fix linting issues 2026-04-02 18:45:00 +00:00
edideaur
2183610df1
further:allow right clicking blocked content for easier unblocking 2026-04-02 18:44:13 +00:00
edideaur
b313fb8ac5
fix weird buttons 2026-04-02 17:26:38 +00:00
edideaur
8ceaffe757
tilt settings 2026-04-02 16:09:58 +00:00
edideaur
c8b7a9cd17
tilting, rounding, and new trackerapi instance 2026-04-02 12:08:05 +00:00
edideaur
e71c989319
editor pick changes 2026-04-02 09:09:13 +00:00
tryptz
62901eef63 fix: add role=status to speaker measurement status span 2026-04-02 11:05:12 +03:00
tryptz
0652aa4866 style: auto-fix linting issues 2026-04-02 11:05:12 +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
SamidyFR
b00cb086f4 style: auto-fix linting issues 2026-04-01 21:02:31 +00:00