The .vybe format is open.
A .vybe file is a whole song in one small file: the audio, the cover, the credits for everyone who made it, the lyrics with their sections, a waveform and the musical facts players need. Any app, website or tool can now read, play and create it, for free.
Version 1.1.0. Reader, player element, browser converter and command line tool. No dependencies. New in 1.1: full credits and lyrics by section.
No .vybe file yet? Make one from any song.
Why one file
Music usually travels as an audio file plus a pile of other things: a cover in another folder, lyrics on a website, BPM in a spreadsheet. A .vybe file keeps all of it together.
Credits and lyrics inside
Every artist, featured artist, writer, producer, singer and engineer, plus the label, year and copyright. Lyrics keep their parts (Intro, Verse, Hook, Bridge) and can play in time.
Waveform ready
A 2000 point waveform is built in, so players draw it instantly without decoding the audio.
Several codecs
Opus for modern browsers and Android, AAC for iOS, MP3 when needed. Players pick the one they can play.
Preview built in
A short clip of the best part, with fades, ready for cards, feeds and stories.
Music facts included
BPM, key and Camelot, loudness in LUFS, energy, sections, the drop and VYBE moods, measured when the file is made.
Small and fast
Usually a fraction of the size of a WAV. The index fits in the first bytes, so apps fetch only the parts they need.
What is inside
A short header, an index with one entry per chunk, then the chunks. Every chunk has a CRC32 checksum. Apps ignore chunk types they do not know, so the format can grow without breaking anyone.
| Chunk | Holds |
|---|---|
META | Title, artists, credits by role, label, year, copyright, BPM, key, loudness, VYBEs, lyrics with sections, license and more, as JSON. Required. See song information. |
ARTW | Cover image, up to 1400 px. |
AOPS / POPS | Full song and preview, Ogg Opus, 48 kHz. |
AAAC / PAAC | Full song and preview, AAC-LC (ADTS). |
AMP3 / PMP3 | Full song and preview, MP3. |
PEAK | Waveform, 2000 values from 0 to 255. |
SIGN | Signature added by the VYBE server. Other apps keep it as is. |
Quick start
Pick the way you work. The full API is in the README inside the kit.
<script src="vybe-format/src/vybe-file.js"></script>
<vybe-file src="song.vybe"></vybe-file>
<vybe-file src="song.vybe" preview theme="dark"></vybe-file>
<vybe-file src="song.vybe" details></vybe-file> <!-- with credits and lyrics -->
<script>
// Or play a file the visitor picked
document.querySelector('vybe-file').file = input.files[0];
</script>
<script src="vybe-format/src/vybe.js"></script>
<script>
// Fetches only the index and META (HTTP Range), chunks on demand
const song = await Vybe.open('song.vybe');
console.log(song.meta.title, song.meta.bpm, song.meta.key);
const clip = await song.audio({ preview: true }); // best codec for this browser
audio.src = URL.createObjectURL(clip.blob);
</script>
const fs = require('fs');
const Vybe = require('./vybe-format/src/vybe.js');
const song = Vybe.parse(fs.readFileSync('song.vybe'));
const info = song.info(); // works with old and new files
console.log(info.title, info.display_artist, info.people.producers, info.lyrics && info.lyrics.structure);
console.log('checksums ok:', song.verify());
// Write your own .vybe
const bytes = Vybe.pack({ meta: { title: 'Demo' }, chunks: { AOPS: opusBytes } });
cd vybe-format-1.1.0
node bin/vybe.mjs convert song.wav --cover art.jpg # writes song.vybe, reads song.lrc and song.txt too
node bin/vybe.mjs info song.vybe
node bin/vybe.mjs edit song.vybe --producer "Sam Ortiz" --lyrics words.txt -o fixed.vybe
node bin/vybe.mjs verify song.vybe
node bin/vybe.mjs extract song.vybe -o song/
What is in the kit
vybe.js: reader and writer for browsers, workers and Node.vybe-file.js: the<vybe-file>player element, light and dark, keyboard friendly, with an optional credits and lyrics area.vybe-info.js: the song information model: reads credits and lyrics from tags, file names and lyric files, and finds the song sections.vybe-audio.js: picks the best stream for the browser and hands you playable URLs.encode.js,analyze.js,worker.js: the converter that runs in the browser, with BPM, key, loudness and VYBE analysis.bin/vybe.mjs: command line tool to inspect, verify, extract, convert and edit the song info.SPEC.md,README.mdand examples.
Free to use
The code is MIT licensed: use it in free or paid apps, change it, ship it. The VYBE name and logo are not part of the license, but you are welcome to say your app "reads .vybe files".
Music for your app
Want songs from VYBE artists inside your product, with streaming links and all of the above filled in?
VYBE Library API for partner apps