Skip to content

hTuneSys/hexaGenMini

πŸŽ›οΈ hexaGenMini

GitHub License: MIT Rust Embassy

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

Get it on Google Play Download on the App Store

Source Code: hTuneSys/hexaGenApp

πŸš€ Quick Start

  1. Connect your hexaGenMini via USB
  2. Flash Firmware:
    cd firmware
    cargo run
  3. 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 version
  • AT+SETRGB=<ID>#<R>#<G>#<B> - Set RGB LED color
  • AT+FREQ=<ID>#<FREQ>#<TIME_MS> - Generate frequency with dwell time
  • AT+RESET=<ID> - System reset
  • AT+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

  1. Fork the repository
  2. Create a feature branch from develop
  3. Make your changes
  4. Submit a pull request
  5. Follow conventional commit format

Areas for Contribution

  • Firmware enhancements
  • Hardware improvements
  • Documentation
  • Mobile app features
  • Testing and CI/CD

πŸ“„ Documentation

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“ž Contact

πŸ™ 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.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published