Stereo Memory Man w/ Hazarai mod?

All about modern commercial stompbox circuits from Electro Harmonix over MXR, Boss and Ibanez into the nineties.
User avatar
DWBH
Cap Cooler
Information
Posts: 498
Joined: 24 Aug 2007, 16:26
Location: portugal
Has thanked: 12 times
Been thanked: 3 times

Post by DWBH »

Awesome 8)

User avatar
dodgypete
Information
Posts: 11
Joined: 07 Jun 2009, 00:39
Location: Christchurch, New Zealand
Been thanked: 7 times

Post by dodgypete »

Right, here goes....

Image

Image

I've put some labels on this image to indicate the terminals i connected to. The letters (A & B) are just an identifier. I didn't bother checking what the actual A & B terminals were. There are 3 resistors underneath the arduino board to limit the base current to the transistors. The transistors are 2N3904's because that is what I had lying around.

Image

Image

The code is really simple. The rotary encoder will be getting debounced by the existing micro in the memory man(to eliminate false switching when the encoder is turned). I have used delay times for my swtching that are (more than) long enough to still be picked up. Because the program is only performing one function at a time, switch debouncing is unnecessary. If either footswitch is held down, the program will run through its loop then repeat. This enables you to step through the presets by holding down either footswitch.

// Preset selector for Ehx Memory Man with Hazarai
// Written by Pete Curre 8/01/11
// set pin numbers:
const int PresetUP = 2; // the number of the pushbutton pin
const int PresetDOWN = 3; // the number of the pushbutton pin
const int Output1 = 5; // the number of the output pin
const int Output2 = 6; // the number of the output pin
const int Output3 = 7; // the number of the output pin


// variables will change:
int presetUPstate = 0; // variable for reading the pushbutton status
int presetDOWNstate = 0; // variable for reading the pushbutton status

void setup() {
pinMode(PresetUP, INPUT);
pinMode(PresetDOWN, INPUT);
pinMode(Output1, OUTPUT);
pinMode(Output2, OUTPUT);
pinMode(Output3, OUTPUT);
}

void loop(){
// read the state of the pushbutton value:
presetUPstate = digitalRead(PresetUP);
presetDOWNstate = digitalRead(PresetDOWN);

// check if the pushbutton is pressed.
// if it is, fire the outputs
if (presetUPstate == LOW) {
// turn LED on:
digitalWrite(Output1, HIGH);
delay (25);
digitalWrite(Output2, HIGH);
delay (25);
digitalWrite(Output1, LOW);
delay (25);
digitalWrite(Output2, LOW);
delay (25);
digitalWrite(Output3, HIGH);
delay (25);
digitalWrite(Output3, LOW);
delay (250);
}

if (presetDOWNstate == LOW) {
// turn LED on:
digitalWrite(Output2, HIGH);
delay (25);
digitalWrite(Output1, HIGH);
delay (25);
digitalWrite(Output2, LOW);
delay (25);
digitalWrite(Output1, LOW);
delay (25);
digitalWrite(Output3, HIGH);
delay (25);
digitalWrite(Output3, LOW);
delay (250);
}
}

User avatar
Hides-His-Eyes
Tube Twister
Information
Posts: 1940
Joined: 02 Feb 2010, 12:34
Has thanked: 50 times
Been thanked: 51 times

Post by Hides-His-Eyes »

You're a wizard!
Testing, testing, won too fwee

User avatar
DWBH
Cap Cooler
Information
Posts: 498
Joined: 24 Aug 2007, 16:26
Location: portugal
Has thanked: 12 times
Been thanked: 3 times

Post by DWBH »

Many, many thanks. I should be getting an arduino this week, so hopefully I'll get this running fast.

8)

User avatar
coldcraft
Diode Debunker
Information
Posts: 725
Joined: 11 Jul 2009, 01:00
Has thanked: 38 times
Been thanked: 85 times

Post by coldcraft »

genius! anyone have a link to that arduino board?
Black Dynamite wrote:you need to shut the fuck up when grown folks is talkin.

User avatar
Steven_M
Resistor Ronker
Information
Posts: 386
Joined: 06 Jul 2009, 19:50
Has thanked: 59 times
Been thanked: 35 times

Post by Steven_M »

coldcraft wrote:genius! anyone have a link to that arduino board?
This is similar:

http://www.makershed.com/ProductDetails ... Code=MKSP2

Or there is this one:
http://www.sparkfun.com/products/9218

User avatar
DWBH
Cap Cooler
Information
Posts: 498
Joined: 24 Aug 2007, 16:26
Location: portugal
Has thanked: 12 times
Been thanked: 3 times

Post by DWBH »

I'm finally working my way through this project (finally got the extra Atmel for the standalone board), but I'm trying to understand how the transistors are set here.
Input comes from the arduino to the base. Emitter to ground and Collector is the output.
Arduino outputs 5v pulses (ON-5v, OFF-0v). The outer pins on the encoder (the ones to which the transistor collectors are connected to) have a 3.3v potential.
This means that, when I send a pulse from the arduino to the transistor, the output pulse on the collector, is inverted. And, the offset voltage is 3.3v.
So instead of being a 0-5-0-5 pulse wave is 3.3-1.8-3.3-1.8 pulse.
Here's a simulation on falstad: http://www.falstad.com/circuit/#%24+1+5 ... -5+2+-1%0A

Btw, what value for the current limiting resistor to the base should I use?

User avatar
dodgypete
Information
Posts: 11
Joined: 07 Jun 2009, 00:39
Location: Christchurch, New Zealand
Been thanked: 7 times

Post by dodgypete »

The rotary encoder is basically a switch. When it is turned it switches the A & B pins momentarily to ground.
The transistors are doing the same thing. They are simply switching the A & B pins to ground.
There is nothing complicated going on, it's just a basic switch. Because the transistor is being turned fully on(saturated), the voltage on the base is not relevant to the collector and emitter voltages. The inputs on the memory man microcontroller are being switched from 3.3v to 0v.
Your simulation shouldn't have an emitter resistor. It you remove it you will see what is happening.
The base current limiting resistor isn't critical. 1K-10K will be fine.

Good luck :)

User avatar
DWBH
Cap Cooler
Information
Posts: 498
Joined: 24 Aug 2007, 16:26
Location: portugal
Has thanked: 12 times
Been thanked: 3 times

Post by DWBH »

Thank you for the answers dodgypete!
It's working now.
I used latching switches so I had to make some alterations to the code. Maybe I'll make some changes to it in the future, for example, only activating the memorized preset when you stop stomping the switch. Instead of doing mode change -> activate preset ->mode change -> activate preset, it's mode change -> mode change -> activate preset.
It's not inside the Hazarai's box yet, didn't have time to finish that. I'm thinking of using a switching jack that I have laying around, so the arduino is off when there's no jack connected.
Here's a crappy cellphone video, but it shows it working:

User avatar
dodgypete
Information
Posts: 11
Joined: 07 Jun 2009, 00:39
Location: Christchurch, New Zealand
Been thanked: 7 times

Post by dodgypete »

Well done :applause:

User avatar
88mark
Information
Posts: 11
Joined: 18 Dec 2011, 20:47
Has thanked: 3 times

Post by 88mark »

@DodgyPete (or everyone else that would like to help me out),

I was very suprised by the nice work you've done for this preset mod :applause: , so I decided to mod my hazarai as well :)

But now I'm at a point where I have some questions that needs to be solved before I'm ready to start soldering. So I was hoping you guys could help me out.

Here we go: :oops: :oops: :oops:
On the pictures you posted, I see three things at the end of the yellow, purple, and green wire. What are these small (half)cylinder-shaped things? they seem so be soldered between the r42connection and purple cable, and between the r41 connection and yellow cable and between the green cable and the hazarai, correct?
There are 3 resistors underneath the arduino board to limit the base current to the transistors. The transistors are 2N3904's because that is what I had lying around.
So they are between the board and the Yellow/purple/green wires?

Why are there only two wires (blue and white one) to the output jack? didn't you solder the ground to the arduino?

You used momentary switches. Are those Normally Open?

Does the type of the Arduino board matter? There are quite a few options in the country I live. I found out that the pro mini is cheap, but requires an usb/serial converter/board, because my laptop's only got usb.. So to me it seems that the uno rev3 is the most economic choise.. (in thiswebshop). BUT: this site shows me that is needs 7-12v input power. to summarize: what board is the cheapest option without limitations/problem, caused by voltages/connection types etc..? :)

I'm thinking of attaching four switches instead of two. Two for preset next/previous, and two for next/previous mode. in that case i'll one mode that allows me to set two "presets". Will I need two boards then?

Hope you guys can help me a little bit further with these questions... THNX! :thumbsup

User avatar
DWBH
Cap Cooler
Information
Posts: 498
Joined: 24 Aug 2007, 16:26
Location: portugal
Has thanked: 12 times
Been thanked: 3 times

Post by DWBH »

88mark wrote: On the pictures you posted, I see three things at the end of the yellow, purple, and green wire. What are these small (half)cylinder-shaped things? they seem so be soldered between the r42connection and purple cable, and between the r41 connection and yellow cable and between the green cable and the hazarai, correct?
Those are transistors.
88mark wrote: Why are there only two wires (blue and white one) to the output jack? didn't you solder the ground to the arduino?
On mine I did use three wires. The inputs on my arduino were pulled up, and I had to wires running from each arduino input to the jack and also a ground jack
88mark wrote: Does the type of the Arduino board matter?
You could always make a standalone arduino board. On mine I bought an extra Atmel microprocessor, and made an extra board with that, a 16MHz crystal, and two capacitors. I burned the arduino bootloader into it (you can buy pre-burned chips) and loaded the code into it. So, inside my pedal I don't have an arduino board, just the arduino chip running the code.
88mark wrote: I'm thinking of attaching four switches instead of two. Two for preset next/previous, and two for next/previous mode. in that case i'll one mode that allows me to set two "presets". Will I need two boards then?
What do you mean by two presets? The Hazarai only supports 1 preset per mode.

User avatar
88mark
Information
Posts: 11
Joined: 18 Dec 2011, 20:47
Has thanked: 3 times

Post by 88mark »

Hey DWHB,

Thnx for those answers, helped me out a lot further!
Now got just a few remaining.. :)
DWBH wrote:
88mark wrote: On the pictures you posted, I see three things at the end of the yellow, purple, and green wire. What are these small (half)cylinder-shaped things? they seem so be soldered between the r42connection and purple cable, and between the r41 connection and yellow cable and between the green cable and the hazarai, correct?
Those are transistors.
Ah, that explains your questions to DodgyPete about the voltages :)
So they are soldered right between the r42/r41and c37 connections on the board and the purple/yellow/green cable?
DWBH wrote:
88mark wrote: Why are there only two wires (blue and white one) to the output jack? didn't you solder the ground to the arduino?
On mine I did use three wires. The inputs on my arduino were pulled up, and I had to wires running from each arduino input to the jack and also a ground jack
ok, but then there needs one more cable to be soldered on the arduino.. is that just (the only one) with a voltage on it? so that (in this case) the blue and white cable give a signal to the arduino as long as the switch attached to it is pushed down? So DodgyPete connected the white and blue cable to the jack, and another one (with a certain (5?) voltage) on the third pole of the jack? comming from that red cable?
DWBH wrote:
88mark wrote: Does the type of the Arduino board matter?
You could always make a standalone arduino board. On mine I bought an extra Atmel microprocessor, and made an extra board with that, a 16MHz crystal, and two capacitors. I burned the arduino bootloader into it (you can buy pre-burned chips) and loaded the code into it. So, inside my pedal I don't have an arduino board, just the arduino chip running the code.
Right, so the cheapest one with usb support is fine to me.. but do you think those voltage-requirements will cause some issues?
DWBH wrote:
88mark wrote: I'm thinking of attaching four switches instead of two. Two for preset next/previous, and two for next/previous mode. in that case i'll one mode that allows me to set two "presets". Will I need two boards then?
What do you mean by two presets? The Hazarai only supports 1 preset per mode.
I know, but you can set the hardwareknobs on the memoryman as well, so in every mode there is a preset, and a hardware-knob-setings-mode :) So the thing those extra two knobs im thinking of need to do, is just go mode up/down and not 'push' the rotary switch to select the preset..

User avatar
DWBH
Cap Cooler
Information
Posts: 498
Joined: 24 Aug 2007, 16:26
Location: portugal
Has thanked: 12 times
Been thanked: 3 times

Post by DWBH »

88mark wrote:
DWBH wrote:
88mark wrote: I'm thinking of attaching four switches instead of two. Two for preset next/previous, and two for next/previous mode. in that case i'll one mode that allows me to set two "presets". Will I need two boards then?
What do you mean by two presets? The Hazarai only supports 1 preset per mode.
I know, but you can set the hardwareknobs on the memoryman as well, so in every mode there is a preset, and a hardware-knob-setings-mode :) So the thing those extra two knobs im thinking of need to do, is just go mode up/down and not 'push' the rotary switch to select the preset..
You could modify the code so that when you switch modes, the saved preset isn't recalled, and have a separate switch to recall the preset. You can't 'unrecall' the saved preset though.

User avatar
88mark
Information
Posts: 11
Joined: 18 Dec 2011, 20:47
Has thanked: 3 times

Post by 88mark »

ok guys,

I've made a little diagram about the mod. It's some kind of a summary of the information i got so far, with the questions i've got remaining included. It would be great if someone could check if its correct.
If so, im gonna start soldering :) Thnx! :applause:
Attachments
mod.png

User avatar
DWBH
Cap Cooler
Information
Posts: 498
Joined: 24 Aug 2007, 16:26
Location: portugal
Has thanked: 12 times
Been thanked: 3 times

Post by DWBH »

Base of transistor for the preset switch comes from arduino. Emitter and Colector are both soldered directly to the terminals of the switch. One of them is in fact ground, but it doesn't matter which transistor pins connect where.
The emitter pins of the other transistors are soldered to the middle lug of the encoder, which is also ground.

Regarding the switches. I had to pull pins 2 and 3 up, which means that they're connected, through a 10k resistor to Vcc (5V), and switched to ground by the stomp. I don't know how dodgypete did it, but in mine they were necessary. Pulling up the input pins means that they're always seeing a HIGH potential when the switch isn't pressed. When they're not pulled high, they're picking whatever electrons are floating in the neighborhood :P

User avatar
88mark
Information
Posts: 11
Joined: 18 Dec 2011, 20:47
Has thanked: 3 times

Post by 88mark »

DWBH wrote:Base of transistor for the preset switch comes from arduino. Emitter and Colector are both soldered directly to the terminals of the switch. One of them is in fact ground, but it doesn't matter which transistor pins connect where.
The emitter pins of the other transistors are soldered to the middle lug of the encoder, which is also ground.

Regarding the switches. I had to pull pins 2 and 3 up, which means that they're connected, through a 10k resistor to Vcc (5V), and switched to ground by the stomp. I don't know how dodgypete did it, but in mine they were necessary. Pulling up the input pins means that they're always seeing a HIGH potential when the switch isn't pressed. When they're not pulled high, they're picking whatever electrons are floating in the neighborhood :P

THNX A LOT MAN! :applause: :applause:

so, just for my check: its like this...?
Attachments
mod.png

User avatar
88mark
Information
Posts: 11
Joined: 18 Dec 2011, 20:47
Has thanked: 3 times

Post by 88mark »

woops, after reading your previous post, I realised I made a mistake with the connection of the transistor attachted to the green cable.

so, now I understand that both pins (Emitter and Collector) have the same function since the transistor works like a switch here. But its not exactly clear where on the Hazarai i have to connect them to. seems to me, its like as shown on this overview
mod.png
That correct?

Thnx! :applause:

User avatar
88mark
Information
Posts: 11
Joined: 18 Dec 2011, 20:47
Has thanked: 3 times

Post by 88mark »

btw, feel free to edit the picture if you'd like to.

maybe next picture can help you with that..
IMG_1768.JPG

User avatar
DWBH
Cap Cooler
Information
Posts: 498
Joined: 24 Aug 2007, 16:26
Location: portugal
Has thanked: 12 times
Been thanked: 3 times

Post by DWBH »

You don't solder the transistors to that pad where it says R41/R42, you solder them directly on the encoder.

Actually, I don't know what's the value of those resistors, but if they're not big you probably could solder. I don't know, just checking. Solder directly on the encoder, just in case.

Post Reply