TR-9090 digital potentiometers

Hi all,

I have started working on the TR-9090 project. I was wondering if anyone could give me some direction regarding using an Arduino board to create a preset interface for it. The idea is to have a computer based step sequencer to trigger the TR-9090 through midi, but i would like to take it one step further and integrate the hardware with my computer even further. Is Arduino a suitable platform to communicate the data necessary. From what I have understood through some reading I would need to replace the potentiometers (of which there are 31 on this project) with digital potentiometers and control these through a microprocessor. Having physical control is not a must for this project but would be an added bonus so any advise on how to possibly integrate endless encoders would also be welcome.

Here is a link to a website with any and all information regarding the TR-9090 project that might give some additional insight into what I am working on and which, if any Arduino boards would be most suitable for this task as well as some advice on how to go about it.

Please excuse me if I havent worded some of the terminology correctly but I am new to this side of the DIY world, having only worked on a few electronic projects. The idea of creating this interface between the analogue and digital world is a potential thesis idea, granted it is deemed possible.

Thanks,
Thomas

P.S. I posted this in the guidance forum too but was unsure if this was a better place to do so.

Here is a link to a website...

Where's the link?

I'm not an expert on any of this stuff... If I were doing this project, I'd have to do quite a bit of research, but maybe I can give you some hints & suggestions.

This seems doable with the Arduino, but there are at least 3 different parts, all requiring hardware & software. You'll have to educate yourself, experiment, and make some design-engineering decisions. I'd get each part working separately before putting everything together.

  1. MIDI interface
  2. Control of 31 digital pots
  3. Input pots or rotary encoders

There are MIDI shields (Arduino add-on boards) and a MIDI library. If you need any MIDI commands that are non-standard you can create your own SysEx (System Exclusive) commands (and add the software to decode these commands). SysEx commands would be used to set-up or configure your instrument. The standard MIDI commands play the notes (or drums).

For 31 digital pots, you'll need a way to address an individual pot. Typically, there is a "chip enable" or "chip select" pin on the digital pot. You send the data over a "bus" to all of the chips, but only one chip (digital pot chip) is enabled and listening-responding to the command. You'll probably want to use a shift-register/multiplexing scheme. Basically, there is a clock line, data line, and a latch line. The data is synchronized with the clock, the data is shifted-in one bt at a time so for example, the the data high/low state at the 3rd clock pulse is associated with the 3rd chip. When you're done, you send a latch pulse, sending the correct high/low data to each pot.

There shift register examples showing how to control LEDs, and I suggest you start with LEDs before thinking about addressing pots. You probably won't find a 32-bit shift register, but you can cascade shift registers togehter to address/control as many LEDs (or pots) as you wish. I have a project that uses 3 8-bit shift registers to contrtol 24 LEDs. Using 3 control lines out of the Arduino I can individually "address" each LED and create any possible LED on-off pattern.

Another option is parallel addressing with an address decoder.

Different digital pots are controlled/interfaced differently. Some kind of serial interface seems to be the mnost common, but there are also digital pots with "step-up" and "step-down" interfaces. The I2C interface seems to be the most common, but thats an "engineering choice" you need to make. I suggest experimenting/testing controlling one pot before you add multiple pots and the addressing.

Yu can also find examples for rotary encoders. Again, start with something simple like controlling the brightness of an LED. And if you are using many encoders, you will need an addressing/multiplexing scheme.

Thank you for such a thorough reply. Now that i know it is feasible I can get started with some experimentation.

Would you recommend the Arduino Uno board to start with but also be able to use it in the final product?