A re-creation of the minimoog using Teensy 4.0
To make the experience fit your profile, pick a username and tell us what interests you.
We found and based on your interests.
teensymoog- modwheel.pdfAdobe Portable Document Format - 73.21 kB - 03/31/2020 at 22:24 |
|
|
teensymoog - front panel.pdfAdobe Portable Document Format - 79.73 kB - 03/31/2020 at 20:07 |
|
|
teensymoog - body - layer 2.pdfAdobe Portable Document Format - 69.47 kB - 03/31/2020 at 20:07 |
|
|
teensymoog - body - layer 1.pdfAdobe Portable Document Format - 69.11 kB - 03/31/2020 at 20:07 |
|
|
teensymoog - side panel.pdfAdobe Portable Document Format - 58.28 kB - 03/31/2020 at 20:07 |
|
|
Although not present on the original minimoog, midi is something so omnipresent and usefull I couldn't not implement it.
It happens it is quite easy to do with the Arduino environment, thanks to this library from FortySevenEffects. It's even easier with Teensy, has the library is automatically implemented when you choose MIDI as the kind of USB output.
There are two "kinds" of midi on the synth. One is what is expected from a modern music instrument, i.e. the ability to interact with other instruments.
The two wheels are importants components of this project. And it took time to figure out how to make them.
The first and most obvious idea was to 3D-print them. Or at least the bracket. For the wheel itself I wanted something else, as the final aspect of 3D-printed part is not so good, unless you spend a lot of time with abrasive paper and primer, and paint, and...
So, 3D-printing. If my printer were perfectly tuned, it would have been a two-hours story, designing the part, slicing it and printing it. But its not. The first part broke when I remove it from the printer bed, the second exploded when I tried to put screws in it, so after a few missed attempts I came back to what I know : acrylic and laser cutter.
Read more »There were Initially no plans made for the body. I simply cut a sheet of 10mm plywood, and placed the keybed on it. Then try to figure out the placement of all components. Taking a measure, cut a part, put it on the synth, and so on.
The wood is wallnut, from an old dining table found on the roadside... For two years I really believed I would repair and use it ! :D
The parts have been cut to length, placed on the plywood bottom, then adjusted following the keybed shape and size.
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...
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.)
First project using Teensymoog !
Everything made with the synth, except the drums.
Create an account to leave a comment. Already have an account? Log In.
Amazing work!!
Do you have a circuit diagram for this project?
Hi, thank you !
No circuit diagram, but if you look at the programs running on the two mega and the teensy on github, all the connections are laid out. They are quite basic :
Switches are connected to ground and to a digital pin with input pull-up.
Potentiometer are connected to ground, +5V (the Arduino Mega run on 5V) and analog pins.
If you look at the misc folder, you will also find the pin outs for the connectors for the side and front panels. These are commodity connectors, they simplify the whole assembly by using sub-assembly. I used what i had on hand, namely unused pins that came with Arduinos (for side panel), and a IDE connector salvaged from an all computer (for front manel).
The keybed I used was an old one that worked with a resistance ladder. Modern keybeds use multiplexing with shift registers. This implies handling this differently in the code (that I've not written), but greatly simplifies connections and routing !
It probably won't go further until I start another synth, with polyphonic voices and more options... The basis would be the same, but it would be another project.
Some things haven't been totally finished on this one (like the DIN plugs for MIDI), but I can play it, record and play MIDI through USB, so it's ok for me.
Absolute Legend. Can't wait to try recreating your project in the future.
Hi Pravin,
Thank you ! Hope you will take the step, and enjoy it ! :)
Really awesome project
Reminds me of my 8th grade av class...oooohh aaahhh... before i knew of vco lfo adsr modulation and the like.
I've always wanted to build an"analog"synth.
Just don't have the time or workshop anymore.
Love the fact you repurposed someone's trash into a work of art.
Beautiful project.
Thank you for your words !
Didn't you ever find some time to make one ? There are some kits out there for simpler project ! ;)
Wow, fantastic build! Thanks for sharing this. I'm looking forward to reading up on all the details.
Hi, thank you ! I will try to add more the days to come. :)
I just ran across this project, I LOVE IT. In the 80's I actually repaired them (As well as all keyboards of the era) and that one was one of my favorites. If you have not done this yet I would love to see memory presets, that was the one major thing lacking on the instrument as all buttons and knobs had to be written down on paper to save your work. A Minimoog with presets would be the cats meow for any die-hard synth guy. Also could you post a complete wiring diagram, I think you have left enough breadcrumbs in the code to figure it out but on paper in one place would make it much easier. I ordered the parts today, defiantly building one! Thankx again for sharing!! J
Hi Jeff ! Thank you for your words and your enthusiasm !
I initially didn't plan to include presets. But after having played some time with it, I believe it would indeed be a very convenient thing.
I've started to document the majors steps in building it. As you point out all the connections are specified in the sketches, but some things need a bit of explanation (like the rotary selectors with resistors ladders, the 40-pin connector to connect the panel to the main body, the two wheels, etc.)
I also need to make drawings of the wooden parts ; even if it has to be custom made around a keybed, it could be a good start for anyone willing to craft one.
Last night I made a xls chart of all the connections extracted from the ino files, I need to know the resistor latter values you used so I can put them in the doc. For me it looks straight forward, if you like I can help with the doc's as I build my unit. Thankx for considering the presets! I know a midi device could do it too but would be really nice to have it built in. My suggestion is to have save and recall buttons and you hit a key to select the preset.
There is already one in the github repository, misc/Controls.ods. But I forgot to specify the pins used. :D
There are also two files for the pinout used on the main panel (in which is enclosed Mega 2) and for the lateral panel with wheels.
The pots are all 10k (I never know what value to choose for ADCs, don't even know if it has any importance), and for the rotary selectors I used what I had at hand, i.e. 470ohm.
If you have any idea about presets, feel free to share. I want to keep this "retro" look, and keep it a (quite) simple project, so from the beginning I wanted a display-free device. Presets could thus be handled as "hidden settings" are, with a (three position ?) switch to a mode were each key is used to store or recall a previous preset. That would be around 30 memories on mine. And the need to brain-map each sound to a key ! :D (edit : ok, I've just realized that's exactly what you suggest !)
I've also think of having a SD card, that would enable writing and sharing presets. But it would need an user interface as well, and here there is much more work to do !
Edit 2 : Oh, and both TX from mega to Teensy go through a resistor tension divider, as Mega are 5V an Teensy 3.3V. I believe I used 5.1k + 10k. The max rating for the Cortex uC are 3,6V
There is no conversion from Teensy to Mega, has the 3.3V high level is above the threshold value of the Atmega uC. But a real level converter would probably be better.
I found the chart, just need to add the pin numbers, by me making the chart it helped me to better understand the overall scheme so was good brain exercise. BYW, are the numbers without A in them the Dxx pins on the megas? I found it crazy that the mega did not observe physical pin numbers of the header, sorta confusing.
You could use a 3 pos mom switch, the user can flip it one way for recall and the next key would do it, the other way for save, a led would be nice to let the user know that the next key would be a preset but not really needed. Settings could be pulled via the midi if you allow for all settings to be read out so would be no need for sd-card. Most free midi software will do that.
Yes, I understand that having the table with functions and pins listed helps a lot ! Taht was why I made the table in the first place. But having it at the top of each file is easier for me when coding, no need to have dozens of windows open, just have to scroll up. ;)
Yes for the pins. Axx are analog, and xx are digital pins. I don't know how familiar you are with Arduino ; if you dive in the insides of it, analog pins names are just #defines that give a name to the digital pin associated (which is mapped to a uC port, but that's another story). It makes things a lot easier when you use them for the first time. ;)
Three ways switch is a way to go, a long press on a key or key dedicated to store mem could be another. I need to let it turn in my head a bit. Problem is I don't have room left on the synth. :D
I'll try to find if the MIDI association has defined guidance rules for developping things like that, or if each manufacturer has its own proprietary sysex messages... I've seen that Moog uses MIDI for software update on the (new) minimoog.
Last night I tried to compile the binary's and could not locate "Pushbutton.h" and "ExpFilter.h", I did find "PushButton.h" but apparently that is not the right lib, can you point me to the correct ones? Thankx again, J
>Edit; Pierre told me the library's were written by him and on his Github, I found them there but you need to dig some to get into his older repository's. Here are the links to save some time,
https://github.com/troisiemetype/teensymoog
https://github.com/troisiemetype/Audio
https://github.com/troisiemetype/expfilter
https://github.com/troisiemetype/PushButton
https://github.com/troisiemetype/Timer
Other links to round out all you need to compile the TeensyMoog
https://github.com/FortySevenEffects/arduino_midi_library/releases/tag/4.3.1
https://www.pjrc.com/teensy/teensyduino.html
After downloading all the info from the above I was able to get all three processors to compile, Yah!
Yes, it's not that obvious were to fine the libraries needed. They are in the readme, at the end of the "how it's made" chapter : https://github.com/troisiemetype/teensymoog#dependencies
I've added a comment in each files after the include with the link.
Timer has been used for debugging purposes, but is not needed for the program to run. But it could be used to implement a step sequencer (although I'm not sure it would be the most efficient way)
Masterpiece! Looks wonderful (sounds great of course). Would love to hear more details about he build process if you can find some time to share them!
I will try to add some details this week !
Thank you.
This is totally badass - it looks great! I just read the software write up github too. I like the fact the Arduinos communicate with the Teensy using MIDI. Well done!
Thank you !
Midi appeared to be an easy choice, if not obvious. Simpler than write a dedicated protocol.
I realized a few days ago, when started to implement usb MIDI, that it was a good choice, because the majority of program functions can work for both !
I think that the next one will have port expanders instead of Arduinos.
Yes, there are pros and cons to both approaches. If you have a decent micro-controller then keeping all the code on one device does make programming more straightforward. On the other hand: you could argue why waste processor time polling the controls when they don't change that often? Using a cheap micro to take care of user control does make sense. I think you've done the right thing for this project.
Do you have any youtube videos/audio recordings of it in action?
You are right ! Teensy 4.0 as plenty of room for computing power (and pjrc supplies tools for monitoring audio and processor use, I should test it !), but with heavier load it's a good thing to have other devices handling inputs. Next project would probably be a polyphonic synth, so even more Arduino Mega ?!
No video or sound yet, but I'm working on it. On sound clound in a a few days, I'll post a link here ! ;)
This is absolutely stunning! It manages to look both like pro audio and fine furniture at the same time. The contrast between the walnut and the black and white of the control panels and keyboard is striking. I'd love to build something like this - if I only knew anything about music...
Hi Dan ! Thank you so much for your kind words ! I would have things to say about how it came compared to how, I wanted it, of course... ;) But I'm really happy, and it sounds great !
I start to think to the next one.
Become a member to follow this project and never miss any updates
Absolutely great