hexaGenMini is a compact, USB-powered signal generator designed for music synthesis and electronic experimentation. Built on the Raspberry Pi Pico (RP2040), it features Direct Digital Synthesis (DDS) for precise frequency generation, RGB status indication, and USB MIDI control via AT commands.
Developed by hexaTune LLC and the hexaTeam, led by Husamettin ARABACI.
- Precise Frequency Generation: AD985x DDS chip supporting frequencies up to 125MHz
- USB MIDI Control: Send AT commands via MIDI SysEx for remote control
- RGB Status LED: Visual feedback for device state and DDS availability
- Firmware Updates: Built-in BOOTSEL mode for easy firmware flashing
- Cross-Platform: Works with any USB MIDI-compatible host
- Mobile App: Control via dedicated iOS/Android app (hexaGenApp)
- Open Source: Fully open hardware and software under MIT license
Control your hexaGenMini wirelessly with our companion mobile app:
- iOS & Android Support
- Real-time Frequency Control
- Preset Management
- Visual Waveform Display
Source Code: hTuneSys/hexaGenApp
- Connect your hexaGenMini via USB
- Flash Firmware:
cd firmware cargo run - Send AT Commands via MIDI SysEx:
AT+FREQ=1#1000000#1000 # Set 1MHz for 1 second AT+SETRGB=2#255#0#128 # Set LED to purple
- Rust (1.86.0+): Install rustup
- picotool: For flashing RP2040
- Node.js & pnpm: For development tools
- KiCad (optional): For hardware modifications
- FreeCAD (optional): For enclosure modifications
# Clone repository
git clone https://github.com/hTuneSys/hexaGenMini.git
cd hexaGenMini
# Install development dependencies
pnpm install
pnpm prepare # Setup husky pre-commit hooks
# Install Rust targets
rustup target add thumbv6m-none-eabicd firmware
cargo runPut your device in BOOTSEL mode (hold BOOTSEL while plugging in) when prompted.
hexaGenMini uses AT commands sent via MIDI SysEx messages:
AT+VERSION?- Get firmware versionAT+SETRGB=<ID>#<R>#<G>#<B>- Set RGB LED colorAT+FREQ=<ID>#<FREQ>#<TIME_MS>- Generate frequency with dwell timeAT+RESET=<ID>- System resetAT+FWUPDATE=<ID>- Enter firmware update mode
# Query version
AT+VERSION?
# Set frequency to 440Hz for 5 seconds
AT+FREQ=1#440#5000
# Set LED to red
AT+SETRGB=2#255#0#0- USB: Power and MIDI communication
- SMA Output: DDS signal output
- RGB LED: Status indication
- BOOTSEL: Firmware update mode
The firmware is built with Rust and Embassy, running concurrent async tasks:
- USB Task: MIDI communication handling
- AT Dispatcher: Command parsing and routing
- DDS Task: Frequency generation control
- RGB Task: LED management
- Main Loop: Status monitoring
For detailed architecture information, see docs/ARCHITECTURE.md.
hexaGenMini/
βββ firmware/ # Rust firmware (Embassy framework)
βββ hardware/ # KiCad PCB designs
βββ mechanic/ # FreeCAD enclosure designs
βββ docs/ # Documentation
βββ .github/ # CI/CD workflows
βββ README.md
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch from
develop - Make your changes
- Submit a pull request
- Follow conventional commit format
- Firmware enhancements
- Hardware improvements
- Documentation
- Mobile app features
- Testing and CI/CD
- Getting Started - Setup guide
- Architecture - System design
- Project Structure - Repository overview
- Contributing - How to contribute
- FAQ - Common questions
This project is licensed under the MIT License - see the LICENSE file for details.
- Website: hexatune.com
- Email: info@hexatune.com
- GitHub: hTuneSys
- Issues: GitHub Issues
Built with β€οΈ by the hexaTeam at hexaTune LLC.
Special thanks to the Rust embedded community and Embassy framework developers.
hexaGenMini - Precision meets portability in signal generation.