Imported from GitHub: hTuneSys/hexaGenMini · commit 9c77dcd · license MIT
Description
Open-source USB MIDI-controlled signal generator built with Rust (Embassy) on RP2040 + AD985x DDS for education, labs, and music synthesis.
README
🎛️ hexaGenMini
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.
✨ Features
- 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
📱 Mobile App
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
🚀 Quick Start
- 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
📦 Installation
Prerequisites
- 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
Setup
# 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-eabi
Flashing Firmware
cd firmware
cargo run
Put your device in BOOTSEL mode (hold BOOTSEL while plugging in) when prompted.
🎯 Usage
AT Command Protocol
hexaGenMini uses AT commands sent via MIDI SysEx messages:
Supported Commands
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
Example Usage
# 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
Hardware Connections
- USB: Power and MIDI communication
- SMA Output: DDS signal output
- RGB LED: Status indication
- BOOTSEL: Firmware update mode
🏗️ Architecture
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.
📁 Project Structure
hexaGenMini/
├── firmware/ # Rust firmware (Embassy framework)
├── hardware/ # KiCad PCB designs
├── mechanic/ # FreeCAD enclosure designs
├── docs/ # Documentation
├── .github/ # CI/CD workflows
└── README.md
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Workflow
- Fork the repository
- Create a feature branch from
develop - Make your changes
- Submit a pull request
- Follow conventional commit format
Areas for Contribution
- Firmware enhancements
- Hardware improvements
- Documentation
- Mobile app features
- Testing and CI/CD
📄 Documentation
- Getting Started - Setup guide
- Architecture - System design
- Project Structure - Repository overview
- Contributing - How to contribute
- FAQ - Common questions
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
📞 Contact
- Website: hexatune.com
- Email: [email protected]
- GitHub: hTuneSys
- Issues: GitHub Issues
🙏 Acknowledgments
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.
No comments yet. Be the first to ask about this board.