Modern, professional sound editor and librarian for the Waldorf Blofeld synthesizer. Built with Java 25 and JavaFX 25, featuring comprehensive editing capabilities, advanced wavetable creation, and bidirectional MIDI synchronization.
- 385 parameters - Complete Blofeld sound engine coverage
- Interactive envelopes - Draggable ADSR curves with visual feedback
- Modulation matrix - 16-slot routing with real-time updates
- Arpeggiator - Full pattern editor with step sequencer
- Bidirectional MIDI sync - Real-time hardware synchronization (1-5ms latency)
- Advanced search - Tokenized search with prefixes (tag:, cat:, bank:)
- Collections & Tags - Organize sounds with custom collections and tags
- Tree navigation - Hierarchical browsing by bank, category, collection, tag
- Bulk operations - Multi-select for batch editing
- Import/Export - .mid and .syx file support
- 64 waves × 128 samples - Full Blofeld wavetable format (21-bit precision)
- Sparse keyframe system - Efficient editing with automatic interpolation
- 4 morph types - Constant, Curve, Translate, Spectral
- Additive synthesis - Up to 50 harmonics with 5 wave types
- Advanced drawing tools - Freehand, Line, Smooth, Normalize, Invert, Reverse
- Real-time 3D preview - Interactive visualization of entire wavetable
- 72 factory presets - Built-in Blofeld wavetables included
- MIDI dump - Send wavetables directly to hardware
- 16-part mixer - Complete multi-timbral editing
- Visual editors - Interactive Keys (88-key piano) and Velocity Ramp displays
- Group editing - Mirror parameter changes across selected parts
- Hardware sync - Identity-aware mode switching (Single/Multi)
- MIDI protocol - Full MULR/MULD implementation
- Database management - Custom path, automatic backups (5-30 min intervals)
- MIDI configuration - Device ID, channel filtering (1-16, OMNI)
- Editor preferences - Autosave modes, MIDI filtering options
- Persistent settings - All preferences saved across restarts
- Java 25 - Modern language features (sealed interfaces, records, pattern matching)
- JavaFX 23 - Cross-platform GUI with reactive Properties
- AtlantaFX - Modern dark theme system
- Maven - Build system with dependency management
- SQLite + ORMLite - Lightweight database with ORM
- javax.sound.midi - Built-in MIDI support
- JUnit 5 - Comprehensive test coverage
- 525 tests - All passing, 0 failures
- 25% test coverage - Model and service layers fully tested
- Clean architecture - Service layer with TDD methodology
- Zero resource leaks - Proper thread safety and cleanup
- Business logic extracted - 23% remaining in UI controllers
- Java 25 or later
- Maven 3.9+
- Waldorf Blofeld synthesizer (hardware or plugin)
- Operating System: Windows, macOS, or Linux
# Clone repository
git clone https://github.com/mikolas/lyra.git
cd lyra
# Build
mvn clean compile
# Run
mvn javafx:run
# Run tests
mvn test
# Package JAR
mvn packagemvn clean package
java -jar target/lyra-0.1.0-SNAPSHOT.jar- Ensure Java 25 is installed:
java -version - Maven will download all dependencies automatically
- Connect your Blofeld via USB or MIDI interface
- Launch Lyra
- Go to Settings → MIDI Connections
- Select your Blofeld device
- Click OK to connect
- Open Sound Editor from menu or toolbar
- Edit parameters - changes sync to hardware in real-time
- Use Save to store in database
- Use Dump to Hardware to save to Blofeld memory
- Open Wavetable Editor
- Create keyframes at different wave positions
- Select morph type (Curve, Translate, Spectral)
- Click Apply to generate interpolated waves
- Use Dump to Hardware to send to Blofeld
lyra/
├── src/
│ ├── main/
│ │ ├── java/net/mikolas/lyra/
│ │ │ ├── ui/ # JavaFX controllers
│ │ │ ├── service/ # Business logic services
│ │ │ ├── model/ # Data models
│ │ │ ├── midi/ # MIDI protocol
│ │ │ └── db/ # Database layer
│ │ └── resources/ # FXML, CSS, images
│ └── test/ # Unit tests
├── pom.xml # Maven configuration
└── README.md
mvn clean compile # Compile source
mvn test # Run tests
mvn package # Create JARmvn spotless:check # Check code formatting
mvn spotless:apply # Format code automatically- Google Java Style Guide
- Java 25 features encouraged
- JavaFX Properties for reactive programming
- FXML for UI layouts
- TDD methodology for services
mvn test # Run all tests
mvn test -Dtest=ClassName # Run specific test- Sound Editor - Full 385-parameter editing with real-time sync
- Sound Librarian - Advanced search, collections, tags, bulk operations
- Wavetable Editor - Production-ready with keyframes, morphing, additive synthesis
- Multi-Mode Editor - 16-part mixer with visual editors and group editing
- MIDI Protocol - Bidirectional sync with Identity Handshake
- Settings - Database, MIDI, editor, and misc preferences
- Hardware Dump - Request/receive sounds and multis from Blofeld
- Sound randomization
- Virtual keyboard
- Wavetable undo/redo
- Theme customization
- Window geometry persistence
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Follow existing code style
- Add tests for new features
- Submit a pull request
MIT License - see LICENSE file for details.
Inspired by Bigglesworth - Original Python/Qt editor by Maurizio Berti. The Bigglesworth codebase was used as reference for reverse engineering the Blofeld MIDI protocol.
Mikolas Hämäläinen
GitHub: @mikolas
Email: mikolas@mikolas.net
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Note: This is an independent project and is not affiliated with or endorsed by Waldorf Music.