A web audio engine you
build real players with.
True gapless playback, crossfade, loudness normalization and ReplayGain tags. 6.6 kB gzipped, no runtime dependencies, and no framework of its own.
$ npm install @rpxl/eko-web
Switch Gapless, Crossfade and Gap to hear what happens between tracks. The GAIN readout says whether the loudness match came from a ReplayGain tag or from measuring the audio.
Gapless that is actually gapless
The next track is decoded and scheduled to the sample while the current one is still playing. Albums, live sets and DJ mixes run without a seam, because the boundary is scheduled rather than reacted to.
Loudness that does not jump
Reads a track's ReplayGain tag when it has one, and measures the decoded audio when it does not. The single most audible improvement you can make to a playlist.
Framework free, with bindings
The core knows nothing about React or Vue. Both bindings ship, both are optional, and neither is needed. Use it with whatever you already have, or with nothing.
Honest about the ceiling
Browsers decode and resample to the output device's rate, so this is not bit-perfect and never claims to be. It improves the experience, not the fidelity. For bit-perfect you need a native app, which is what EKO for Mac is.