A native macOS audio player inspired by the classic Winamp 2.x era — built entirely with Swift and AppKit.
No Electron. No web views. No dependencies. Just pure native macOS.
Player
- Classic transport controls — play, pause, stop, previous, next
- Volume and balance sliders with real-time response
- Retro LCD time display with seven-segment digits
- Real-time spectrum analyzer visualization
- Scrolling track title display
10-Band Equalizer
- Fully adjustable EQ with preamp control
- Live frequency response curve
- Built-in presets (Rock, Pop, Jazz, Classical, and more)
- Toggle on/off without losing settings
Playlist
- Drag & drop files directly from Finder
- Keyboard navigation — arrow keys to browse, Return to play
- Search through your library instantly
- Shuffle and repeat modes (off / track / playlist)
- Supports MP3, AAC, M4A, FLAC, WAV, and AIFF
Customization
- Adjustable UI scale — change a single value in
WinampTheme.scaleto resize the entire player
System Integration
- Media key support — play/pause, next, previous from your keyboard
- Now Playing integration with macOS Control Center
- System tray menu for quick access
- Always-on-top (pin) window mode
- Full state persistence — picks up right where you left off
| Language | Swift 5 |
| UI Framework | AppKit (100% programmatic, zero XIBs) |
| Audio | AVFoundation + AVAudioEngine |
| DSP | Accelerate (FFT for spectrum analysis) |
| Media Keys | MediaPlayer framework |
| State | Combine + JSON persistence |
| Dependencies | None. Zero. Nada. |
AppDelegate
├── AudioEngine PlayerNode → 10-Band EQ → Mixer → Output
├── PlaylistManager Track list, shuffle, repeat, auto-advance
├── StateManager JSON persistence with debounced saves
└── MainWindow 275px fixed-width borderless window
├── MainPlayerView LCD display, transport, sliders
├── EqualizerView 10-band EQ + response curve
└── PlaylistView Scrollable table with drag-drop
Views subscribe to model changes via Combine publishers — no delegates, no notification spaghetti.
- macOS 14.0+
- Xcode 15+
# Clone the repo
git clone https://github.com/wishval/Wamp.git
cd Wamp
# Build from command line
xcodebuild -project Wamp.xcodeproj -scheme Wamp -configuration Debug build
# Launch the built app
open ~/Library/Developer/Xcode/DerivedData/Wamp-*/Build/Products/Debug/Wamp.app
# Or just open in Xcode and hit ⌘R
open Wamp.xcodeproj| Key | Action |
|---|---|
Space |
Play / Pause |
Return |
Play selected track |
↑ ↓ |
Navigate playlist |
⌘Q |
Quit |
| Media Keys | Play / Pause / Next / Previous |
MP3 | AAC | M4A | FLAC | WAV | AIFF
Wamp is a local player. It does not stream from Spotify or Apple Music, and it does not sync with iCloud Music Library. See docs/non-goals.md for the rationale.
Made with nostalgia and Swift on macOS.
Inspired by Winamp 2.x. This is an independent project and is not affiliated with or endorsed by the original Winamp authors.