A modern, elegant voice recording application built with Flutter and Clean Architecture. VRecorder provides seamless audio recording, playback, and management with a beautiful glassmorphism UI design.
- Real-time Voice Recording - Direct microphone input using PulseAudio
- Live Sound Level Visualization - Visual feedback with color-coded indicators (green β yellow β red)
- Precise Timing - Accurate elapsed time tracking during recording
- High-Quality Audio - 44.1 kHz, 16-bit, Stereo PCM format
- Automatic Save - Recordings automatically saved to
~/Musicdirectory - Persistent Storage - All recordings metadata stored in
~/.local/share/venom/recordings.json - Recording Metadata - Displays filename, duration, file size, and creation time
- Delete Recordings - Remove recordings with automatic file cleanup
- Built-in Playback - Play recordings directly from the application
- File Information - View detailed recording information (duration, size, creation date)
- Quick Access - All saved recordings displayed in an organized list view
- Glassmorphism Design - Modern glass-effect UI components
- Material 3 Design - Latest Material Design specifications
- Responsive Layout - Optimized for desktop Linux platforms
- Dark Theme - Easy on the eyes with VAXP dark color scheme
- Custom Titlebar - Desktop-native window controls
VRecorder follows Clean Architecture principles with clear separation of concerns:
lib/
βββ domain/ # Business Logic Layer
β βββ entities/ # Pure data models
β β βββ recording.dart
β βββ repositories/ # Abstract repository interfaces
β β βββ audio_repository.dart
β βββ usecases/ # Business logic use cases
β βββ start_recording.dart
β βββ stop_recording.dart
β βββ get_recordings.dart
β βββ delete_recording.dart
β βββ get_current_level.dart
β
βββ data/ # Data Layer
β βββ datasources/ # Data source implementations
β β βββ audio_local_datasource.dart (interface)
β β βββ audio_local_datasource_impl.dart (implementation)
β βββ repositories/ # Repository implementations
β βββ audio_repository_impl.dart
β
βββ presentation/ # Presentation Layer
β βββ bloc/ # State Management
β β βββ audio_bloc.dart
β β βββ audio_event.dart
β β βββ audio_state.dart
β βββ pages/ # UI Pages
β βββ recorder_page.dart
β
βββ core/ # Core Services
β βββ audio/ # FFI Bindings
β β βββ audio_ffi.dart
β βββ service_locator.dart # Dependency Injection
β βββ colors/ # Theme Colors
β βββ theme/ # Theme Configuration
β βββ venom_layout.dart # Layout Components
β
βββ main.dart # Application Entry Point
- Flutter 3.38.3 - Cross-platform UI framework
- Flutter BLoC 8.1.5 - State management
- Material 3 - Modern UI design
- window_manager 0.5.1 - Desktop window control
- FFI (Foreign Function Interface) - Native C++ integration
- PulseAudio - Linux audio system integration
- C++ - Native audio capture and processing
- JSON - Recording metadata storage
- File System - Recording audio file storage
- venom_config 0.0.1 - Dynamic theme configuration
- VAXP Colors - Predefined color scheme
- Linux desktop (Ubuntu 20.04 or newer recommended)
- PulseAudio (usually pre-installed)
- 100MB free disk space for application
- Additional space for recordings (varies by usage)
- Flutter SDK 3.38.3+
- Dart SDK 3.0+
- CMake 3.13+
- GCC/Clang C++ compiler
- PulseAudio development libraries
Ubuntu/Debian:
sudo apt-get install -y \
libpulse-dev \
libpulse-simple0 \
cmake \
clang \
build-essentialFedora:
sudo dnf install -y \
pulseaudio-libs-devel \
cmake \
gcc-c++ \
make- Clone or extract the project
cd Vaxp-Template- Install Flutter dependencies
flutter pub get- Build for Linux
flutter build linux --release- Run the application
./build/linux/x64/release/bundle/venomFor development with hot reload:
flutter run -d linuxflutter run -d linux --debug- Location:
~/Music/recording_[timestamp].wav - Format: Standard WAV files
- Playable by: Any standard audio player (VLC, GNOME Music, etc.)
- Location:
~/.local/share/venom/recordings.json - Format: JSON array of recording objects
- Contains: ID, filename, path, duration, file size, creation time
- Survives: Application restarts and updates
- Title: "New Voice Recording"
- Displays current elapsed time in large digits
- Live sound level progress bar
- Start/Stop button with color feedback
- Title: "Saved Recordings"
- List of all saved recordings with metadata
- Play button for each recording
- Delete button for each recording
- Empty state message when no recordings exist
- Green Start Button - Ready to record
- Red Stop Button - Currently recording
- Green Sound Level - Low volume (< 50%)
- Yellow Sound Level - Medium volume (50-75%)
- Red Sound Level - High volume (> 75%)
- All recordings stored locally on your system
- No cloud uploads or network transmission
- No analytics or telemetry collection
- Metadata stored in standard JSON format (human-readable)
- User full control over all recordings
- Check PulseAudio is running:
pactl info - Verify microphone input:
parecord --list-sources - Check microphone levels in PulseAudio mixer
- Restart PulseAudio if needed:
pulseaudio -k
- Ensure Flutter and Dart are properly installed
- Check all dependencies are installed
- Clean build:
rm -rf build && flutter build linux - Verify PulseAudio libraries:
pkg-config --modversion libpulse-simple
- Check
~/.local/share/venom/recordings.jsonexists - Verify
~/Music/directory exists - Check file permissions:
ls -la ~/.local/share/venom/ - Check WAV files exist in Music folder
- Check microphone hardware quality
- Reduce background noise
- Position microphone closer to audio source
- Adjust system volume levels
flutter build linux --debugflutter build linux --releaseflutter build linux --verbose| Directory | Purpose |
|---|---|
lib/ |
Dart source code |
ffi/ |
C++ native code |
linux/ |
Linux platform configuration |
build/ |
Build output (generated) |
assets/ |
Application resources |
pubspec.yaml |
Flutter dependencies |
This project is part of the VAXP organization projects..
flutter_bloc: ^8.1.5
equatable: ^2.0.5
window_manager: ^0.5.1
venom_config: ^0.0.1
ffi: ^2.1.0- libpulse-simple (PulseAudio)
- C++ Standard Library (C++14)
Potential features for future versions:
- Recording trim and editing
- Multiple audio format support (MP3, FLAC, OGG)
- Recording search and filtering
- Audio waveform visualization
- Recording notes and tags
- Cloud sync integration
- Voice-to-text transcription
- Recording categorization
- Export to different formats
- Audio amplification tools
- Application Name - VRecorder
- Current Build - Linux x64 Release
- Platform - Linux Desktop
- Flutter Version - 3.38.3
- Dart Version - 3.0+