That is so cool! Im currently working on building a modular synthesizer out of my old ddj 1000 flight case! Id love to learn more how you worked on the project in more detail. I dropped my email in the form!
There is many amateur arduino-programmers doing amazing stuff. There is a ton of Arduino nerds on the internet that have learnt from scratch by chatting with other nerds on the internet, downloading manuals showing how to build your own synths. There was magazines about how to build analogue synths in the eighties when I was a kid, kindof the same thing. If I tried the same thing I would have earn´t the money to buy a Juno before I´ve even finished the project itself.
Long before the internet, Google, and UA-cam, in the amateur radio community, we had the concept of an "Elmer". This was a benevolent individual who offered their knowledge to help new "hams" to kick-start sometimes daunting entry into the hobby. I applaud your tenacity and will to learn and meet your goal. Great work, and I'm sure you learned more than you may have expected. I hope you had your own "Elmer" to turn to for advice. As you mentioned, many times, even with professional designers (and in many fields), it can be quite easy to paint yourself into a corner. An extra set of eyes can oftentimes get you back on track after you have looked at it for the thousandth time. Best of luck to you, and keep on! You're doing great!
Your problem with the analogue is from charge sharing between inputs. Give a little longer for each input to settle, put small capacitors to ground from each input(I.E.10Nf), and use lower resistances on your ADC inputs to combat the charge sharing. It puzzled me for a bit too, back around 26 years ago!
This is such a niche thing, I love it. You might be tapping into a specific subgroup of synth heads and homebrew engineers with this content such as I. Would like to see you build more synths!
Awesome, not only did you get a great synth, you got a great new pile of knowledge! And you shared it for other people to learn from. Super impressive and enjoyable to see.
you're braver than all! crazy challenge you achieved! i have looked into electronics when i started modular...i gave up when i grasped the amount of complexity layers. this is incredible what you achieved from scratch.
Really impressed that you where able to recreate an expensive and complex midi device with off the shelf parts for under $200.00. What you did is not something typically taught in a University environment. Beyond that, I feel that your keen awareness to share this journey online with others here is priceless. I hope you continue to innovate and share future creations here for us to enjoy. Time for me to pull out my old Teensie and see what midi accessory I can reproduce. . .
@@HowToShopGreenthe oscillators are fully analog, they're just digitally controlled. not exactly the same thing as midi, as the original juno 6 didnt even have midi but still had digitally controlled oscillators. (DCOs) so while there is definitely a digital component, this device is more accurately described as an analog synth rather than a midi device.
@lorelei of the mist I understand your point about this being an analog synth. Like you said though, the original did not even come with a MIDI interface . At the end of the day be it analog, digital and MIDI based is a huge feet for under $100 and it works well. The synth I bought that had anything close to analog cost $600.00 which was a Casio XW-P1.
A quick search confirms that the Juno-106 has analog oscillators - and also has MIDI. Even “fully analog” synths can be controlled via MIDI via a MIDI-to-CV converter. @edwrdw, I gather that your home brew version uses digital oscillators? Once you get your hardware issues worked out, you can delve into virtual analog modeling in order to more accurately model the characteristics of the Juno’s oscillators and filters - not all are created equal! Awesome project 👍🏼👍🏼
If you want some places to start: I learned a lot about the software from Prajwal Mahesh, also Notes and Volts when I was getting started in hardware. (link at bottom) For i2c, this video helped me a lot: ua-cam.com/video/IyGwvGzrqp8/v-deo.html And for designing pcb I learned a lot from just importing praj's board into Eagle (free with student license), and zooming in to see how he did stuff. Here's a short playlist that you can follow along ua-cam.com/play/PL_vPxziaK2fkAHkkC08F1jBsdSDWrQhph.html After trying a bunch of different ICs for input expansion (multiplexer, i2c gpio expanders), I feel like praj's method is still the best. He essentially bought the ATMEGA4809, the CPU from the Arduino nano, and then wrote his own firmware to use it to read inputs. It only costs $2 (at his time of build), and has 48 pins, so a lot more cost effective. It can also read interrupts which is good for rotary encoders, and it's a lot easier to debug since you can just run your code on a full ardunio. The firmware part sounds pretty intimidating, but once you learn i2c (and get a good gpio library), it's pretty doable (probably some examples online you can copy too). Good luck!!!!! tag me when you're done www.youtube.com/@prajwalmahesh90 www.youtube.com/@NotesAndVolts
Dude, your ability to keep with it and work through your problems in public is awesome. Please keep documenting your journey, so inspiring for music peep and electronics alike. Let's go!
This is exactly the reason to get into a new field you don't have experience in like hardware/electronics/programming. You want a thing to exist but can't get it, so you make your own. A passion fueled relatively affordable project. Awesome stuff!
So far well done, especially with little experience! You have a bounce problem and for the multiplexers you probably need to add some deadtime to make sure you are reading the signal from the pot or switch you intent to read from. On the bright side, for 99,9% sure it is all fixable by changing the software. Read pin, set multiplexer, WAIT, read next pin, etc...
I dont like that debounce algorithm because it adds latency. I just interrupt from the input and check if it has been x microseconds since the last call of that ISR, otherwise I ignore.
The issue with the mux's might be propegation delay. They take some time to update, and so you may be reading the value from the previous port if you change the selector input and read immediately? Might just need to change your polling function to read from the current port, then change port, so by the time it "ticks" again, the newly selected port is ready to read.
I was thinking about his mux problems and it might be due to handling 3 truth tables? Also thanks for this "change your polling function to read from the current port, then change port, so by the time it "ticks" again, the newly selected port is ready to read" I never actually cross my mind that you can change the polling rate, I'll use it in my gardener project :D
This is really cool man. I love electronics, music and diy, and ive built a few little hardware based CVOs, amps, envelope generators, but i have dozens of arduinos and parts, and i have a few ideas from this. Thanks for sharing.
I think the instability is coming from not having pull-down resistors on the multiplexer inputs. I've made a MUX circuit before to read a bunch of ultrasound distance sensors and the signals I was getting were all over the place,until I put some high-value (>10k as far as I can remember) resistors between each input and ground. You could bodge wire them to the pins of the THT parts so you don't have to solder to the fine-pitch IC, although you get extra cred if you do that :D
Sounds pretty far away from a Juno 106, but don’t let that take away from the fact that this is a amazing show of determination, The end result is fantastic, it’s Junoesque, so I’d say it was an absolute success.
This video and your efforts are so awesome in so many ways. Thank you for sharing not only your successes...but also your trial and tribulations. Looking forward to building your synth...and hope JLCPCB gives you some love when I order.
damn i love this so much. ive been through similar processes in diy hardware/software projects but i love the perseverance and the end result sounded sick too! good shit
Fantastic! The Juno was my first synth....... I took 12th grade highschool off, in order to go to a music store and buy one. Anyway........ I just wanted to say, this is the best video I have ever seen on this/these sorts of subject matter. Remember........ I am older than dirt. Old enough to have bought a Juno new. I have been studying this stuff since then. That is a long enough time span for me to have at least learned what a good instructional video Is. Congratulations Thank you
Talk about an accelerated learning curve; so impressed my Canadian friend. Looking forward to any updates if you decide to polish this and squash the input bugs that appeared. Wonderful stuff.
For debouncing you can use a passive low pass filter placed between the button and pin as a hardware deboumcer. It's a cheap and easy solution that saves processing cycles on your microcontroller.
Yo thank you for acknowledging how much freaking work it takes to get over the CAD/PCB design part of circuit building. I feel pretty stuck here because it feels like you need to become pretty well versed in a lot of details from component libraries (both in your CAD and in your mental database of what's what) to CAD and 3D design to PCB layout. It's absurd and whenever I see a video of someone who went from knowing nothing to designing a PCB like it's no big deal I roll my eyes, so thanks for being forward about that part.
I appreciate this video so much, as one attempting to build models like these on a much more grandiose scale, this is the most chock full informative video I've seen yet
Super cool DIY project. Makes sense as something to do for fun and just to be able to say you made your own Juno 106 lol. Would love to see an analog version tho! Seems doable and even though you might not be able to get all the same components, you may end up with something even cooler!
great vid, and brave you. as tube recording equpmt DIYer build past for over 300 machines, starting is harder than anything. want something badly helps you overcome that. you did it. not many can do, they only talk, ignore them. great work.
really cool man, well done getting it to where it is! in regards to the switches + keycaps, a standard keyboard layout is a 19.05mm grid, you can follow the cherry spec (and get the 3d models for a cherry switch) and in terms of keycaps, a typical rule of thumb is that they're 18mm (x/y), however some keycaps can be offset to that from manufacturing. If you're gonna build a case for this, ensure that you give your switches enough room from the edge of the case, that is typically 1mm, otherwise they will scrape against the case
I'd like to see your schematic to give a better answer, but here's a couple of basic things about an array of switch inputs I noticed here. The first is that you don't seem to have enough resistors on your circuit board to implement the "Pull-up" scheme you describe at 5:18 . Each switch needs its own resistor, and it needs to have a fairly high resistance to prevent injecting noise onto the +5V buss in your drawing, but hopefully you aren't sending 5V into the inputs of a Teensy 4.0, as it's going to go all "CMOS Self Protection Mode" and it will behave erratically until it fries out completely. From looking at the routing attempt at 3:50, you're putting many small-signal/variable-loads from your sliders on the same power busses as your switches, which dump to ground. This will likely make your slidepots unstable, potentially bringing the GND buss above zero volts if the ground path is long, thin, and shared with other voltage sensitive components like shown on the schematic. Instead of using a software debounce "Algorithm", you can do it in hardware for higher performance. Simply use the built-in pull-up input resistors on a digital input, connect the switch to the input and the other lead to ground, while the switch is also paralleled with a low-value capacitor. I would try a 103, or .01uF, because I don't know what the internal pull-up resistor value is, but if it's 10kOhms, the .01uF cap should give roughly 10 clean clicks per second. The way this works is that the pull-up resistor charges the capacitor, and the input will be low for much of that time. When the capacitor is charged, the input is high, but when you hit the switch, the cap gets drained very rapidly, and needs time to recharge. This will keep your contact from bouncing far enough to change states, as long as your wiring inductance is low enough to prevent the capacitors from ringing from the LC circuit thus constructed. Therefore, keep the capacitors very close to each switch, and wire the switches to their respective digital inputs, and the chip's own ground pin, with no other components on that particular run. That's a bit "high-end" though. Most simple designs like this just have a power plane on one side, a ground plane on the other side, and pull back these flooded planes away from the wiring traces that also need to be there. Be sure that all digital chips have their power supply pins bypassed with 104 ( .1uF) caps as close to the chip as possible too. CMOS chips commonly have their inputs diode-protected to their power pins to route brief spikes and noise to their power pins, and so a cap to prevent sending out-of-spec signal between chips and to dissipate any trash that gets redirected internally, is usually not needed, but can solve a lot of weird haunting issues too. The MUX will have a settling time listed in its whitepaper. You need to give the chips time to send the command to select the input, and then wait for the output to stabilize before you can get a good reading from it. This will be listed in the whitepapers, but what you showed and said about your multiplexers doesn't match anyway. Perhaps there's a deeper issue here. You didn't give a part number, so I can't really look it up for you.
The controller has built in resistors "switchable" to gnd or vcc by means of registers setup. All debounce can be software done, no need for extra cap.
@@raphanunu6912 Software debounce to make up for something that could have been done in circuit? That's not very elegant, and is an overall shoddy practice.
“bluh bluh but its VIRTUAL analog” yeah and its still like a third of the price of the dang Roland Boutique. didn’t know teensy audio was so comprehensive, might look into making my own synths with this now 🤔
I'm very very impressed. I built a synth from a kit of parts and a PCB many years ago. It didn't work and I lacked the talent to resolve what was probably a myriad of issues. I enjoyed the process though.
As an undergrad electrical engineering student who's also really interested in synthesis and electronic music, this is such a sick and inspiring thing to me. I appreciate that you included the missteps and the aspects you didn't understand as well, because honestly a lot of the time I feel like I have no idea what I'm doing in my classes, so knowing that this is something other engineers deal with makes me feel better about myself lol. I really wanna do this but for the Yamaha DX7 sometime, maybe as a senior project, like use the fourier series/transform and all the stuff I've learned in my analog signal processing class to model the FM algorithms in python or something
Thank you for your explanation of multiplexing! I have always wondered what the process was, and your simple explanation was most helpful. Your progress through this project inspires me to start my own!
This is very impressive man. But you made a hardware interface for some dsp, not emulated a Juno. And then the sin you committed of putting a flanger instead of a chorus as the main effect. Gasp. Hahah So much of the juno sound is analog imperfection, it’s inability to stay perfectly in tune across every voice, and that super smooth analog filter. Those things are incredibly hard to model well in software, and avoid things like audible value stepping when doing a filter sweep. I would recommend keeping the signal path dsp and then running the digital oscillator mix into an actual analog filter. That’s what many modern synths are doing to give more sound variety while still getting that amazing analog filter sound and no weird aliasing.
Insanely cool project! I hope to eventually build something like that someday, though probably 10% of the complexity of this project. Impressive how far you got starting kind of from zero.
5:32 Where does start_state_1 come from? There's something missing there. IMO, the best debounce algorithm is "early accept with lockout period", or words to that effect - if a switch hasn't changed state in a while, you accept a change in state immediately. You then start a lockout period timer, and don't accept any more changes until it expires. This is the best solution for games, for example, because the button responds the moment you press or release it, not a few milliseconds later. It's better for things like a drum pad too - a millisecond delay, in sound, is like moving the instrument about a foot further away from your ears, or around 30cm.
From the board to the editing, I love the homebuilt vibe to this video! For future iterations, I recommend trying to build and test subcomponents on a breadboard first. That way you can confirm each part works without errors. Only after should you try integrating it onto a PCB
I'm making a guitar pedal form scratch and have run into many issues, tolerances, funky wiring to the IC, wonky footprints with small holes. 2 revisions later I still got the input and output jacks inverted. It sounds awesome so at least it's playable. I can't imagine trying to recreate a whole synth, great job!
Hey Edward, just started watching the video. You commented that there wasn't a way for you to know if your circuit was going to work without doing all the mounting work first. As a telecommunications engineer I wanted to tell you that there are applications that let you simulate full circuits like those. Intel's Quartus is the software that we use in our school in order to do digital circuits programming and you can simulate those circuits via its built-in tool Altera. In my experience, sometimes the programming+simulation work time is not worth it depending on the circuit you're building, as it is a different knowledge area that should also be learnt and practiced. Anyway, I'll go watch the rest of the video. You earnt a subscriber.
I like using shift registers over multiplexors. For one I'm more familiar with shift registers, and for another I can daisy chain them while keeping the pins to the microcontroller the same. If I wanted even more than 16 channels with a MOX, I'd have to use another 4 pins on the MC.
Bro the last thing i expected from watching this video is you triggering a core memory of fucking skylanders. That game was GOLD. I remember playing it so much as a kid and now i want to cry. Thanks bro 🤧. Also, amazing synth!
i mean, i guess? it's an 'emulator' of a juno though, i certainly couldn't program a digital or design an analog synth so its obviously nitpicking but interesting nonetheless
Hi. Nice project. Congrats! If I can offer you some advice: Always check the datasheets of the components you are using. For example, your multiplexer looks to be the CD4067 (16-1), and the datasheet states the adress swap takes, internally, 650ns max. It means 1000ns, or (1 micro second) is enough, which is an order of magnitude less than 2ms and this way you can introduce less delay on your program. Checking the datasheet is a good way to know the limits of the components you are working with, check if your code logic does what the component expects it to do, and so on. If you are running few switches, I can also suggest "hardware debounce", in the form of a tiny ceramic capacitor of, say, 10nF in paralell with the switch.
Super project :) If you make a version-2, you can delegate the IO to another Teensy board (or even something cheper like an Arduino mini). Link both boards with one of the buses (I2C/SPI) the so the music board can poll the IO board to get the states of sliders and buttons. The IO board can also control the LED's automatically taking another function from the music board. Nice work!
I'm assuming multitimbrality would be difficult to implement, but how hard would it be to implement optional phase inversion for each of the wave forms? I'm thinking something similar-ish to Pearlman Oscillators in functionality would be very cool on the Juno.
Drop your email address for updates about this synth + new one (that's way cooler)
forms.gle/ntrVC7fAiz4T71zp9
Smart kid.
That is so cool! Im currently working on building a modular synthesizer out of my old ddj 1000 flight case! Id love to learn more how you worked on the project in more detail. I dropped my email in the form!
Hey mate, dropped my email on your list and am keen to see your updates = )
@@MrBeermagnet Did you get something ? Or was this another way to grab your email ?
@@raphanunu6912Hi, no nothing since the video. Thanks for reminding me
You can buy a Juno but you can’t buy the engineering talent to make everything in your home from scratch, you are on point little bro
if you all want is the sound then you can reproduce that if you know what you are doing
@@3dmaxuser lol that's what they just said
Except this is a programming based digital emulation.
There is many amateur arduino-programmers doing amazing stuff. There is a ton of Arduino nerds on the internet that have learnt from scratch by chatting with other nerds on the internet, downloading manuals showing how to build your own synths. There was magazines about how to build analogue synths in the eighties when I was a kid, kindof the same thing. If I tried the same thing I would have earn´t the money to buy a Juno before I´ve even finished the project itself.
@@LimneticVillains Still a very cool project tho.
Long before the internet, Google, and UA-cam, in the amateur radio community, we had the concept of an "Elmer". This was a benevolent individual who offered their knowledge to help new "hams" to kick-start sometimes daunting entry into the hobby. I applaud your tenacity and will to learn and meet your goal. Great work, and I'm sure you learned more than you may have expected. I hope you had your own "Elmer" to turn to for advice. As you mentioned, many times, even with professional designers (and in many fields), it can be quite easy to paint yourself into a corner. An extra set of eyes can oftentimes get you back on track after you have looked at it for the thousandth time. Best of luck to you, and keep on! You're doing great!
Your problem with the analogue is from charge sharing between inputs. Give a little longer for each input to settle, put small capacitors to ground from each input(I.E.10Nf), and use lower resistances on your ADC inputs to combat the charge sharing. It puzzled me for a bit too, back around 26 years ago!
This is such a niche thing, I love it. You might be tapping into a specific subgroup of synth heads and homebrew engineers with this content such as I. Would like to see you build more synths!
same dude, this was a delight to stumble onto
Awesome, not only did you get a great synth, you got a great new pile of knowledge! And you shared it for other people to learn from. Super impressive and enjoyable to see.
That's a serious deep dive for a "starter" project ! I love the spirit.
you're braver than all! crazy challenge you achieved! i have looked into electronics when i started modular...i gave up when i grasped the amount of complexity layers. this is incredible what you achieved from scratch.
Really impressed that you where able to recreate an expensive and complex midi device with off the shelf parts for under $200.00. What you did is not something typically taught in a University environment. Beyond that, I feel that your keen awareness to share this journey online with others here is priceless. I hope you continue to innovate and share future creations here for us to enjoy. Time for me to pull out my old Teensie and see what midi accessory I can reproduce. . .
The Juno is an analog synth, not a midi device but, yeah it’s cool
You are correct in saying the Juno is an analog synth. It is also a complex midi device since it’s an analog synth with digital oscillators.
@@HowToShopGreenthe oscillators are fully analog, they're just digitally controlled. not exactly the same thing as midi, as the original juno 6 didnt even have midi but still had digitally controlled oscillators. (DCOs) so while there is definitely a digital component, this device is more accurately described as an analog synth rather than a midi device.
@lorelei of the mist I understand your point about this being an analog synth. Like you said though, the original did not even come with a MIDI interface . At the end of the day be it analog, digital and MIDI based is a huge feet for under $100 and it works well. The synth I bought that had anything close to analog cost $600.00 which was a Casio XW-P1.
A quick search confirms that the Juno-106 has analog oscillators - and also has MIDI. Even “fully analog” synths can be controlled via MIDI via a MIDI-to-CV converter.
@edwrdw, I gather that your home brew version uses digital oscillators? Once you get your hardware issues worked out, you can delve into virtual analog modeling in order to more accurately model the characteristics of the Juno’s oscillators and filters - not all are created equal! Awesome project 👍🏼👍🏼
Shit, as a software developer, I’ve always wanted to do something like this, so thanks for sharing your process 😁
you can do it!!!!! i believe in you!!!
If you want some places to start:
I learned a lot about the software from Prajwal Mahesh, also Notes and Volts when I was getting started in hardware. (link at bottom)
For i2c, this video helped me a lot: ua-cam.com/video/IyGwvGzrqp8/v-deo.html
And for designing pcb I learned a lot from just importing praj's board into Eagle (free with student license), and zooming in to see how he did stuff. Here's a short playlist that you can follow along ua-cam.com/play/PL_vPxziaK2fkAHkkC08F1jBsdSDWrQhph.html
After trying a bunch of different ICs for input expansion (multiplexer, i2c gpio expanders), I feel like praj's method is still the best.
He essentially bought the ATMEGA4809, the CPU from the Arduino nano, and then wrote his own firmware to use it to read inputs.
It only costs $2 (at his time of build), and has 48 pins, so a lot more cost effective. It can also read interrupts which is good for rotary encoders, and it's a lot easier to debug since you can just run your code on a full ardunio. The firmware part sounds pretty intimidating, but once you learn i2c (and get a good gpio library), it's pretty doable (probably some examples online you can copy too).
Good luck!!!!! tag me when you're done
www.youtube.com/@prajwalmahesh90
www.youtube.com/@NotesAndVolts
Dude, your ability to keep with it and work through your problems in public is awesome. Please keep documenting your journey, so inspiring for music peep and electronics alike. Let's go!
This is exactly the reason to get into a new field you don't have experience in like hardware/electronics/programming. You want a thing to exist but can't get it, so you make your own. A passion fueled relatively affordable project. Awesome stuff!
Ooo! Looks like a fun build. Doesn't hurt that it sounds awesome!
So far well done, especially with little experience! You have a bounce problem and for the multiplexers you probably need to add some deadtime to make sure you are reading the signal from the pot or switch you intent to read from. On the bright side, for 99,9% sure it is all fixable by changing the software.
Read pin, set multiplexer, WAIT, read next pin, etc...
Other method is to use soft counters, one per key. This is how I debounce and it works with any key or encoder.
nothing but love
I dont like that debounce algorithm because it adds latency. I just interrupt from the input and check if it has been x microseconds since the last call of that ISR, otherwise I ignore.
I hope you are inspired to keep making synths. Excellent work!!
Very nice project. I'd love to see the hardware documented once you get a chance to do a second revision of the board.
linked eagle files in desc
@@edwardwav Thank you :)
The issue with the mux's might be propegation delay. They take some time to update, and so you may be reading the value from the previous port if you change the selector input and read immediately? Might just need to change your polling function to read from the current port, then change port, so by the time it "ticks" again, the newly selected port is ready to read.
I was thinking about his mux problems and it might be due to handling 3 truth tables?
Also thanks for this "change your polling function to read from the current port, then change port, so by the time it "ticks" again, the newly selected port is ready to read" I never actually cross my mind that you can change the polling rate, I'll use it in my gardener project :D
Agreed. The timings will be in the datasheet for the mux chip.
This is really cool man. I love electronics, music and diy, and ive built a few little hardware based CVOs, amps, envelope generators, but i have dozens of arduinos and parts, and i have a few ideas from this. Thanks for sharing.
I think the instability is coming from not having pull-down resistors on the multiplexer inputs. I've made a MUX circuit before to read a bunch of ultrasound distance sensors and the signals I was getting were all over the place,until I put some high-value (>10k as far as I can remember) resistors between each input and ground. You could bodge wire them to the pins of the THT parts so you don't have to solder to the fine-pitch IC, although you get extra cred if you do that :D
Sounds pretty far away from a Juno 106, but don’t let that take away from the fact that this is a amazing show of determination,
The end result is fantastic, it’s Junoesque, so I’d say it was an absolute success.
Awesome video, as an engineer and a synth nerd myself this is really cool to see.
Also I see you have a GCVI sweater, I went to Ross!
The prices are so insane. I remember getting my 106 for like $350 in the late 2000's.
This video and your efforts are so awesome in so many ways. Thank you for sharing not only your successes...but also your trial and tribulations. Looking forward to building your synth...and hope JLCPCB gives you some love when I order.
Well done, thanks for taking the time to document it. :3
the outro is amazing. big fan. rewatched with one hand on loop
Dude, nice build! Props for jumping into the deep end as a beginner.
Thanks Edward 4 sharing your process and experiences! I really appreciate.
damn i love this so much. ive been through similar processes in diy hardware/software projects but i love the perseverance and the end result sounded sick too! good shit
Fantastic! The Juno was my first synth....... I took 12th grade highschool off, in order to go to a music store and buy one.
Anyway........ I just wanted to say, this is the best video I have ever seen on this/these sorts of subject matter.
Remember........ I am older than dirt. Old enough to have bought a Juno new. I have been studying this stuff since then. That is a long enough time span for me to have at least learned what a good instructional video Is.
Congratulations
Thank you
Talk about an accelerated learning curve; so impressed my Canadian friend. Looking forward to any updates if you decide to polish this and squash the input bugs that appeared. Wonderful stuff.
For debouncing you can use a passive low pass filter placed between the button and pin as a hardware deboumcer. It's a cheap and easy solution that saves processing cycles on your microcontroller.
Yo thank you for acknowledging how much freaking work it takes to get over the CAD/PCB design part of circuit building. I feel pretty stuck here because it feels like you need to become pretty well versed in a lot of details from component libraries (both in your CAD and in your mental database of what's what) to CAD and 3D design to PCB layout. It's absurd and whenever I see a video of someone who went from knowing nothing to designing a PCB like it's no big deal I roll my eyes, so thanks for being forward about that part.
I appreciate this video so much, as one attempting to build models like these on a much more grandiose scale, this is the most chock full informative video I've seen yet
The fact that you've been able to do this much, is very impressive, keep your chin up.
Super cool DIY project. Makes sense as something to do for fun and just to be able to say you made your own Juno 106 lol. Would love to see an analog version tho! Seems doable and even though you might not be able to get all the same components, you may end up with something even cooler!
Love the turtle scene at the end. Encouraging video, thank you for your time invested.
Great that you persevered and taught yourself. With that dedication to learn and do without giving, you can do anything.
Don't know why youtube recced this, but glad it did. Very cool video
(im so excited for whats to come keep going bro!!)
Such an awesome video. Really impressive that you've managed to go from zero to hero. Would love to see more of this content from you!
great vid, and brave you. as tube recording equpmt DIYer build past for over 300 machines, starting is harder than anything. want something badly helps you overcome that. you did it. not many can do, they only talk, ignore them. great work.
Dude this was so rad, you snapped
really cool man, well done getting it to where it is! in regards to the switches + keycaps, a standard keyboard layout is a 19.05mm grid, you can follow the cherry spec (and get the 3d models for a cherry switch) and in terms of keycaps, a typical rule of thumb is that they're 18mm (x/y), however some keycaps can be offset to that from manufacturing. If you're gonna build a case for this, ensure that you give your switches enough room from the edge of the case, that is typically 1mm, otherwise they will scrape against the case
This is so cool. I’ve been wanting to make my own synth for a while so this was really inspiring!
I'd like to see your schematic to give a better answer, but here's a couple of basic things about an array of switch inputs I noticed here. The first is that you don't seem to have enough resistors on your circuit board to implement the "Pull-up" scheme you describe at 5:18 . Each switch needs its own resistor, and it needs to have a fairly high resistance to prevent injecting noise onto the +5V buss in your drawing, but hopefully you aren't sending 5V into the inputs of a Teensy 4.0, as it's going to go all "CMOS Self Protection Mode" and it will behave erratically until it fries out completely. From looking at the routing attempt at 3:50, you're putting many small-signal/variable-loads from your sliders on the same power busses as your switches, which dump to ground. This will likely make your slidepots unstable, potentially bringing the GND buss above zero volts if the ground path is long, thin, and shared with other voltage sensitive components like shown on the schematic. Instead of using a software debounce "Algorithm", you can do it in hardware for higher performance. Simply use the built-in pull-up input resistors on a digital input, connect the switch to the input and the other lead to ground, while the switch is also paralleled with a low-value capacitor. I would try a 103, or .01uF, because I don't know what the internal pull-up resistor value is, but if it's 10kOhms, the .01uF cap should give roughly 10 clean clicks per second. The way this works is that the pull-up resistor charges the capacitor, and the input will be low for much of that time. When the capacitor is charged, the input is high, but when you hit the switch, the cap gets drained very rapidly, and needs time to recharge. This will keep your contact from bouncing far enough to change states, as long as your wiring inductance is low enough to prevent the capacitors from ringing from the LC circuit thus constructed. Therefore, keep the capacitors very close to each switch, and wire the switches to their respective digital inputs, and the chip's own ground pin, with no other components on that particular run. That's a bit "high-end" though. Most simple designs like this just have a power plane on one side, a ground plane on the other side, and pull back these flooded planes away from the wiring traces that also need to be there. Be sure that all digital chips have their power supply pins bypassed with 104 ( .1uF) caps as close to the chip as possible too. CMOS chips commonly have their inputs diode-protected to their power pins to route brief spikes and noise to their power pins, and so a cap to prevent sending out-of-spec signal between chips and to dissipate any trash that gets redirected internally, is usually not needed, but can solve a lot of weird haunting issues too.
The MUX will have a settling time listed in its whitepaper. You need to give the chips time to send the command to select the input, and then wait for the output to stabilize before you can get a good reading from it. This will be listed in the whitepapers, but what you showed and said about your multiplexers doesn't match anyway. Perhaps there's a deeper issue here. You didn't give a part number, so I can't really look it up for you.
The controller has built in resistors "switchable" to gnd or vcc by means of registers setup. All debounce can be software done, no need for extra cap.
@@raphanunu6912 Software debounce to make up for something that could have been done in circuit? That's not very elegant, and is an overall shoddy practice.
@@buckstarchaser2376 That's how I do, without delays, and it works pretty fine for a very gfew ressources.
this is badass thanks for making this video and sharing your work
Awesome, thanks for sharing and explaining the way you did!
“bluh bluh but its VIRTUAL analog” yeah and its still like a third of the price of the dang Roland Boutique. didn’t know teensy audio was so comprehensive, might look into making my own synths with this now 🤔
Great information, I used to solder PCB making MIDI stuff. Respect, SUBBED.
This is awesome and rad on you for releasing your work.
this is so awesome man the demo sounds so incredible!!
I'm very very impressed. I built a synth from a kit of parts and a PCB many years ago. It didn't work and I lacked the talent to resolve what was probably a myriad of issues. I enjoyed the process though.
Overall great video, learnt some stuff, and you also recognized where you may have gone wrong which is great to hear
WOW, I HOPE ONE DAY YOU WILL HAVE A VST PLUG IN HERE ON THE WEB TO TRY
As an undergrad electrical engineering student who's also really interested in synthesis and electronic music, this is such a sick and inspiring thing to me. I appreciate that you included the missteps and the aspects you didn't understand as well, because honestly a lot of the time I feel like I have no idea what I'm doing in my classes, so knowing that this is something other engineers deal with makes me feel better about myself lol. I really wanna do this but for the Yamaha DX7 sometime, maybe as a senior project, like use the fourier series/transform and all the stuff I've learned in my analog signal processing class to model the FM algorithms in python or something
check out dexed if you haven't
Thank you for your explanation of multiplexing! I have always wondered what the process was, and your simple explanation was most helpful. Your progress through this project inspires me to start my own!
Yeah this is super inspiring! Thanks for this video and showing your talents!
Wow, I'm pretty impressed you were able to figure that all out by yourself. Most of that I had to be taught.
This is very impressive man. But you made a hardware interface for some dsp, not emulated a Juno. And then the sin you committed of putting a flanger instead of a chorus as the main effect. Gasp. Hahah
So much of the juno sound is analog imperfection, it’s inability to stay perfectly in tune across every voice, and that super smooth analog filter. Those things are incredibly hard to model well in software, and avoid things like audible value stepping when doing a filter sweep. I would recommend keeping the signal path dsp and then running the digital oscillator mix into an actual analog filter. That’s what many modern synths are doing to give more sound variety while still getting that amazing analog filter sound and no weird aliasing.
Have you considered making your own Teensy Eurorack modules? I'm sure you could figure out something interesting to do or a multifunction module.
Insanely cool project! I hope to eventually build something like that someday, though probably 10% of the complexity of this project. Impressive how far you got starting kind of from zero.
You can’t really make a 106 using just a Teensy since it’s an analog synth with DCOs. However, I applaud your effort, this is a fun project.
Dope tech. Thought I was done with the video but glad I stayed for the outro. kek
In 2020, Cherry Audio released the DCO-106 plugin, a juiced up version of the Juno-106 which was priced at $39 USD in 2020.[27][28
5:32 Where does start_state_1 come from? There's something missing there.
IMO, the best debounce algorithm is "early accept with lockout period", or words to that effect - if a switch hasn't changed state in a while, you accept a change in state immediately. You then start a lockout period timer, and don't accept any more changes until it expires.
This is the best solution for games, for example, because the button responds the moment you press or release it, not a few milliseconds later. It's better for things like a drum pad too - a millisecond delay, in sound, is like moving the instrument about a foot further away from your ears, or around 30cm.
The activate windows in the bottom right corner is such a nice touch for a true engineer's pc build
From the board to the editing, I love the homebuilt vibe to this video! For future iterations, I recommend trying to build and test subcomponents on a breadboard first. That way you can confirm each part works without errors. Only after should you try integrating it onto a PCB
I think you should document this for future reference. Also, you might think about getting together with a vendor to assemble and sell! looking good!
Built a $2000 synth for $99 gaining $50k/year worth of knowledge
I'm making a guitar pedal form scratch and have run into many issues, tolerances, funky wiring to the IC, wonky footprints with small holes. 2 revisions later I still got the input and output jacks inverted. It sounds awesome so at least it's playable. I can't imagine trying to recreate a whole synth, great job!
Watching you do this gives me a lot more appreciation for the $400 module Roland sales, lol.
I feel a bit guilty because I have mint 106 sitting in my closet.. I bought it around 20 years ago for $600.00 cdn.
Hey Edward, just started watching the video. You commented that there wasn't a way for you to know if your circuit was going to work without doing all the mounting work first. As a telecommunications engineer I wanted to tell you that there are applications that let you simulate full circuits like those. Intel's Quartus is the software that we use in our school in order to do digital circuits programming and you can simulate those circuits via its built-in tool Altera. In my experience, sometimes the programming+simulation work time is not worth it depending on the circuit you're building, as it is a different knowledge area that should also be learnt and practiced. Anyway, I'll go watch the rest of the video. You earnt a subscriber.
sick
I like using shift registers over multiplexors. For one I'm more familiar with shift registers, and for another I can daisy chain them while keeping the pins to the microcontroller the same. If I wanted even more than 16 channels with a MOX, I'd have to use another 4 pins on the MC.
This is what you choose as a beginner project? Amazing!
Excellent video. Only just found it and I really like it.
Awesome!! Thanks for sharing this video, inspirational!
Bro the last thing i expected from watching this video is you triggering a core memory of fucking skylanders. That game was GOLD. I remember playing it so much as a kid and now i want to cry. Thanks bro 🤧. Also, amazing synth!
Nice job. For not doing any of this before, you nailed it!
Caps help with debounce, just need to pull up or down the switch
Amazing my dude. Inspirational
i mean, i guess? it's an 'emulator' of a juno though, i certainly couldn't program a digital or design an analog synth so its obviously nitpicking but interesting nonetheless
More sounds, please. Amazing project. i like to have juno 106 too.
I've thumbed up at 0:29 ! you've earn it, man ! teensy at it's best !
Hi.
Nice project. Congrats!
If I can offer you some advice: Always check the datasheets of the components you are using.
For example, your multiplexer looks to be the CD4067 (16-1), and the datasheet states the adress swap takes, internally, 650ns max. It means 1000ns, or (1 micro second) is enough, which is an order of magnitude less than 2ms and this way you can introduce less delay on your program.
Checking the datasheet is a good way to know the limits of the components you are working with, check if your code logic does what the component expects it to do, and so on.
If you are running few switches, I can also suggest "hardware debounce", in the form of a tiny ceramic capacitor of, say, 10nF in paralell with the switch.
Cool, thanks
Amazing work, and you have turned it into a game of "Lights Out" !!!
smaller diameter solder (0.3-0.5mm) will make SMD and even small through-hole soldering much easier
The Juno service manual has some good info on its topology
Super project :)
If you make a version-2, you can delegate the IO to another Teensy board (or even something cheper like an Arduino mini). Link both boards with one of the buses (I2C/SPI) the so the music board can poll the IO board to get the states of sliders and buttons. The IO board can also control the LED's automatically taking another function from the music board. Nice work!
Digikey shipping to Canada is so good. Mouser and Digikey both have nothing close in the US. The cheapest rate is like 8USD and takes a week.
Love this sort of stuff, and appreciate the detail. Subbed here!
nice man, the demo sounds cool !
"pretty simple" my ass lol.... you have alot of skills and an amazing brain dude, continue to use it
This is genuinely the single best music video I've ever seen
thanks anvay
Young friend reference!????????????
Whoaaaa that sounds WAY better than I'd expected. Followup video?
When you does not want waste your pins for LEDS, use Neopixel (WS2812) 5V LED RGB stripe. Is very easy to use if you use arduino for it.
Well done 👏 I’ve always wanted to do this exact project!
I'm assuming multitimbrality would be difficult to implement, but how hard would it be to implement optional phase inversion for each of the wave forms? I'm thinking something similar-ish to Pearlman Oscillators in functionality would be very cool on the Juno.