9 hours ago •
All panels of the synth are made out of acrylic sheet. I believe other materials would be nicer, but it happens I use 4, 6mm cast acrylic, and 2mm extruded acrylic sheets for work, thus having plenty at hand.
And as I'm lucky enough to also have a laser cutter, it became an obvious choice to use acrylic, that I can both cut and engrave in one go.
The front panel, despite its simple appearance, took time to design. It had to be decided all the function wanted, were to place them, take attention to the room around switches and potentiometers (for moving them AND regarding their own size).
Then space them evenly, and check... to move them once again, because something was missing... A game of try and error. :)
I also used a scrap piece of acrylic to place buttons on it to have a real idea of how it would be, and check distances.
There is some dust here...
---------- more ----------
I mainly use Catia V5 for everything I need to design. The panel has been drawn in Catia, then a layout exported to DXF. The graduations for pots, waveforms, texts, separations are made using InkScape (which has powerfull tools for spacing shapes). In fact it could be design with InkScape alone. The file is then exported to DXF again, and the laser G-code generated using CamBam (which, despite its Windows 95 look, is a great tool too !)
I wanted to have more controls on the panel, but the keybed dictate its size, as well as the available inputs on the Arduino Mega. I wanted to have reverberation and / or delay, but not enough room. And as it's now, every single ADC on both Arduino is used.
This is the first panel, I then realized some things had to be moved, other added...
Once the panel cut-out, engravings have been filed with white paint. it's quite straightforward : a lot of paint is put on, then the excess is wiped out.
The controls have all been mounted on the panel. They are mounted with shims, to compensate for the switches, potentiometer and selectors height, to have the controls at the panel level.
Potentiometer are all 10k linear, except one (two on the picture) for output and headphone levels, which are logarithmic ones. (Side note : it needs an amplifier to buffer the phatDAC output, which I don't have yet. Don't even know what to use !)
They are all wired to their respective ADC on one or the other board.
Switches are all two position ON-ON, except the one for octave control which is a temporary three position (ON)-OFF-(ON). They are wired one pin to digital inputs of Arduinos, the other to GND. Every switch uses internal pull-up resistors of the Atmega.
Rotary selectors are connected to ADCs. Their first pin (position 1) is grounded, the last pin (position 6) is tied to VCC, and a resistor ladder is soldered on the pins in between, so the output is stepped evenly between 0 and 5V, and only one pin of the Arduino is needed per selector. The wiring is also a lot simpler compared to what it would be with digital pins.
Note : I may draw a general wiring schematic, but all connections are listed in their respective sketch, and the github repository has a file listing controls, and two for front and side panel connectors.
I started by wiring everything to ground, then VCC (which is 5V here). I didn't really think about how it should be done. I've taken care not to create loops, but it has been wired as it came.
The last step is to wire all the signals. I used a 34-wire ribbon cable from an old computer, which connected perfectly with a shorten Raspberry Pi GPIO connector. And it was long enough so I could reach everything in the panel with the connector mounted on one side. So...
Now it starts to be a mess !
The second Arduino Mega is mounted on the rear side of the front panel, with double-sided tape.
The panel is held close by screws holding the back, but I'll come back to it later. On the picture is may be seen some marks on the wooden parts on top and bottom of the long side : there were the screws holding the plate on its frame, as the wood is coming from an old table... ;)
a day ago •
The most obvious part for a synth with a keyboard is... a keyboard. Or a keybed, since it's the name the key assembly is called (thank to Tim Trzepacz for mentioning it on his inspiring NanoEgg project ! Funny how having the right word can save so much time when looking for something around Internet !).
The one that was used comes from an electric all-pastic organ made by Bontempi somewhere around the mid 80's. I found it at a secondhand market, not working, for almost nothing.
The construction is quite basic, with a plastic rack with mounting holes underneath (one less thing to think about !) each key being mounted on a pole and held by a circular spring. This rack has brackets holding a pcb the size of he keybed, on which were something looking like a resistor array. I wondered for a time if i was going to try and understand how it worked, but eventually just kept the PCB to route my own wiring.
Each key has a smooth spring attached on it, which is soldered to the pcb. These springs come to touch a metal rod when the key is pressed. (note : the keybed was one third grey with these C-shape contacts, and two thirds white with a unique rod going all the length. The synth uses the white keys with the rod.)---------- more ----------
The pcb has been cut several times as the project progressed. The first time in two, to separate the grey side from the white side. It was then cut again to limit the height of the keybed, just at the level of the brackets holding it. But is was yet too high, so the brackets were cut, and the pcb finally mounted on a wooden support on the synth base plate.
The pcb has been kept only because the contact springs are soldered on it. Each contact has been wired to a digital input of the first Arduino mega (exact list in the sketch mega1), using internal pull-up resistors ; the long rod on which they come to contact is grounded.
The keybed was quite noisy when pushing and releasing keys, so I added two thick pieces of felt running under the keys. One at the front, to dampen the key at the end of its travel, one at the rear, on which it lies when not pressed, which also dampens when it's released.
On a software side, with springs as switches the need for debouncing becomes even more important than it usually is ! There are plenty of libraries out there, I've used one I wrote years ago, which works well.
Keys are wired to consecutive inputs, so the main program only defines a table of PushButton objects, one for loop in setup() to init each key (input mode, associated pin and debounce time), then one for loop in the main loop which updates the key and sends a MIDI message on change. The keys are mapped to midi notes from 0 to 29 ; offsets are applied on Teensy side, which was easier when testing code : programming this Mega board means removing everything !
03/23/2020 at 02:15 •
First project using Teensymoog !
Everything made with the synth, except the drums.