Introduction: EHX B9 Organ Machine Modification
(ehx B9) - When I was a little boy I was fascinated by an incredible musical instrument: the Godwin Organ-Guitar of Peter Van Wood (build in Italy by Sisme)! I believe Peter represented the army of guitarists born in the analog jurassic that looked at organists (yes organists, not keyboardists!) as the luckiest one that could play, sustain and modify notes and chords forever!
A lot of attempts has been done to "imitate" the Organ (pipes or electronic) through the guitar (Roland, Casio...) but the Electro Harmonix B9 is, by far, the best one: simple, solid and addicting!
But there are few things that are missed...
In this project I modified a standard B9 (I believe that all the "9s" series of EHX are similar) to cover what I believe are extremely useful features:
- OLED DISPLAY: reading the position of the rotating switch is close to impossible in live situations, so a nice bright Oled display is very welcomed to be visible and add some more info.
- ROTARY ENCODER: a smoother encoder can be used for changing the preset and more.
- PRESET FUNCTION: introduce a simple way to move between 2 different presets is essential to introduce some fun in your playing!
- MUTE/DRY FUNCTION: if you use a separate amp for the Organ OUT it's possible to avoid to have the guitar signal there as well (Mute). This function is standard on the B9 but requires to open the unit and move a microswitch: the rotary encoder can do it any time you want without open it.
- LESLIE SPEED-UP FUNCTION: actually this is the original reason why I started to think to modify the B9. There is no Organ Sound without Leslie! But the most fundamental use is to move from low-speed to high-speed and back.
- Arduino Nano Every
- OLED Display IZOKEE 0.96" I2L 128X64 Pixel 2 colours
- Rotary Encoder with push button (Cylewet)
- Digital Potenziometer IC MCP42010
- Multiplexer IC 74HC4067
- 3 x Reed Relays SIP-1A05
- Momentary stomp foot-switch push button
- Double sided PCB (Printed Circuit Board) for DIY
- .1uF ceramic capacitor (for MCP42010 filter)
Step 1: What You Can Expect From Your Electro-Harmonix Modified...
The new features that the B9 will have:
OLED DISPLAY that shows the status of the unit:
- OFF the text is in reverse - ON the text is normal
- Dry (default): organ and guitar are both present on "Organ OUT"
- Mute: only organ is present on "Organ OUT", the guitar is Mute!
- the effect selected by number and description: on the top in yellow a reference to the kind of use of the effect like Deep Purple, Procol Harum, Jimmy Smith...- on the bottom the same (more or less) description as the rotary switch
- the kind of modulation - Leslie/Vibrato/Tremolo
- the speed of MODULATION
- the modulation speed-up in progress scrolling from left to right the name of the selected effect
- at power up the default selection is B9, meaning that the control of the effect is managed by the B9 original rotary switch
- rotating clockwise to select effect 1, 2, 3...9, 1, 2, 3...
- to return the control to B9 rotate it counterclockwise ...3, 2, 1, B9 or...
- ... press the rotary encoder push button to toggle between the selected effect and the B9 rotary switch selection: this is a simple way to move between 2 different presets. (choosing a taller rotary encoder facilitate to press it with your foot while you're playing! See the side picture)
- from OFF status move the rotary encoder counterclockwise to select effect 9
- press the rotary encoder push button
- the display will change from Dry (default) to Mute
- to go back to Dry remove the power and power up again!
LESLIE SPEED-UP FUNCTION:
- to move from OFF to ON and viceversa press briefly the foot-switch (we have to remove the existing foot-switch and install a momentary push button)
- select the LOW speed with the existing MOD potentiometer (you'll see the speed value on the display)
- press and keep pressed the foot-switch and the speed of the MOD will automatically progressively increase to the MAX speed (100 on the display or less if you release it before 100 is reached) and remain to the max until the foot-switch is pressed
- release the foot-switch and the speed of the MOD will smoothly decrease up to the LOW speed selected by the pot. MOD.
Ready to play A Whiter Shade of Pale?
Step 2: Hardware...
First of all, a disclaimer: I am an old-fashioned Electric Engineer, maybe well capable to design a high voltage distribution network and maybe sort of capable to design and program a PLC controlled equipment!
At University I used to program in Fortran on the perforated cards, then in Basic and Assembler on the Sinclair ZX80 (1Kb of memory...): practically I'm a dinosaur!
Of course I like to play guitar and i like the sound of organ: when I saw the B9 I was blown away!
To implement the speed-up function I thought to simply add an external foot-switch that shortcuts the MOD potentiometer to the max value or something like the JHS modification that requires an external expression pedal.
But I would like to reproduce the same feeling of the organ player that is pressing a foot-switch and the motor of the Leslie does the rest!
So I realised that some programming were needed: time to learn this Arduino devilry!
Please be generous when you'll make comment on the way I have developed the program (I believe now you call it "code"...) and the hardware solution (I use the "electromechanical" approach): I use all the resources available on instructables and Arduino site and I'll try to thanks the people that wrote the code I have used to inspire me!
OK, let's talk about hardware.
Arduino Nano Every is controlling all the functions:
D2 Rotating Encoder -> pinA
D3 Rotating Encoder -> pinB
D4 Rotating Encoder -> push-button
D5 foot-switch: the standard foot-switch installed on the B9 activates 3 contacts: opening the back of the B9 you'll see the foot-switch connected to the PCB (Printed Circuit Board) via a ribbon cable, the PCB connection is marked CN2 and you can numbered the connections 1 (close to CN2 mark) to 6.
In OFF position the contact 3-4 is closed, in ON position 5-6 is closed, in Dry selection 2-6 is closed. You have to remove the existing foot-switch and install a new simple momentary push button and manage the 3 contacts though 3 relays.
I have used reed relays: small, stable contact and cheap! In the Fritz schematics I couldn't find the reed relay SIP-1A05 so I used the most similar one. In the pictures attached you'll see that the reed relay has only 4 pins (instead of the 8 pins in the schematic): the external ones are the contact, the inner ones the coil.
I've tried the digital switches CD4066 and the TM1134 but the On-resistance and probably the impedance generate some distortion and "sound leakage" on Mute position. So I went back on my electromechanical approach that works noiseless!
A7 the pins of the potentiometer MOD (marked VR1 on the PCB) have to be cut (so disconnected from the PCB) and connected to Nano: the pin on the min. to the 5V - the pin on the MAX. to GND - the central pin wiper to analog input A7
D6 contact 3-4 (close is B9 is OFF)
D7 contact 2-6 (close is B9 is in Dry mode)
D8 contact 3-4 (close is B9 is ON)
D10 on the digital potentiometer MCP 42010 to CS (pin1)*
D11 on the digital potentiometer MCP 42010 to S1 (pin3)*
D13 on the digital potentiometer MCP 42010 to SCK (pin2)*
* on the breadboard schematic the digital potentiometer chip is visualised by a generic 14pins IC with a trimmer overlapping the pins 8-9-10. This is only a graphic representation: you don't need anything else than MCP42010.
A0 on the multiplexer 74HC4067 to S3
A1 on the multiplexer 74HC4067 to S2
A2 on the multiplexer 74HC4067 to S1
A3 on the multiplexer 74HC4067 to S0
A4 on the OLED display on SDA
A5 on the OLED display on SCL
VIN connect the Nano Vin to the +9V on the B9 socket: you can see from the pictures the pin that I choose but be careful and check with the multimeter the correct pin!
In order to double the function of the rotating switch to select one of the 9 different organ effects, I have used the rotating encoder that can (sort of) easily inform Arduino about directions. Then you need to physically duplicate the existing rotary switch to inform the B9 of which effect to select. My first prototype worked with 10 relays (I have attached a picture to prove it!). Then I realised that it was a little too much and, even if I was scared of this mystified device, I bravely faced the multiplexer world and... I succeed!
The multiplexer 74HC4067 is capable of 16 positions. I have used position C0 to connect to the common pin of the rotating switch (you have to cut and isolate the pin marked "C" from the PCB and connect it to the C0 on the multiplexer): in this way you can "give back' the control to the rotating switch when needed (...as a preset!).
The other positions C1...C9 have to be connected to the 9 pins of the rotating switch: the easiest way is to use the opposite side of the PCB (I have attached a picture but, again, pay attention to find the right ones!)
I hope that with the help of the breadboard Fritz schematic and some hints from the pictures, you can realise a cleaner PCB for the few components needed.
Step 3: ...& Software
The code is a result of many inspirations from instructables and Arduino sites. As I said, I learned C++ just to be capable to do this project and my approach is quite plain: I'm sure someone can write a much more well-constructed code...
You'll notice that some piece of code are placed not in the most logical position, this is because of my successive-approximations way to fix some problem!
First part is to variables and constants declaration (I hope the comments are self explanatory): I added as well the original description of the effect from the B9 manual.
The part related to the digital potentiometer has been inspired by Henry Zhao https://wiki.dfrobot.com/Dual_Digital_Pot__100K__...
The part related to the multiplexer has been inspired by pmdwayhk https://www.instructables.com/id/Tutorial-74HC406... that I re-adjusted for Arduino Nano Every.
The part related to the rotating encoder has been inspired by SimonM8https://www.instructables.com/id/Improved-Arduino... : it has been hard to adapt to Arduino Nano Every but... I did it after Simon's encouragement!
For the double functions push button I've been inspired by Scuba Steve and Michael James https://www.programmingelectronics.com/make-one-b...
...and the rest (it seems a little but it's a lot for me) I did it!
I believe that there are enough comments to explain how the software works: I'll be happy to help if someone find some difficulty to interpreter it.
Step 4: Fit the Arduino Nano Every in the B9 Box
First of all you have to remove the PCB from the box: it is quite straightforward (remove back screws, knobs, bolts from jacks and potentiometers) just be gentle to avoid to damage the SMD on the PCB.
The most lucky part of this project has been to find a narrow slot on the PCB close to the Output jacks: I positioned the OLED display with the pins passing through this slot and it's magical exactly where I wanted it! Maybe Electro-Harmonix was planning to introduce an OLED display at the time of the original design: anyway I'm going to propose it to them!
With the OLED display in position use a piece of paper to trace a template (use a soft pencil) as shown in the picture and then report the window of the display on the box.
You'll need some patience and manual work to have a reasonable rectangular window using drill and file...
I glued a piece of transparent plastic from inside to protect the display and seal the box to avoid dust.
To connect the display to Arduino Nano Every use screened cable (I have used a piece from a broken iPhone USB cable...) and place a screen under the display itself: the OLED device is quite noisy!
The rotating encoder is placed in the LED position (removed) so you just need to enlarge the existing hole.
You can see from the pictures that I used 2 small pieces of PCBs for DIY: one for the Nano and the digital potentiometer and one for the reed relays. The only reason is because my first attempt was to use electronic switches IC and then I moved back to the relays... For sure you can do all on one single PCB.
To keep noise away, use screened cable for connecting the MOD potentiometer and the relative connections to Nano analog input.
For all the other connection I have used a very flexible wire (Plusivo 22AWG Hook Up Wire).
Once all the connection have done re-assemble the B9 PCB and gently accomodate the Nano PCB in the space around the foot-switch: I have used some flexible plastic to be sure no accidental contact will happened.
Step 5: Final Result.
The B9 is now ready for live performance!
- You'll see the display in the dark (it seems little but it's quite visible and clear in normal playing position...) and you know what sound is going to be heard...
- You can switch between the effect showed on the display and the one selected on the rotary switch...
- You can decide if the Dry signal is there on the organ output...
- ...and, finally, you can speed-up your Leslie like Billy Preston, Jimmy Smith, Keith Emerson, Joey Defrancesco, Jon Lord and... Peter Van Wood: my guitar-organ hero!
Please be compassionate with the videos attached: they have been recorded with my iPhone and with the only intention to show the usage and not my "artistic" poor capability!