Hot-swappable switches would be cool as well. Such a cool project with good suggestions all around from others. I kinda hope you come back around to this at some point but I can understand life happens/just moving on with other things.
This is quite incredible. It is funny that the music you chose to play while building and soldering, made the build appear that much more overwhelming and dizzying!!!
This was such a treat to watch after work today. I recently got into DIY synthesis after graduating college. And seeing projects like this are purely inspirational. Thank you so much. I look forward to testing this out soon.
i cant appreciate you enough for explaining everything for the noobs like myself. your videos are very well done, very educational, i hope to one day soon have your level of skill. thank you for sharing.
Wow, been looking for something like this as someone who fell in love with the OP1 and wanted to write my own code/firmware. Definitely going to build one of these if I can.
I have ordered parts and starting to assemble mine on a perfboard. But decided to mock a 16pad mpc-like layout instead for sample triggering. Cherrymx keys on breakouts with leds behind each key.... more to come.
Realy cool! It would be great if you could offer selling a complete kit with all components and PCBs so electronic-noobs like me can get your wonderful work by just one click.
Once again I appreciate your skills. I would have messed up even in soldering the battery charging micro-chip. But you proceed so daringly and neatly in your approach!
Amazing video and channel. This build is not for the faint of heart, although you are seemingly pushing through with ease. Really glad to see this, and the more tactile switches included in this build. Very interested to see where this goes. Subbed!
Your videos are getting better each time. Very impressive!!! Looking forward to the next update! The idea with LED potentiometers is great. Could the keyboard buttons also have LEDs built-in? Would be great for step sequencing, but I guess separate LEDs underneath would work too. This device is gonna be so sweet! PS: Have you thought about a name yet? First things coming to mind are: minkey, miboard, teekey or tiki, keysy :) or keasy....or keesy...maybe sounds too cheesy?
Thanks!! As convenient as it would be, the keyboard buttons unfortunately don't come with leds built in. There is a space on the underside of each switch to accommodate a little led (like in rgb computer keyboards), but idk if they'll be super visible even if I switch to using transparent keycaps. I will test it out of course :) I think my best bet might be to just place the rgb leds on the pcb right above the keyboard buttons And thanks for the name ideas! The cheesier, the better! I've been trying to put off naming it for as long as I can because I'm afraid of committing to a single name lol, but its gonna happen pretty soon
@@prajwalmahesh90 I'm interested on how those LEDs will look. Alternatively they might fit above or below the switch since the key is a little taller. What would be interesting: if some resistive pad or line could be fitted unter the keys. I'm thinking of velocity and aftertouch.
@@vladkokasian5248I'm glad you brought that up lol, I've been obsessing over adding some pressure sensing to the keys since day one and still haven't found a good way to do it. I keep coming back to velostat, since it's super cheap and really easy to cut into whatever shape I want, but mechanically, I have no idea how to implement it. It might be worth a shot though to add a couple pads to the PCB right under the switches, put a piece of velostat across it, and then sandwich it with the switch on top. Maybe the resistance changes with key presses could be measurable…
@@prajwalmahesh90 From what I read velostat is the way to go if using switches. (or some witty math with capacitive touch). The sandwich sounds like a lot of work. But below and above the switch so the rim of the key cap hits it might be enough and would make testing easier.
@@prajwalmahesh90 Thanks for the detailed answer, I am sure you'll figure out a great hardware solution! Yeah naming things can be a pain...as one has to stick with it. No need to rush it though ;)
Loving this project, Thanks a lot for providing the resources for the community. Looking forward to an even bigger version to account for a larger screen. Its such an interesting project, would love to try building it myself.
Great work! I've been thinking about ways to get velocity sensitivity cheaply. Using a SPDT switch that has both NC and NO outputs, the microcontroller could time the break-before-make of each switch. I tested with just one such switch, and it was feasible, but in a matrix it would double the number of columns and need super fast scanning and make the atmega a very busy chip. It might be worth it, though.
Wow, this is very inspiring! I'm a software developer and cable a bit in electronics. I often dreamed of building something like this but it seems overwhelming so it is very inspiring to look at what you built! Amazing work!
Thanks! Go for it, dude! I barely had any experience with electronics before starting this project, so I guess sometimes the best way to get started is to jump right into the deep end haha
Amazing work! I would like to buid it too. Just one question: did you develop a multitrack mode? I dont ser it in the demos or in your writings. Would be a pity if not. That would make this machine not really usable.did you work on this? If yes, i will try my luck bulding this and will ve more than happy to make a donnation for your beautiful work!
Great anti-gotcha guide for newbies.👍 Surprised to see that you're using an ATMEGA4809 as an input processor, instead of I2C multiplexers (as I've seen elsewhere). Are you using it for more than just routing inputs into the T4, such as driving the display graphics, counting button presses, or forwarding subroutine calls to the T4?
Great project! Your interface is really nice (inspired by op-1?). Im working on arduino at the moment but thinking about going to teensy after seeing the awesome audio library GUI
I want to build this kind of thing a while back, and I have my expectations quite high, but now I think about it, it could be real difficult. I haven't started my project, but I still have high expectations (beautiful and refined exterior, powerful and well-designed software...), I'm still doing more research... hope you will finish your project and maybe I can copy some code 😏 I think I may go with 48kHz or 96kHz with the SGTL5000 codec, as 16-bit is really more than enough as the circuit routing and most importantly the power supply is not good enough to utilize the 16th bit or even 15th. Also, I can't make commercial velocity sensitive keys because I can't make weird proprietary parts, but I can stick magnets on the keys and have hall effect sensors on the PCB to measure the distance pressed down maybe? (keep the mechanical switches because making comfortable buttons that is not those 6*6 or 12*12 tactile switch at home is not really plausible...)
Right on, dude good luck! Yeah the magnet idea is one I've been wanting to try in the next version- I think some other commentor mentioned it as well. The thing with that approach though is that while it theoretically works great for velocity sensing (assuming you find a clever way to quickly monitor all 24 analog hall sensor outputs), there's no way to sense aftertouch, which I personally feel is more important to expressive playing than velocity alone. Also I came to the same conclusion about the mechanical switches- I was using these silicone domes in the previous version but those just didn't feel as nice as these do. Anyway I'm psyched to see what you end up building, if you do. Hope you share your results with all of us!
Woah - this is completely awesome Dude! Any advice for a complete electronics noob about smaller projects to try before working up to this? All power to You Brother
In your 4 part Blog about the build you are mentioning in your diagram 24 pressure sensitive buttons... I see only 24 normal push button... where are the pressure sensetive buttons? or did I miss something? Anyway, fantastic report!
Hi there, very interested in building this after building the LMN-3. Are you coming out with a newer version or is this build still good if all the parts can be sourced? I know some of the items are discontinued on Digi-Key.
The dimensions have not changed for the switches, you just purchased different switches entirely. One are slim mx switches, the others are kailh choc switches
I wish I knew how to do this ..u should sell the design to behringer t.e or korg or something....do u make them to sell to people or is it just a one of project?
Hey can you point me towards what rotary encoders you are using? I'm making something similar and dont want moves with detents but it seems like almost all rotary encoders have them. Can you help a brother out?
Of course! I use the PEC11R-4015F-S0018, but you should check out the entire PEC11R family (all available from Digikey) which come in different shapes, resolutions, and detent options.
Hi Prajwal. You are doing a wonderful project! I am thrilled. You did not detail much on what caused that digital noise for which you had to change the board, and how you solved that problem. I am interested to know because I am also getting a lot of noise in my buildup, which is a tiny synth based on Atmega. I am not sure how much of that contributed by the wrong hardware design and how much of it contributed by 8 bit limitation of Atmega. I have to bear with the latter because of my choice of mcu but I wish to know if the hardware or connections or PCB board can cause some.
Thanks for bring that up, I gotta talk about that in more detail in a future vid. I'm just speculating on most of this, but in my case, wrong hardware design was the main issue. The old board was a 2-layer board with traces routed on both sides and ground pour in all of the empty spaces. I didn't think too much about it at the time, but it actually resulted in a bunch of separate ground polygons interconnected randomly by thin sections of copper. This ended up causing two interrelated issues- 1. The return currents for all the signals had to travel really long distances through multiple polygon "sections" before being able to get to GND. These long return paths resulted in a lot of parasitic inductance and ringing in my high speed digital signals, and the high frequency components from this were able to couple into the surrounding traces and polygons. 2. Because there was a relatively large amount of impedance in the ground net, the various polygons were not actually always at ground potential, and "ground bounce" coupled the digital signals into the analog signals. I fixed this issue in the new board by switching to a 4 layer board, where I once again routed the signals on the top and bottom sides, but left the two internal layers as big uninterrupted ground planes (stitched together like crazy with a bunch of vias). This provided a stable, low-impedance ground connection to all the components and reduced the parasitic inductance by providing a more direct return path for all my signals.
@@prajwalmahesh90 That's a great explanation for the hardware problem! We understood the importance of low impedance ground. I can just imagine the area of each plane of ground in your new design. Does each plane cover now the whole board area now? And my next guess how much did you pay for 5 pieces of such a four-layered PCB.
@@trivimudbodh Yep the groundplanes now cover the full board. The 4 layer boards are relatively more expensive- I got 5 copies of my 99x282mm board from JLCPCB for $48 plus $20 shipping to California.
Have you thought about using switches with analog input so how hard you press the keys will affect the tone/volume etc? Also, is there a reason for using PSP like joystick instead of more substantial joysticks like the ones used in PS4 controllers?
I think about that all the time lol, but I haven't found good solution yet for analog sensing that's both cheap and feels good to press. If you have any leads though, I'd love to check them out! As for the PSP joystick, I chose it mainly to maintain a low profile. It obviously doesn't feel as good or have the same range of motion as one of the full-sized joysticks, but those would stick out a lot when mounted on the PCB so this seemed like an adequate compromise.
@@prajwalmahesh90 PS4 controller’s (Dualshock 4) L2/R2 trigger buttons use analog sensors. Considering how long it has been around, I am wondering if the prices are on the cheaper side now?
Impresive work. I am building a sampler with the Teensy 4.1 myself and this is very inspiring. One doubt I have is: doesn't the inputs being read by the ATMEGA and sent to the Teensy cause latency issues when playing sounds in real time?
Thanks! There is a very tiny bit of latency, but not enough to notice in my experience. I'm having the teensy poll the atmega chip every 25ms, which is about the latency you'd expect from like a usb keyboard on a computer iirc. But, the I2C communication between the two devices operates at like 100 kbits/s, and since I'm only sending 64 bits at a time, I could probably be updating as fast as every 5ms. I just haven't found a reason yet to go that fast.
@@vladkokasian5248 Even simpler! The input processor is keeping track of 51 buttons total as well as 4 quadrature encoders. So, I can represent the state of each button using 1 bit (for 2 possible states 0=off 1=on) and the state of each encoder using 2 bits (for 3 possible states 00=nothing 01=forward 10=backward). That adds up to 59 bits (or 8 bytes) total to represent all the inputs, and those 8 bytes gets sent over I2C to the Teensy whenever the teensy requests it (every 25ms). I'm sure it's possible to make this even smaller, for example by sending a single bit plus an identifier every time the state of a key changes, but the 8 bytes thing is working out ok for me
@@vladkokasian5248 Rather than being scanned periodically like the switches, the encoders are attached to pin change interrupts (another nice thing about the atmega4809 is that all pins are hardware interrupt capable) so the chip basically pauses whatever else it's doing and counts the encoder every time its state changes. So with some extra caps added to help with contact bounce, I haven't been able to spin the encoders fast enough by hand to make it loose steps. The joystick and the volume potentiometer are just read by a couple of the teensy's analog input pins.
Will the boards be on Tindie or something some day? I had an Op1 and loved it, but not enough to justify it's price. I'd love to build something even a little similar.
Oh I didn't know spi programming was an option. Thanks for the tip! Do you have a link or something I can check out for more info on how that works? As for the usb ports, I keep trying but I haven't found a good way yet. I can't just use the usb on the teensy for charging, because that would mean the entire device would turn on every time I went to charge it (unless I can figure out a good way to switch it automatically). But I also can't really use the external usb port for programming because the teensy uses high speed 480mbit usb and idk if i'd be able to maintain signal integrity if I tried to pass the data lines through the pcb, next to the switching power supply, and up into the teensy with pogo pins. Though I that's worth a shot in the next revision.
@@prajwalmahesh90 I think this should get you started: voidyourwarranty.wordpress.com/2014/08/17/using-arduino-as-an-isp-to-program-a-standalone-atmega-328p-including-fuses/ USB is a bit tricky since only the seperate host port has a breakout. My first idea would be to have an initial low power sleep state for the board. Then you'll have to push a button to wake it up. Or use the switch to hold and release that state. But there needs to be some circuitry that guides the power to the right places. Have you thought about using the smaller version of the teensy and or moving the sdcard to the right side? I'm still trying to figure out how to add sdram to the teensy like the daisy has.
@@vladkokasian5248 Oh my bad, I didn't realize the ISP thing for avr chips was just SPI lol. Though I think these new AVRs (including the 4809) don't use ISP anymore and can only be programmed through UPDI (unless you put a bootloader on there, in which case serial programming also becomes an option) I only found out today, but the Teensy 4.1 (but not the Teensy 4) actually does have a couple of pads for main usb D+/D- on the underside of the board below the usb port, but iirc they're just there for testing and pretty hard to break out in a board like this. I do like the sleep state idea! and I'm sure I could find some reasonable solution for guiding the power around. Thanks for the suggestion! I wanted the big teensy mainly so I could install the extra psram chips onto it. I think those pins aren't broken out in the smaller version. And dude... I hadn't heard of the daisy until just now. Looks like a pretty sweet device, but not as easy to use (yet?) as the teensy audio library lol. I would be super interested to know if you ever succeed with adding sdram! Both hardware and the software to get it to work with the M7 chip seem like daunting tasks haha. I've been getting by using a combination of the 16MB of sram and 64MB serial flash but it would be great to have a big block of memory with fast read and write speeds.
@@prajwalmahesh90 I'm going back and forth between the daisy and teensy but can't decide which to use. For starting out the daisy looks nice and simple, integrated dac and sdram. Checkout the submodules they have this fv-1 dsp. But the teensy has strong points like the community, good libs, onboard sdcard (and an ethernet option for funny things like rtp midi). I thought the spi flash might be the argument for the larger version. I've completely forgotten about the usb pads on the bottom. I wonder if they could be accessed with pogo pins. Then you could position the board to your liking. updi... maybe that is analog to the isp create.arduino.cc/projecthub/john-bradnam/create-your-own-updi-programmer-1e55f1
@@vladkokasian5248 Yeah the modules are pretty cool and I especially like that the daisy works with max and puredata. Tough choice lol I was thinking the same with pogo pins, but from what little info I'm seeing on the forums, it's pretty hard to get it working because the data lines are so high speed. I'm definitely gonna try though! And yeah that updi guide is actually the same one I used to set up my programming thing. You can see that although they're attaching headers to the isp header of that nano, they're not actually using any of the isp data pins, and instead they're connecting a wire from D6. I think Atmel/Microchip just made the change because UPDI only requires one wire for programming vs ISP which requires three (MOSI, MISO, and SCK)
Yep they're mechanical switches, just like the ones used for mechanical computer keyboards. Unfortunately not pressure sensitive, but I'm still looking for ways to add pressure sensing somehow
Thanks dude! I live in California (USA), and ended up paying a little over $57 total for shipping from all the different retailers. That's like 1/3 of the project cost 😬 yikes
@@prajwalmahesh90 How much was just the pcb shipping? I always see these crazy low prices for the production, but haven't looked into how much it actually costs to get them to show up. (Also in CA)
@@prajwalmahesh90 Ok, that sound about right. I see all these things for getting 5 boards for $2 from them, but then figured it was many times that to get them shipped...
@@jrlening hi, it was not easy getting the components and I had to over pay for most things. One thing that maybe a problem is the 512mb flash chip but I have a alternative pary to try. But the answer to your question is: farnell, mouser, Amazon, eBay, jlcpcb, opencircuit. If you build one let us all know how you get on.
You’re totally right, usb c is better all around lol. The only reason I’m using micro for charging rn is because the port on the teensy is already a micro so this way I don’t have to worry about having 2 different cables to use the device. If I can find a good way to charge the device and program the teensy through a single port, I’ll definitely be switching to usb c