µCtrl is a firmware framework specifically designed for the µMODULAR hardware ecosystem. It dramatically simplifies the process of developing robust, high-performance musical instruments, sequencers, controllers, and other interactive devices using Arduino/PlatformIO compatible boards.
Think of µCtrl as the software brain connecting your hardware ideas. It provides tested drivers for common electronic components and a structured framework for building your application's logic and user interface, letting you focus on creativity rather than low-level complexities.
Core Benefits of Using µCtrl
Precise Real-time Control
Achieve musically tight timing. µCtrl leverages hardware timer interrupts for accurate task scheduling, crucial for sequencers and responsive instruments.
Reliable & Safe Operation
Built for stability during performance. Features resource-safe APIs to prevent common pitfalls in real-time embedded programming.
Accelerated Development
Get building faster. Provides pre-built drivers and UI components, letting you focus on unique application features, not reinventing basic hardware interfacing.
Broad Hardware Support
Easily integrate common parts. Includes tested drivers for shift registers (165/595), multiplexers (4051/4067), displays, MIDI, touch sensors, and more.
Multi-Architecture Portability
Write code once, run on many platforms. Compile your projects seamlessly across various microcontrollers (AVR, ARM) without extensive modifications.
Included µCtrl Modules (Hardware Abstraction)
µCtrl provides dedicated modules to interface with specific types of hardware:
AIN (Analog Input)
Read pots, faders, sensors (up to 64). Supports direct ADC pins & multiplexers (4051/4067). Provides cleaned, real-time value updates.
DIN (Digital Input)
Handle buttons & encoders. Supports direct pins & shift registers (165). Includes debouncing and triggers callbacks on state changes.
DOUT (Digital Output)
Control LEDs & other digital outputs. Supports direct pins & shift registers (595). Allows direct, real-time control of output states.
TOUCH (Capacitive)
Implement touch interfaces using common analog inputs of your microcontroller. Provides reliable detection of touch events for modern UIs.
MIDI Interface
Send & receive MIDI messages reliably. Wraps standard MIDI libraries with a resource-safe interface suitable for real-time tasks.
OLED Display
Drive monochrome OLED screens (I2C/SPI) using the powerful U8g2 library. Simplified API for drawing text and graphics.
STORAGE Interface
Abstracts non-volatile storage. Read/write data easily using internal EEPROM or external SD cards for presets and settings.
External SRAM
Expand available memory by interfacing with external SRAM chips (e.g., 23LC1024), crucial for complex applications with large data needs.
PAGE UI System
Build complex, interactive user interfaces. Provides a structured environment using components and pages for modular application design.
Applications Powered by µCtrl
These examples (also featured on the main µMODULAR page) showcase projects built using the µCtrl firmware:
Aciduino V2 Sequencer
This Roland-inspired step sequencer utilizes µCtrl for handling inputs (pots/buttons), outputs (LEDs), MIDI communication, and display management.
Atari 2600 MIDI Station
Midilab's custom unit relies heavily on µCtrl for its sequencing engine, controller logic, MIDI processing, and real-time display updates via the Page system.
Getting Started with µCtrl
Ready to start coding your custom hardware?
Explore the µCtrl GitHub Repository for detailed documentation, setup instructions, examples, and the complete framework source code.