Skip to content
cmicaliPublic

Repository files navigation

Vibe

A fast, minimal player for your music files for the Mac, iPhone, and iPad. No third-party engine, no account, no subscription.

Vibe screenshot

Website: https://vibeplayer.app

Download

Download on the Mac App Store Download on the App Store

Latest release: Vibe for Mac (.dmg)

Homebrew:

brew install cmicali/tap/vibe

Features

  • Waveform view: every track is drawn as a full waveform across the window. Click anywhere on it to seek.
  • Cached browsing: tags, artwork and waveforms are read in the background and cached for later opens.
  • Custom audio engine: MP3, MP2, AAC, FLAC, ALAC, MP4/M4A/M4B/M4R, QTA (Voice Memos, Mac only), AIFF, WAV, W64, CAF, Ogg Opus, and Ogg Vorbis. Vibe plays them through its own CoreAudio engine with high-quality sample-rate conversion.
  • Bit-perfect output: requests the track's sample rate and reports whether the output path preserves its samples. Exclusive mode requests sole access to the device (Mac).
  • No library to import: drop a file or a folder from your disk, iCloud Drive or Dropbox and it plays. There is no database to rebuild.
  • DJ tools: BPM detection and performance FX on both platforms. The Mac also has pitch control, key analysis, and bar-aligned skips.
  • Themes: restyle the Mac player. Build your own in Settings and share it as a file.
  • Speaks 30 languages: fully localized, from Bulgarian to Vietnamese.

Vibe with its playlist open

Usage

On the Mac, drop audio files or a folder on the window to play them. Click the waveform to seek. Drag the artwork out to copy the playing file somewhere else.

Key commands

These are the defaults. You can change every one in Settings > Keyboard Shortcuts. The single-letter keys follow their position on the keyboard, so they stay put under AZERTY, Dvorak or a non-Latin layout.

Key Action
Space Play / pause
B Previous track
N Next track
A / S / D Skip forward 8 / 16 / 32 bars when the tempo is known, else 10 / 30 / 60 seconds
Z / X / C Skip back 8 / 16 / 32 bars when the tempo is known, else 10 / 30 / 60 seconds
Tab Show / hide the playlist
P Show / hide pitch control
⌘O Open a file or folder
⌘S Save the playlist as an M3U file

Vibe with the pitch fader open

FX

Tap an FX key to latch the effect; hold it for momentary.

Key Action
Q Low-kill filter
W Low-kill boost, which pushes the Q cutoff higher
E Reverb wash
R Delay, 1/8-note taps
T Delay, 1/16-note taps

Themes

Vibe ships with several built-in themes, and you can make your own in Settings > Themes. Start from the current look or duplicate a built-in. Then edit the window, fonts, colors, waveform, playlist and the no-artwork placeholder. Changes apply live. A theme exports as one file, custom artwork included, that anyone can import. See docs/themes.md for the full guide.

Vibe in a custom theme

On iPhone and iPad

The iOS app shares the audio engine, waveform drawing, and tag and file handling with the Mac app. Its interface is native iOS, and it adds a Dropbox account.

Vibe on iPhone, now playing Vibe on iPhone, waveform seek Vibe on iPhone, playlist

Audio quality and performance

Development

Vibe is written in Objective-C and Objective-C++, and plays audio through CoreAudio directly.

Building needs Xcode 26 or later. The app runs on macOS 13 or later and iOS 26 or later.

Vibe.xcodeproj is generated by XcodeGen from project.yml and is not checked in. Generate it after cloning, after every pull and after every edit to project.yml:

make setup       # brew bundle: xcodegen, jq, gh
make project     # xcodegen generate
open Vibe.xcodeproj

Build and run the Vibe scheme with ⌘R. Command-line builds, tests and editor setup are in CONTRIBUTING.md.

License

Vibe is licensed under the Apache License 2.0.

There is no package manager. All third-party code is vendored. Every library is a piece under third_party/ in vibe-libs, the submodule at vibe-libs/. THIRD-PARTY-NOTICES.md lists every component and its license. TagLib is dual-licensed, and Vibe uses it under the Mozilla Public License 1.1 rather than the LGPL because it is statically linked.