YAMAHA THR10 USB Remote Preset/Patch Selector

by giorgpasq1 in Circuits > Audio

2633 Views, 8 Favorites, 0 Comments

YAMAHA THR10 USB Remote Preset/Patch Selector

prima.jpg

The YAMAHA THR10 is a great practice amp with tons of possibility.

A nice feature is the possibility to use its Editor to store up to 100 patches in your computer (patch or preset is the amp setting, including effects that are only accessible through the editor, like a superb COMPRESSOR).

Unfortunately on the original version (not the recent series II) you need the THR10 connected to the computer to edit and select the patches.

To eliminate this constrain Mathis Rosenhauer in 2016 has designed a little device based on Arduino UNO to store the patches and, connecting through the THR10 USB port, select them without the need to have constantly the computer connected (https://github.com/MathisRosenhauer/THR_Footswitch/blob/master/THR_Footswitch.ino).

Uwe Brandt has evolved the idea adding an OLED display to show the Name of the Patches (https://www.mehlbrandt.de/thr/thr_10.html).

I have build this little device based on the honorably job done by these 2 very skilled people, thanks to both!

The main scope of this Instructables is to help other people like me (not super-skilled!) to build the device in the most leanest version with some - to me - nice features:

  1. store 60 Patches directly in the Arduino UNO memory (no SD-card, after weeks of frustration and, honestly, to load the patches in the UNO it's not so difficult!)
  2. power supply through the Arduino UNO (any USB power supply works)
  3. OLED display to show Patches Number and Name
  4. Rotary Encoder to quickly access Patches
  5. Push-Button on the Rotary encoder to move on the next 10th Patches so you can organize your patches by kind (e.g. 1-9 "Classic Rock" 10-19 "Clean" 20-29 "Jazz"...)

The final result is a little box you can keep close to the THR10 to access the enormous number of sounds you like!

Supplies

IMG_007.jpg
  1. Arduino USB Host Shield Adapter Breakout ADK UNO MEGA with UNO Board included https://www.ebay.com/itm/293031309980 - $21.49


  1. Hosyond 5 Pcs 0.96 Inch OLED I2C Display Module 128x64 Pixel OLED Display Screen IIC Serial (Blue and Yellow) https://www.amazon.com/ (ASIN ‎B09C5K91H7) - $2.80 each


  1. Cylewet 5Pcs 360 Degree Rotary Encoder Code Switch Digital Potentiometer with Push Button 5 Pins and Knob Cap for Arduino (Pack of 5) https://www.amazon.com/ (ASIN B07DM2YMT4) - $1.78 each


  1. DaierTek 1590B Stomp Box Guitar Pedal Enclosure 112x61x32 MM Aluminum Guitar Pedal Box Diecast Stom https://www.amazon.com/ (ASIN B07VKR51NN) - $7.99


Total approx. $34.06

Schematic

Untitled.png

The schematic can't be simpler and straightforward:

  1. Arduino Board and its shield are automatically connected and no need to do more! (it is not represented on the schematic)
  2. Digital Input 2 -> Encoder A signal
  3. Digital Input 3 -> Encoder B signal
  4. Digital Input 4 -> Encoder Push-Button
  5. SDA and SCL one-to-one from UNO board to OLED display
  6. +5V from Arduino UNO through its USB connector (I have used an old iPhone power supply)

That's it!

Arduino Sketch

Root_Directory.jpg

The Code is divided in:

declarations (please be sure you upload all the needed libraries)

OLED library

USB library

Interrupt for the A-B Encoder signals

the function to Send Patches to THR10 (by Mathis Rosenhauer)

the function to Read Patches Name (by Uwe Brandt)

the function to Display the Text

I hope that all the remarks help to understand the way how the code works.

The tricky part is how to manage the Patches into the UNO Memory!

As recommended by Mathis Rosenhauer you have to generate the file patches.h

This sounds probably very immediate for people that are very used to coding... but not for me!

Following Mathis instructions and trying few different ways, I ended to this sequence of steps:

  1. first produce a script (use IDLE in Launchpad if you have a Mac) called "patchdumpt.py" (reported in the sketch note - if you don't succeed, you can use the "patchdumpt.py" file I have attached here)
  2. in the root directory save as well the file "yamaha.ydl" that you have generated with the YAMAHA THR10 Editor
  3. Then use the Terminal (Mac) and type the command:
  4. .....$ python ./patchdump.py yamaha.ydl -n 60 > patches.h
  5. using 60 as the total number of patches, sketch uses 98% of program storage space, practically this is the MAX for Arduino UNO capacity!
  6. be sure that the Preset file ("yamaha.ydl" from THR10 Editor) and the script "patchdump.py" are in the same root directory (user\..\) when the file "patches.h" has been generated, as shown in the picture above.
  7.  copy "patches.h" in the same folder of the Arduino .ini sketch and add the file as well in the Sketch\Add File...

Done!

When you change the patches in your THR10 Editor you have to repeat step 2. 3. and 4.

Building

IMG_0110.jpg
IMG_0109.jpg
IMG_0106.jpg
IMG_0107.jpg

To build the device I have followed these steps:

  1. The Arduino USB Host Shield arrived already connected to the UNO Board. In case you buy it separately well... assemble it like any other host shield!
  2. Once assembled, mark the 3 opening on the side of the Stomp Box to drill and file to permit the external connections. Technically you don't need to drill the external power supply connector (top left in the picture) if you use - as I did - the UNO USB connector to supply the +5V
  3. Use some plastic sheet to be sure you isolate the board from the body of the stomp box: if you use a transparent one you can cover all the bottom of the box and the sheet will protect the OLED display as well.
  4. In the box there will be enough space for the OLED Display and the Rotary Encoder (2 opening on the front of the Stomp Box) I have used some pieces of prototype PCB to keep connected and anchored through the Rotary Encoder at the front of the box.
  5. I have used rigid wires to connect the UNO Board to the Encoder and OLED Display. I have soldered directly on the board to avoid loose connections.
  6. to keep the boards firm in the box I have used some self-adhesive Black Sponge Rubber Weather Stripping Tape on the connector to have the board pressed by the lid of the stomp box. The tight hole on the USB connector and the rigid wire do the rest...

Preset Selector in Use

IMG_0106.jpg
IMG_0085 2.jpg
IMG_0096_1.jpg
IMG_0089.JPG
IMG_0097.JPG
IMG_0086.JPG

Well, the purpose of this project was to simplify the operations through the use of a rotating encoder.

  1. Connect the USB port of the Host Shield (bottom center in the picture above) to the USB connector on the rear of the THR10
  2. Connect the USB port of the UNO Board (top right in the picture above) to a suitable USB power supplier (+5V.)
  3. The Display will show "YAMAHA THR-10" and a Patch number "0"
  4. Turn ON the THR10 and rotate the encoder. You'll see the Name of the Patches on the top and the Patch Number in the center.
  5. You can select the patch from 1 to 60 just rotating clock or counter-clockwise
  6. to quickly jump to the next 10th simply press the encoder. For example if you are on the patch nr. 6 pushing once will move to 10, pushing again will move to 20 etc.
  7. after 50 if you push it you'll be back to 1. This is handy to be fast in going back to the lower number patches without rotating a lot the encoder counterclockwise!

If you organize the patches in a logical way, for example:

1-9 The most used ones ...

10-19 Rock Sounds ...

20-29 Rock Artist Sounds ...

30-39 David Gilmore & Santana ...

40-49 Clean Sounds ...

50-60 Acoustic and Jazz...

it'll be very rare that you'll need to change it again! (a good jazz player will probably use the 20th for Jazz patches ah ah...)

I have played with it in the last couple of weeks and I believe it's doing its job: I have the device constantly connected just beside the THR10 and, using the looper, I have spent a lot of time (to my wife, a bit too much!) experimenting some sounds that are quickly accessible now.

I'm going to sort the Patches in the way I have recommended for better usability...

Enjoy