- Overview
- Disclaimer
- Features
- Hardware Requirements
- Installation
- Configuration
- Build and flash
- Usage
- Troubleshooting
- Contributing
- License
The TONEX ONE Controller is a project that enables MIDI support for the TONEX ONE device. It allows users to change active presets on the TONEX ONE using a USB connection, significantly enhancing its versatility in live performance and studio settings.
This project is an unofficial "addon" for the TONEX ONE device and is not affiliated with, endorsed by, or supported by IK Multimedia.
Use of this project is at your own risk. The author and contributors of this project are not responsible for any damage or issues that may arise from using this project.
- Translates MIDI Program Change messages to TONEX ONE commands
- Based on the ESP32-S3 microcontroller
- Built using ESP-IDF (Espressif IoT Development Framework)
- Enables integration of TONEX ONE into complex pedalboards with MIDI controllers
Description of communication protocol can be found here
To implement this project, you'll need:
- ESP32-S3 board
- MIDI input circuit connected to PIN 5 of ESP32-S3
The MIDI input circuit can be constructed using the design available at: Notes and Volts - MIDI and Arduino: Build a MIDI Input Circuit
Target | Pin |
---|---|
Receive Data (RxD) | 5 |
5V | 3.3V |
Ground | GND |
Note: Basic soldering skills are required for assembling the MIDI input circuit.
Some ESP32-S3 boards do not function as USB hosts out of the box, which can lead to errors like this:
I (1378) TONEX_CONTROLLER_USB: Opening CDC ACM device 0x1963:0x00D1...
I (2378) TONEX_CONTROLLER_USB: Failed to open device
To enable USB host functionality, you may need to solder a jumper on the back of the board. The soldering area will typically resemble this:
To complete the setup, connect the two small pads shown in the image with solder. This modification bridges the connection required for USB host support.
- Clone this repository:
git clone https://github.com/vit3k/tonex_controller.git
- Navigate to the project directory:
cd tonex_controller
- Set up ESP-IDF environment (if not already done)
-
Set the target to ESP32-S3:
idf.py set-target esp32s3
-
Because default FIFO size configuration options for ESP32S3 are not suitable for Tonex One as it has wPacketMaxSize set to 512 for OUT endpoint modification of internals of IDF is needed:
- Open file:
components/hal/usb_dwc_hal.c
- Locate the
usb_dwc_hal_set_fifo_bias
function - Modify as follows:
case USB_HAL_FIFO_BIAS_DEFAULT: fifo_config.nptx_fifo_lines = OTG_DFIFO_DEPTH / 4;
- Open file:
If anyone knows a better solution for this issue please let me know.
Build the project and flash it to the board:
idf.py -p PORT flash monitor
(Exit serial monitor with Ctrl-]
)
The controller supports MIDI Program Change messages to control the active slot on your TONEX ONE device:
- MIDI Channel: Hardcoded in
midi.cpp
file (MIDI_CHANNEL
constant) - Program Change Mapping:
- Program 1: Changes active slot to A
- Program 2: Changes active slot to B
To use:
- Ensure your MIDI controller is connected to the MIDI input circuit
- Send Program Change messages from your MIDI controller
- The controller will translate these to commands for TONEX ONE
If you encounter a flashing error on Mac:
- Install the driver from: CH34XSER_MAC_ZIP
- Use the device
/dev/cu.wchusbserial*
for flashing
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License. See the LICENSE file for details.