Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Can I Mix It?

DJ audio quality checker — 100% local, no upload, no account.

Drop an audio file. Get a score from 0 to 100 and a full breakdown of every quality issue detected. Know instantly if your WAV is actually a WAV, or a re-encoded MP3 in disguise.

🔗 can-i-mix.it


What it does

Can I Mix It? runs a multi-dimensional audio analysis pipeline entirely in your browser. Nothing leaves your computer.

Detected issues:

  • Fake lossless (WAV/FLAC hiding a lossy re-encode)
  • Spectral cutoff — effective frequency bandwidth
  • Spectral wall — hallmark of lossy encoding
  • Upsampling detection
  • Clipping events
  • Dynamic range (TT DR method)
  • True peak (ITU-R BS.1770, 4× oversampling)
  • LUFS loudness (EBU R128)
  • Stereo field — correlation, mono duplicate, suspect stereo
  • Sub-bass phase issues (<120 Hz)
  • Pre-echo artifacts
  • Codec blockiness
  • Noise floor

Result: a Club Quality Score (0–100) with per-category penalty breakdown.


How it works

  1. Drop any audio file (WAV, FLAC, MP3, AAC, OGG, AIFF, M4A, Opus — max 500 MB)
  2. The file is decoded locally via the Web Audio API
  3. Six analysis modules run in a Web Worker
  4. Results are displayed instantly — spectrogram, score, penalty cards

Tech stack

  • Vanilla JS (ES modules), no framework, no dependencies
  • Web Audio API for decoding
  • Web Workers for non-blocking analysis
  • FFT (32 768-point, Hann windowing) for spectral analysis
  • i18n: English / Français (auto-detected from browser locale)

Project structure

├── index.html
├── style.css
├── js/
│   ├── app.js          # Entry point
│   ├── ui.js           # Rendering
│   ├── worker.js       # Analysis orchestrator (Web Worker)
│   ├── analysis.js     # Time domain, stereo, LUFS
│   ├── dsp.js          # FFT, spectral analysis
│   ├── scoring.js      # Penalty system & score
│   ├── parsers.js      # File header parsing
│   ├── player.js       # Audio playback
│   ├── spectrogram.js  # Spectrogram rendering
│   └── i18n.js         # Internationalization
├── locales/
│   ├── en.json
│   └── fr.json
├── Dockerfile
├── docker-compose.yml
└── nginx.conf

Self-hosting

docker compose up -d

Serves the app on port 80 via nginx. No build step required.


License

MIT

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages