https://github.com/shabeer-wms/padvibe
PadVibe — cross‑platform Flutter app (macOS‑first) with drag‑and‑drop, multi‑window, file picking, and SoLoud‑based audio.
https://github.com/shabeer-wms/padvibe
audio audio-playback cocoapods dart desktop-app drag-and-drop file-picker flutter flutter-desktop free linux macos multi-window open-source opensource soloud web windows xcode
Last synced: 12 days ago
JSON representation
PadVibe — cross‑platform Flutter app (macOS‑first) with drag‑and‑drop, multi‑window, file picking, and SoLoud‑based audio.
- Host: GitHub
- URL: https://github.com/shabeer-wms/padvibe
- Owner: shabeer-wms
- Created: 2025-09-14T09:08:16.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2026-02-12T14:46:48.000Z (15 days ago)
- Last Synced: 2026-02-12T23:18:11.447Z (15 days ago)
- Topics: audio, audio-playback, cocoapods, dart, desktop-app, drag-and-drop, file-picker, flutter, flutter-desktop, free, linux, macos, multi-window, open-source, opensource, soloud, web, windows, xcode
- Language: Dart
- Homepage: https://padvibe.pro26.in
- Size: 33 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES_SUMMARY.md
Awesome Lists containing this project
README
# PadVibe 🎚️
[](https://flutter.dev)
[](https://www.python.org/)
[](https://flutter.dev/desktop)
[](LICENSE)
**PadVibe** is a professional-grade, cross-platform audio sample triggering application. It combines the expressive UI capabilities of **Flutter** with a high-performance **Python Sidecar** audio engine to deliver low-latency playback, advanced routing, and real-time DSP.
---
## 🏗️ Architecture: The Sidecar Pattern
PadVibe employs a unique **Dual-Engine Architecture**. While Flutter handles the complex UI and state management, a dedicated Python process (the "Sidecar") manages the heavy lifting of audio and MIDI.
### 🔌 Communication Flow
1. **Flutter (Client):** Sends JSON commands via **WebSockets**.
2. **Dynamic Port Discovery:** The Sidecar automatically finds an available port (8765-8775) and broadcasts it to Flutter for a seamless handshake.
3. **Python Sidecar (Server):** Executes audio playback, DSP, and MIDI polling.
4. **Real-time Feedback:** The Sidecar streams audio levels (RMS/Peak) and MIDI events back to Flutter for immediate UI updates.
---
## ✨ Key Features
### 🎧 Pro Audio Engine
- **Multi-Device Routing:** Assign individual pads to specific hardware output channels or different audio interfaces entirely.
- **Dynamic DSP:** Real-time Low-pass and High-pass filters for every pad.
- **Soft Limiter:** Integrated `tanh` soft-knee limiting on the master bus to prevent digital clipping.
- **Waveform Visualization:** High-fidelity waveform generation for every sample.
- **Professional Metering:** L/R channel independent RMS and Peak meters with ballistics and peak-hold.
- **Heartbeat System:** Constant 60FPS UI updates ensure progress bars and spectrum monitors remain fluid, even for background tasks.
### 🎹 MIDI & Control
- **RODECaster Pro Support:** Advanced MIDI handling with a unique Trigger ID system that supports channel-specific messages (essential for RODECaster pads).
- **Mixer Panel:** Create multiple software faders, link them to groups of pads, and control them all via a single physical MIDI slider.
- **MIDI Learn:** Map any pad or mixer fader to any MIDI note or CC on your external controllers.
- **Keyboard Shortcuts:** Global and local hotkeys for instant triggering.
- **Local API:** Built-in HTTP server (Port 9696) and Webhooks allow external software to monitor and control PadVibe's state.
### 🖥️ UX & Workflow
- **Tabbed Layouts:** Organize your performance into multiple groups/banks.
- **Background Pads:** Mark pads as "Background" to exclude them from API states and the Master Timer—perfect for ambient beds or long-running backing tracks.
- **Drag & Drop:** Instant sample loading by dropping files onto pads.
- **Multi-Window:** Detachable timer overlay for performance tracking.
- **SQLite Storage:** Robust data persistence for all pads, groups, mixer settings, and preferences.
---
## 📂 Project Structure
```text
padvibe/
├── lib/ # Flutter Application
│ ├── app/
│ │ ├── data/ # Models (Pad, PadGroup, Fader)
│ │ ├── modules/ # UI Modules (Home, Splash, Timer)
│ │ ├── routes/ # GetX Routing
│ │ └── service/ # Core Services
│ │ ├── audio_engine_service.dart # WS Communication
│ │ ├── audio_player_service.dart # High-level Logic
│ │ ├── midi_interface_service.dart # MIDI Logic
│ │ ├── sidecar_service.dart # Process Management
│ │ └── storage_service.dart # SQLite Persistence
│ └── main.dart # Entry point
├── sidecar/ # Python Audio/MIDI Engine
│ ├── audio_engine.py # sounddevice/numpy DSP & Playback
│ ├── midi_engine.py # mido MIDI Listener
│ ├── midi_server.py # WebSocket Server
│ └── build_sidecar.sh # PyInstaller Build Script
├── assets/ # UI Assets & Screenshots
└── native_lib/ # Native C++ bridges (if any)
```
---
## 🚀 Getting Started
### Prerequisites
- **Flutter SDK:** 3.x
- **Python:** 3.9+ with `pip`
- **Native Tools:**
- macOS: `xcode-select --install`
- Linux: `libgtk-3-dev`, `libasound2-dev`, `libjack-dev`
### Installation
1. **Clone the repo:**
```bash
git clone https://github.com/shabeer-wms/padvibe.git
cd padvibe
```
2. **Install Python dependencies:**
```bash
pip install -r sidecar/requirements.txt
```
3. **Get Flutter packages:**
```bash
flutter pub get
```
4. **Run (Development):**
```bash
flutter run
```
---
## 🛠️ Tech Stack
| Component | Technology |
| :--- | :--- |
| **Frontend** | Flutter, GetX (State), Desktop Multi-Window |
| **Backend** | Python 3, Websockets (asyncio) |
| **Audio** | sounddevice, soundfile, NumPy (DSP) |
| **MIDI** | mido, python-rtmidi |
| **Storage** | SQLite (sqflite_common_ffi), Persistence |
---
## 🤝 Contributing
Contributions are welcome! Please read our contributing guidelines and ensure you follow the established code style for both Dart and Python.
## 📄 License
TBD - See LICENSE file for details.