Bitwave is a high-fidelity, developer-friendly, future-proof audio format designed for modern sound experiences โ including spatial audio, dynamic tempo adjustment, and multi-track support.
Minimal. Powerful. Immersive.
- ๐๏ธ Multi-channel support โ From stereo to 7.1+, ambisonic, and 3D formats
- โฑ๏ธ Dynamic tempo control โ Ideal for DJs, generative music, and interactive environments
- ๐ Spatial-ready โ Built-in XYZ positioning for VR/AR and immersive experiences
- ๐ง AI-enhanced compatibility โ Ready for real-time audio transformation and neural mixing
- ๐พ Compact & efficient โ Optimized binary format with optional lossless compression (ZLIB, LZMA, FLAC-style)
- ๐ Modern file extension:
.bwx - ๐ Python SDK โ Easy-to-use Python implementation for rapid development
- ๐๏ธ Compression Support โ Lossless (ZLIB, LZMA) and lossy compression options
- ๐ Audio Analysis โ BPM detection, spectral analysis, fingerprinting, key detection
- ๐ Format Conversion โ Convert to/from WAV, FLAC, OGG, and more
- ๐๏ธ Audio Effects โ Reverb, delay, distortion, filters, compression, EQ, and more
- ๐ฆ Batch Processing โ Process multiple files in parallel
- ๐ Metadata Management โ Extended metadata with search and export capabilities
- ๐ Quality Analysis โ SNR, THD, frequency response, clipping detection
- โจ Unique Tools โ Tempo matching, pitch shifting, spatial audio, granular synthesis
Bitwave comes with a modern, feature-rich player that works on both macOS and Windows:
- ๐จ Modern UI โ Clean, intuitive interface with dark mode support
- ๐ Waveform Visualization โ Real-time waveform display with playback position
- ๐๏ธ Volume Control โ Smooth volume adjustment with keyboard shortcuts
- ๐ Playlist Support โ Create, save, and load playlists (M3U format)
- ๐ Spatial Audio Visualization โ 3D visualization of spatial audio data
- ๐ Metadata Display โ View track information, duration, and BPM
- โจ๏ธ Keyboard Shortcuts โ Quick access to all playback controls
- ๐ฏ System Tray Integration โ Control playback from the system tray
| Action | Keyboard Shortcut | Description |
|---|---|---|
| Play/Pause | Space | Toggle playback |
| Next Track | Right Arrow | Play next track |
| Previous Track | Left Arrow | Play previous track |
| Volume Up | Up Arrow | Increase volume |
| Volume Down | Down Arrow | Decrease volume |
| Open File | Ctrl+O | Open Bitwave file |
| Save Playlist | Ctrl+S | Save current playlist |
| Load Playlist | Ctrl+L | Load saved playlist |
# Install dependencies pip install -r requirements.txt # Run the player python player/run.py
| Extension | Description |
|---|---|
.bw2 |
Bitwave v2 โ Latest version with enhanced features |
.bwx |
Bitwave eXtended โ Multichannel, 3D, spatial audio |
.bwa |
Bitwave Audio โ Standard audio content |
.bwm |
Bitwave Master โ Mastering / studio-level quality |
.bwd |
Bitwave Dynamic โ Tempo & rhythm adaptive version |
.bwl |
Bitwave Light โ Lightweight, streaming optimized |
.bwf |
Bitwave Full โ Includes full metadata and spatial data |
.bwr |
Bitwave Raw โ Uncompressed or minimally processed |
.bwi |
Bitwave Immersive โ VR/AR ready, full 3D audio |
.bwt |
Bitwave Track โ Optimized for music tracks |
.bwp |
Bitwave Pro โ Professional content & production ready |
| Section | Description |
|---|---|
BWX_HEADER |
Magic bytes, version, flags |
META_BLOCK |
Sample rate, channels, duration, bpm |
SPATIAL_BLOCK |
Positional data (x, y, z) per channel |
AUDIO_STREAM |
Encoded audio frames |
FOOTER |
Checksum & optional tags |
# Create and activate virtual environment python -m venv venv source venv/bin/activate # On Unix/macOS # or .\venv\Scripts\activate # On Windows # Install dependencies pip install -r requirements.txt # Install package in development mode pip install -e .
# Navigate to the Rust implementation cd rust # Build the project cargo build # Run tests cargo test # Build documentation cargo doc --open
# Get information about a Bitwave file bitwave info file.bwx bitwave info file.bwx --json # JSON output # Convert audio files to/from Bitwave format bitwave convert input.wav output.bwx --bpm 120 --compression zlib bitwave convert input.bwx output.wav # Convert from Bitwave # Analyze audio files bitwave analyze file.bwx --all # Run all analyses bitwave analyze file.bwx --bpm --spectral --fingerprint # Apply audio effects bitwave effects input.bwx output.bwx --reverb 0.7 --delay 250 --normalize # Batch process files bitwave batch input_dir output_dir --convert bwx --workers 4 bitwave batch input_dir output_dir --normalize bitwave batch input_dir --analyze --workers 8 # Manage metadata bitwave metadata file.bwx # View metadata bitwave metadata file.bwx --set "title=My Song" --set "artist=Artist Name" bitwave metadata audio_dir --export-csv metadata.csv # Quality analysis bitwave quality file.bwx bitwave quality file.bwx --reference original.bwx # Compare with reference # Unique audio tools bitwave unique input.bwx output.bwx --tempo-match 140 bitwave unique input.bwx output.bwx --pitch-shift 2 # Shift up 2 semitones bitwave unique input.bwx output.bwx --spatial "0.5,0.3,0.1" # 3D positioning
from bitwave import BitwaveFile, CompressionType # Read a Bitwave file bw_file = BitwaveFile("track.bwx") bw_file.read() metadata = bw_file.get_metadata() audio_data = bw_file.get_audio_data() # Write a Bitwave file with compression bw_file.write( audio_data=np.array(...), # 2D array (samples x channels) sample_rate=44100, bpm=120, spatial_data=np.array(...), # Optional spatial data compression=CompressionType.LZMA # Compression option )
from bitwave import AudioAnalyzer # Detect BPM bpm = AudioAnalyzer.detect_bpm(audio_data, sample_rate=44100) # Spectral analysis spectral = AudioAnalyzer.spectral_analysis(audio_data, sample_rate=44100) print(f"Dominant frequency: {spectral['dominant_frequency']} Hz") # Generate audio fingerprint fingerprint = AudioAnalyzer.audio_fingerprint(audio_data, sample_rate=44100) # Detect musical key key = AudioAnalyzer.detect_key(audio_data, sample_rate=44100) # Loudness analysis (LUFS) loudness = AudioAnalyzer.analyze_loudness(audio_data, sample_rate=44100)
from bitwave import AudioConverter # Convert to Bitwave AudioConverter.to_bitwave("input.wav", "output.bwx", bpm=120) # Convert from Bitwave AudioConverter.from_bitwave("input.bwx", "output.wav", format="wav") # Batch conversion results = AudioConverter.batch_convert( ["file1.wav", "file2.flac"], "output_dir", output_format="bwx" )
from bitwave import AudioEffects # Apply reverb reverb_audio = AudioEffects.apply_reverb(audio_data, sample_rate=44100, room_size=0.7) # Apply delay delayed_audio = AudioEffects.apply_delay(audio_data, sample_rate=44100, delay_ms=250) # Apply distortion distorted_audio = AudioEffects.apply_distortion(audio_data, drive=0.8) # Apply EQ eq_audio = AudioEffects.apply_eq( audio_data, sample_rate=44100, frequencies=[100, 1000, 5000], gains_db=[3, -2, 1] ) # Normalize normalized = AudioEffects.normalize(audio_data, target_level=0.95)
from bitwave import BatchProcessor # Batch convert directory results = BatchProcessor.batch_convert( "input_dir", "output_dir", output_format="bwx", max_workers=4 ) # Batch analyze analysis = BatchProcessor.batch_analyze( "audio_dir", output_file="analysis.json" ) # Batch normalize BatchProcessor.batch_normalize("input_dir", "output_dir")
from bitwave import UniqueTools # Tempo matching (time-stretch without pitch change) matched = UniqueTools.tempo_match( audio_data, source_bpm=120, target_bpm=140, sample_rate=44100 ) # Pitch shifting (change pitch without tempo change) shifted = UniqueTools.pitch_shift( audio_data, sample_rate=44100, semitones=2 ) # Create spatial audio (3D positioning) spatial = UniqueTools.create_spatial_position( audio_data, x=0.5, y=0.3, z=0.1, sample_rate=44100 ) # Ambisonic encoding ambisonic = UniqueTools.create_ambisonic(audio_data, x=0.5, y=0.3, z=0.1) # Granular synthesis granular = UniqueTools.create_granular_synthesis( audio_data, grain_size_ms=50.0, overlap=0.5, pitch_shift=1.2 )
from bitwave import QualityAnalyzer # Comprehensive quality analysis quality = QualityAnalyzer.analyze_quality(audio_data, sample_rate=44100) # Calculate SNR (with reference) snr = QualityAnalyzer.calculate_snr(reference_audio, processed_audio) # Detect clipping clipping = QualityAnalyzer.detect_clipping(audio_data) print(f"Clipped samples: {clipping['percent_clipped']}%")
from bitwave import MetadataManager, ExtendedMetadata # Read metadata metadata = MetadataManager.read_metadata("file.bwx") extended = MetadataManager.read_extended_metadata("file.bwx") # Write metadata meta = ExtendedMetadata( title="My Song", artist="Artist Name", album="Album Name", genre="Electronic", bpm=128.0, key="Am" ) MetadataManager.write_metadata("file.bwx", meta) # Search by metadata matches = MetadataManager.search_by_metadata("audio_dir", {"genre": "Electronic"})
use bitwave::{BitwaveFile, Metadata, SpatialData}; // Read a Bitwave file let file = BitwaveFile::read("track.bwx")?; let metadata = file.metadata(); // Write a Bitwave file let metadata = Metadata { sample_rate: 44100, channels: 2, duration: 0.0, bpm: Some(120.0), }; let file = BitwaveFile::new(metadata, None, audio_data); file.write("output.bwx")?;
- ๐ฎ Game Audio Engines โ Unity, Unreal, Godot with spatial audio support
- ๐ง VR / AR Experiences โ Immersive 3D audio with HRTF simulation
- ๐๏ธ Live DJ Sets โ Tempo-controlled transitions and beat matching
- ๐ผ Immersive Installations โ 3D soundscapes and ambisonic audio
- ๐ก Real-time Streaming โ Spatial audio streaming capabilities
- ๐จ Audio Production โ Professional effects and quality analysis
- ๐ฌ Audio Research โ Comprehensive analysis and fingerprinting tools
- ๐ฆ Batch Processing โ Efficient processing of large audio libraries
- ๐ต Music Production โ Tempo matching, pitch shifting, and effects
- ๐ฌ Post-Production โ Quality analysis and format conversion
bitwave.coreโ Core file format handler with compression supportbitwave.compressionโ Lossless (ZLIB, LZMA) and lossy compressionbitwave.analysisโ BPM detection, spectral analysis, fingerprinting, key detectionbitwave.converterโ Multi-format conversion (WAV, FLAC, OGG, etc.)bitwave.effectsโ Professional audio effects (reverb, delay, distortion, filters, EQ)bitwave.batchโ Parallel batch processing utilitiesbitwave.metadataโ Extended metadata management and searchbitwave.qualityโ Audio quality analysis (SNR, THD, clipping detection)bitwave.uniqueโ Unique tools (tempo matching, pitch shifting, spatial audio, granular synthesis)bitwave.utilsโ Utility functions for common audio operations
bitwave infoโ File information and metadatabitwave convertโ Format conversion with compression optionsbitwave analyzeโ Comprehensive audio analysisbitwave effectsโ Apply audio effects via CLIbitwave batchโ Batch process multiple filesbitwave metadataโ Manage file metadatabitwave qualityโ Analyze audio quality metricsbitwave uniqueโ Unique audio processing tools
- โ CLI tools for encoding/decoding
- โ Python SDK with NumPy integration
- โ Comprehensive audio analysis tools
- โ Professional audio effects library
- โ Batch processing with parallel execution
- โ Format conversion capabilities
- โ Metadata management system
- โ Quality analysis tools
- โ Cross-platform player with advanced features
- โ Compression support (lossless and lossy)
- Core
.bwxformat & parser - Python SDK implementation
- Open source cross-platform player
- Lossless & hybrid compression support (ZLIB, LZMA, FLAC-style)
- Audio analysis tools (BPM, spectral, fingerprinting)
- Format conversion (WAV, FLAC, OGG, etc.)
- Professional audio effects library
- Batch processing utilities
- Metadata management system
- Quality analysis tools
- Unique audio processing tools (tempo matching, spatial audio, etc.)
- Enhanced spatial audio with HRTF data
- Real-time processing capabilities
- Streaming support
- Realtime tempo-sync with MIDI/OSC
- Plugin SDK for audio software (Ableton, FL Studio, Reaper)
- Web-based player interface
- Machine learning integration for audio enhancement
- Cloud storage integration
- Advanced granular synthesis engine
We're building Bitwave in the open. Feedback, feature requests, and contributors are welcome!
๐ Issues โข Discussions
MIT License โ use it freely, contribute openly, play it loud.
Copyright ยฉ 2025 Mehmet T. AKALIN / Digital Vision
For detailed documentation on all features and tools, see:
- NEW_FEATURES.md โ Comprehensive guide to all new features
- API documentation available via
help()in Python interactive shell - CLI help available via
bitwave --helporbitwave <command> --help
# Convert WAV to Bitwave with compression bitwave convert song.wav song.bwx --compression lzma # Analyze the file bitwave analyze song.bwx --all # Apply effects and save bitwave effects song.bwx song_processed.bwx --reverb 0.6 --normalize
# Convert entire directory bitwave batch ./wav_files ./bwx_files --convert bwx --workers 8 # Analyze all files and export results bitwave batch ./audio_dir --analyze > analysis.json
from bitwave import BitwaveFile, AudioAnalyzer, AudioEffects, CompressionType # Load and analyze bw = BitwaveFile("track.bwx") bw.read() audio = bw.get_audio_data() bpm = AudioAnalyzer.detect_bpm(audio, 44100) # Process with effects processed = AudioEffects.apply_reverb(audio, 44100, room_size=0.7) processed = AudioEffects.normalize(processed) # Save with compression output = BitwaveFile("output.bwx") output.write(processed, 44100, bpm=bpm, compression=CompressionType.LZMA)
Built for creators, coders, and cosmic listeners.
โ Bitwave: Redefining the sound of the future.