Commit graph

151 commits

Author SHA1 Message Date
uimaxbai
6d79dafadb make hi-res work 2026-04-18 12:57:40 +01:00
uimaxbai
c2b3f7312e fix streaming for now 2026-04-18 12:16:07 +01:00
uimaxbai
274baa2a79 fix EVERYTHING 2026-04-17 22:40:15 +01:00
uimaxbai
17c382cb93 glm hope you did a good job fixing recommendations 2026-04-13 21:57:25 +01:00
Samidy
4497863667 bring back animated album covers + improvements 2026-04-13 22:01:54 +03:00
Samidy
0bd2f29bce
Merge branch 'main' into feature/android-background-audio 2026-04-13 15:43:24 +03:00
Simone Ianniciello
56f8620505 feat(player): use @capgo/capacitor-media-session for android compatibility 2026-04-10 17:25:10 +02:00
edideaur
edbec62a55 fix lockfiles 2026-04-10 16:20:04 +03:00
tryptz
7142569741 Update js/player.js
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-10 16:06:04 +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
Samidy
d7642ff78e test: Add first row of tests for the site 2026-04-06 15:55:30 +03:00
binimum
f3b9cfd2f0 style: auto-fix linting issues 2026-04-05 17:22:39 +00: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
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
binimum
17e3430691 style: auto-fix linting issues 2026-04-05 15:23:38 +00:00
binimum
3ed9d8b589
refactor: streamline image processing and cover URL handling 2026-04-05 15:22:50 +00:00
edideaur
c73572e195
lint: fix JS errors and duplicate CSS selectors 2026-04-04 21:41:37 +00:00
binimum
6651136e5b
fix: lock preload audio codec and disable PreloadManager ABR 2026-04-04 21:01:32 +00:00
binimum
54e337d8d7
fix: pass current abr estimatedBandwidth to preloadManager 2026-04-04 20:56:09 +00:00
binimum
6557e525b4
fix: remove undefined catch from preloadNextTracks() 2026-04-04 20:39:51 +00:00
binimum
8a377d5332
chore(player): log preload load errors 2026-04-04 20:36:41 +00:00
Daniel
648e47e1d8 fix(linting): fix js linting issues 2026-04-04 01:37:47 +03:00
edideaur
bdde8fdb6a
fix: l opens lyrics 2026-04-02 18:28:46 +00: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
edideaur
c8f64a52e8
tilting + background play fixes 2026-04-01 14:47:37 +00:00
edideaur
022c27056b
Merge pull request #417 from DanTheMan827/download-fixes
Download fixes
2026-03-29 13:59:45 +03:00
Samidy
8ed52d8843 Bye Bye Desktop App 2026-03-29 13:09:32 +03:00
Daniel
e21f0f5153 fix(player): fix video preload 2026-03-28 19:21:36 -05:00
Samidy
4e75a734a2 remove qobuz 2026-03-27 14:30:39 +03:00
binimum
d9878596e2 style: auto-fix linting issues 2026-03-22 20:13:27 +00:00
binimum
d783642401
feat: add Atmos support, use new API endpoint, streamline API caching 2026-03-22 20:08:30 +00:00
edidealt
c2f8d3fca1 feat: podcasts 2026-03-22 04:32:20 +00:00
edidealt
7e16dc23c2
Merge pull request #380 from DanTheMan827/singleton
Convert classes to singleton pattern
2026-03-22 03:36:13 +02:00
edidealt
6f8b479d0f infinite track playing for popular tracks 2026-03-21 23:25:16 +00:00
Daniel
e32fbc3813 refactor(UIRenderer): convert to singleton 2026-03-21 18:14:48 -05:00
Daniel
852baeaa17 refactor(player): convert to singleton 2026-03-21 17:21:09 -05:00
binimum
5bb8713bbf
refactor: update MediaPlayer import and add platform detection 2026-03-19 21:01:29 +00:00
Daniel
4e2a595504 refactor(hls/dash): externalize hls.js and dashjs to reduce initial bundle size 2026-03-19 15:34:51 -05:00
Daniel
e2a09b9b32 refactor: externalize svg images and add new vite plugin
The plugin runs all imported SVG files through svgo.

For index.html, you can use the following syntax:
```html
<use svg="file.svg" size="24" />
```

For scripts, use the `?svg` import query
```javascript
import SVG_FILE from './file.svg?svg&size=24
```

Note: size is shorthand for specifying both width and height individually.  You can also set any property of the base SVG element.

You can also use the `?svg&icon` query to return a function that allows dynamically resizing the SVG string.
2026-03-19 15:28:33 -05:00
Daniel
393491e2c8 refactor(platform-detection): add platform-detection.ts for browser and platform detection 2026-03-19 15:09:58 -05:00
SamidyFR
108387ac7a style: auto-fix linting issues 2026-03-11 07:12:10 +00:00
Samidy
ffdcc1d396 THERE YOU SHITHEAD 2026-03-11 10:11:38 +03:00
SamidyFR
a35b51f8cd style: auto-fix linting issues 2026-03-11 06:28:37 +00:00
Samidy
6fd334f74d PLEASE JUST FUCKING WORK WHAT 2026-03-11 09:28:03 +03:00
SamidyFR
3c51d45d74 style: auto-fix linting issues 2026-03-11 06:14:00 +00:00