Skip to content

VAXPAPPS/vrecorder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

VRecorder - Professional Voice Recording Application

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.

🎯 Features

Core Recording Features

  • 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

Recording Management

  • Automatic Save - Recordings automatically saved to ~/Music directory
  • 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

Playback & Interaction

  • 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

User Interface

  • 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

πŸ—οΈ Architecture

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

πŸ”§ Technology Stack

Frontend

  • 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

Backend & Audio

  • FFI (Foreign Function Interface) - Native C++ integration
  • PulseAudio - Linux audio system integration
  • C++ - Native audio capture and processing

Data Persistence

  • JSON - Recording metadata storage
  • File System - Recording audio file storage

Configuration

  • venom_config 0.0.1 - Dynamic theme configuration
  • VAXP Colors - Predefined color scheme

πŸ“‹ Requirements

System Requirements

  • 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)

Development Requirements

  • Flutter SDK 3.38.3+
  • Dart SDK 3.0+
  • CMake 3.13+
  • GCC/Clang C++ compiler
  • PulseAudio development libraries

Installation of Dependencies

Ubuntu/Debian:

sudo apt-get install -y \
  libpulse-dev \
  libpulse-simple0 \
  cmake \
  clang \
  build-essential

Fedora:

sudo dnf install -y \
  pulseaudio-libs-devel \
  cmake \
  gcc-c++ \
  make

πŸš€ Getting Started

Installation

  1. Clone or extract the project
cd Vaxp-Template
  1. Install Flutter dependencies
flutter pub get
  1. Build for Linux
flutter build linux --release
  1. Run the application
./build/linux/x64/release/bundle/venom

Development Build

For development with hot reload:

flutter run -d linux

Development Build with Debug Output

flutter run -d linux --debug

πŸ“ File Storage

Recording Files

  • Location: ~/Music/recording_[timestamp].wav
  • Format: Standard WAV files
  • Playable by: Any standard audio player (VLC, GNOME Music, etc.)

Metadata

  • 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

🎨 UI Components

Main Recording Section

  • Title: "New Voice Recording"
  • Displays current elapsed time in large digits
  • Live sound level progress bar
  • Start/Stop button with color feedback

Saved Recordings Section

  • 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

Color Coding

  • 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%)

πŸ” Data Privacy

  • 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

πŸ› Troubleshooting

No Sound Recorded

  1. Check PulseAudio is running: pactl info
  2. Verify microphone input: parecord --list-sources
  3. Check microphone levels in PulseAudio mixer
  4. Restart PulseAudio if needed: pulseaudio -k

Application Won't Start

  1. Ensure Flutter and Dart are properly installed
  2. Check all dependencies are installed
  3. Clean build: rm -rf build && flutter build linux
  4. Verify PulseAudio libraries: pkg-config --modversion libpulse-simple

Recordings Not Appearing

  1. Check ~/.local/share/venom/recordings.json exists
  2. Verify ~/Music/ directory exists
  3. Check file permissions: ls -la ~/.local/share/venom/
  4. Check WAV files exist in Music folder

Poor Audio Quality

  1. Check microphone hardware quality
  2. Reduce background noise
  3. Position microphone closer to audio source
  4. Adjust system volume levels

πŸ”§ Building from Source

Debug Build

flutter build linux --debug

Release Build (Optimized)

flutter build linux --release

Custom Build with Verbose Output

flutter build linux --verbose

πŸ“¦ Project Structure Summary

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

πŸ“ License

This project is part of the VAXP organization projects..

πŸ‘¨β€πŸ’» Development

Key Dependencies

flutter_bloc: ^8.1.5
equatable: ^2.0.5
window_manager: ^0.5.1
venom_config: ^0.0.1
ffi: ^2.1.0

Native Dependencies

  • libpulse-simple (PulseAudio)
  • C++ Standard Library (C++14)

🎯 Future Enhancements

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

πŸ“Š Version Information

  • Application Name - VRecorder
  • Current Build - Linux x64 Release
  • Platform - Linux Desktop
  • Flutter Version - 3.38.3
  • Dart Version - 3.0+

About

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors