Skip to content
Foot Controller for THR10 Preset Switching
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
images Scale photos Jan 19, 2019 Describe card reader problems May 12, 2019
THR_Footswitch.ino Detect connected amp by getUsbTaskState() only Jan 25, 2019 Allow patches to reside in progmem Apr 19, 2016
patches.h Add sample patches.h for testing May 12, 2018

Foot Controller for THR10 Preset Switching


This Arduino sketch uses a USB Host shield to transfer preset data to one of the Yamaha THR guitar amplifiers. It works similar to the Yamaha THR Editor in that it uses the same file format for presets and the same USB (MIDI) protocol to send the presets to the THR10. Of course you cannot modify the presets with the sketch as you can do with the THR Editor.

The benefit is that you can fit the Arduino and everything into a pedal box and switch between presets without the need for a full-sized computer.

The most interesting part is the send_patch() function. It could be used on different hardware setups with minor changes.


The sketch was written for the following hardware. There are many alternatives available which may work with the software as well.

  • Arduino Uno
  • USB Host Shield for Arduino
  • SPI Micro SD Card Adapter (optional)
  • TM1637 4-digit display

Software libraries used:

The sketch also expects two momentary switches to navigate through the presets stored on a micro SD card or in PROGMEM. All pin assignments are indicated at the top of THR_Footswitch.ino.

look inside

If PROGMEM is used to store the presets, then the Python script may be used to convert presets from a .YDL file to a PROGMEM variable.

./ THR10C.YDL -n 25 > patches.h

This would put the first 25 presets from THR10C.YDL into PROGMEM. USE_SDCARD then has to be set to 0 in THR_Footswitch.ino to use PROGMEM for presets.

May 2019 update

Quite a few people built this project over the past four years and that is only counting those who contacted me. I'm happy to say that most people eventually got the footswitch working but there is one thing that caused trouble: the SD card reader. There seem to be many card readers out there who don't play nicely on the SPI bus. The symptom is that the sketch gets stuck because the THR10 is never recognized by the USB host. Some people also reported that the SD card itself caused the problems.

When you assemble the project, you should first build the version without the card reader (presets in PROGMEM). When this works reliably you can add the card reader. If it then stops working you should try a different card reader and/or SD card.

I had good results with a Catalex card reader and a Kingston 8 GB micro SD card but I also got reports that some revisions of the Catalex reader didn't work.

You can’t perform that action at this time.