MoonBeam Digital Synthesizer
A Pi Pico digital synth inspired by the Hack Club guide, now improved to a stand alone synthesizer.
Created by
Parker Kac
Tier 3
37 views
0 followers
CAN ⚡🚀
approved MoonBeam Digital Synthesizer ago
Tickets awarded: 110 tickets
Tier: 3
Moonbeam Ice Cream
Parker Kac
submitted MoonBeam Digital Synthesizer for ship review ago
Parker Kac
added to the journal ago
Code Fixes, Notes Play Correctly, ready to ship
Fixed mostly coding bugs. Got the notes in the right order so the thing actually plays correctly. Fixed a lot of the audio logic so playing more than one note doesn't crash everything.
Still a couple more things I'd like to do, but for now it woks and it's shippable.
So much fun to work on this project.

Parker Kac
added to the journal ago
Assembled and Working?
Spent a long time soldering the entire board. Had to both SMD hot plate some chips, but most of it was hand soldering all the through hole components and keyboard switches. Originally nothing was working last night and I got super disappointed but it looks like after re flowing a couple things and fixing a minor short its working.
The software is still a little iffy. every button plays the same frequency note and pressing more than one breaks everything. But both speaker and headphones work and the waverform switcher also works.

Parker Kac
added to the journal ago
Received Boards, fixed small PCB Errors
Received the boards from JLCPCB yesterday. Still waiting on components from LCSC, but the boards look really good. I noticed two small errors, neither are fatal but I worked on fixing them.
- The resistor footprints were too small I used the same footprints as the diopdes, but the diodes are especially small and my resistors are bigger (common size) this has been fixed
- My slide pot pin pitch was 2.00 instead of 2.54 Dont know how this one got past but also updated
neither are super big, I should be able to assemble the board with these errors and probably wont order a new board (and for sure not until I assemble it once and verify the other parts) but the files have been updated on github

CAN ⚡🚀
approved MoonBeam Digital Synthesizer ago
Tier approved: 3
Grant approved: $68.00
Parker Kac
submitted MoonBeam Digital Synthesizer for ship review ago
Kai the Jolly Guy 🚀
requested changes for MoonBeam Digital Synthesizer ago
Great project! I love your PCB, and the little banner at the top showcasing your project :D
Parker Kac
submitted MoonBeam Digital Synthesizer for ship review ago
Parker Kac
added to the journal ago
Shaved $30 Off BOM
I got over my fear of Aliexpress and got the total cost for me and you down by $30. Amazon shipping was pretty expensice. Now im ready to ship and start ordering pieces.

Kai the Jolly Guy 🚀
requested changes for MoonBeam Digital Synthesizer ago
Hey Parker, sick project :D Could you please find cheaper keycaps, and maybe cheapen your amazon order. It should be cheaper to get everything from aliexpress, but it's mostly the keycaps that are a tad expensive!
Parker Kac
added to the journal ago
Shipped

Made a promo image for the project. Created a BOM. updated the Github a lot. uploaded code, cad, PCB files. Also shipped the project and waiting for review.
So happy with how this turned out and cant wait to get it and continue making improvements on it.
Parker Kac
submitted MoonBeam Digital Synthesizer for ship review ago
Parker Kac
added to the journal ago
Finished Code with Waveform Viewer

I think im finished with the code. I added a waveform viewer for the audio out. It works with different wave types and (should) change with the pitch and vibrato sliders.
This code has been a beast but im going to upload it to the github have some people review it and then ship on the weekend.
Parker Kac
added to the journal ago
Added ADSR Editing and Waveform Switching

I added two more menus today with "art" for both. You can now switch wave forms to either sin, triangle, saw, or square. The icon in the banner also changes accordingly.
I also added a way to change the ADSR curve of the waveform. you use one rotary encoder to change time and the other to change the level.
Going to add 1 last app to view the current outputted wave, like an Oscope and then im going to be done with software for now.
Parker Kac
added to the journal ago
Added Menu Selection, Fixed Nasty Bug

I added a rotary encoder and a menu selection screen as well as drawing icons for that. (last journal made this a little confusing this is the "main menu" that was like the main control page that shows what the synth is doing generally). I fixed a really weird bug with the encoders where the screen was drawing too many times and the delay in I2C writes was causing the encoders to not register rotations. (this issue was present across 2 different encoder libraries).
Ive got the wave form selector, the wave viewer, and the envelope editor left and then im done!
Parker Kac
added to the journal ago
Coded Main Menu

Worked a lot on art and cleaning up code and some really weird bugs. I found out that the way i did multi core made core 0 freeze when core 1 started so i fixed that. I did more pixel art, creating graphics for what wave form is selected. Also added functions to change waveform and ADSR for later. biggest part though was creating the main menu screen where you can see the value of the sliders and in the future, what note is being played on each channel.
going really well so far i just really hope it works
Parker Kac
added to the journal ago
More Coding

Started by fixing some minor things in the CAD (forgot holes for the ports)
Then started adding in the OLED into the code. I got multicore on the pi pico, but for some reason the u8g2 graphics library didnt seem to work. (it could be multi core, or weird I2C pins, or a cheap knockoff OLED i dont really know). The adafruit ssd1306 and gfx libraries did work though. I also made a pixel art logo for the project.
Next steps are too modify parameters for the audio from the OLED.
Parker Kac
added to the journal ago
Finished Case Design

Finished the first revision of the case design. Had to go back and forth changing dimensions on the board and found that I put the wrong footprint on 1 screw hole. I think it looks pretty good but the lid doesn't seem super good so I might go back later. Looking like 200-250 grams for the entire thing which im pretty happy with.
Now its code time
Parker Kac
added to the journal ago
Started Case Design, Cleaned up Prototype Code

Worked on the first version of the case. I like it, but it seems big so its going to be a real challenge to print and will need to be multiple pieces, so I will look into alternatives and optimizations.
Also cleaned up code for the prototype and started migrating it to the new design which uses a slightly different design than the prototype.
I think im going to try multi core on the Pi Pico, but that will be my first time so I will see what happens.
Parker Kac
added to the journal ago
Cleaned Up Board and Started Code

Mainly just cleaned up a bunch of loose ends this session. I cleaned up some routing things, replaced an LED with a GPIO test pad, adjusted the back silkscreen. I made a test print to see if the switch placement was good and it felt a little far away from front to back so I moved the back row closer to the front.
I also started (vibe) coding using the Mozzi audio library. the audio portion looks good, but i'm going to go back and try and make it myself.
Mainly just need to finish code and make a case before it is ready to be shipped.
Parker Kac
added to the journal ago
Added Silkscreen


Went through all the components and added silkscreen of their values to make assembly easy. also added my and hack clubs logos. and found a moon pattern and added that to the back of the PCB. Also went to Logo.com and got a logo for the project made.
Parker Kac
added to the journal ago
Laid out and Routed PCB


I laid out the PCB today. It was pretty challenging to get it all to fit together logically and in a small footprint. It ended up being about 350mm x 90mm. I'm pretty happy with how it looks and next I will work on making a cool silkscreen.
I also routed the PCB today, getting the multiplexed buttons was a little challenging, but I got it all done with a pretty small amount of vias.
Parker Kac
added to the journal ago
Completed Schematic


Spent a lot of this time researching how to get audio out. I took a headphone jack out of a broken usb adapter and wired it up in the schematic. I decided to use the pcm5100, and two TI chips, the lm4810 amd the 4861 to amplify the speaker and the headphones. Also did some other cleaning up, made a new footprint for the slide pots, added debug LEDS.
Next Im going to set out the PCB
Parker Kac
added to the journal ago
Finished Breadboard Prototype

I spent most of this time upgrading the prototype. I added more buttons to 12, added another slide potentiometer, an I2C screen.
I also started making code (with a lot of help from AI) it shows promise but I am having trouble getting the notes to sustain, so I might need to write the code myself.
Before that though, im going to design the PCB next and finalize the features. Going good so far though.
Parker Kac
added to the journal ago
First Prototype

I spent most of this time in research. I liked the guide put out by hack club, but wanted a fully digital synthesizer, not just the controller. After looking at different chips and MCUs, I found that the mozzi library with a pi pico and an analog multiplexer and DAC would probably get me the best results. Before going into major PCB design, I wanted to make a breadboard cut down version just to prove it. I did get audio out of the speaker, and the next step is to get inputs and outputs from the pico.
Parker Kac
started MoonBeam Digital Synthesizer ago
10/25/2025 - First Prototype

I spent most of this time in research. I liked the guide put out by hack club, but wanted a fully digital synthesizer, not just the controller. After looking at different chips and MCUs, I found that the mozzi library with a pi pico and an analog multiplexer and DAC would probably get me the best results. Before going into major PCB design, I wanted to make a breadboard cut down version just to prove it. I did get audio out of the speaker, and the next step is to get inputs and outputs from the pico.
10/26/2025 1 PM - Finished Breadboard Prototype

I spent most of this time upgrading the prototype. I added more buttons to 12, added another slide potentiometer, an I2C screen.
I also started making code (with a lot of help from AI) it shows promise but I am having trouble getting the notes to sustain, so I might need to write the code myself.
Before that though, im going to design the PCB next and finalize the features. Going good so far though.
10/26/2025 6 PM - Completed Schematic


Spent a lot of this time researching how to get audio out. I took a headphone jack out of a broken usb adapter and wired it up in the schematic. I decided to use the pcm5100, and two TI chips, the lm4810 amd the 4861 to amplify the speaker and the headphones. Also did some other cleaning up, made a new footprint for the slide pots, added debug LEDS.
Next Im going to set out the PCB
10/27/2025 6 PM - Laid out and Routed PCB


I laid out the PCB today. It was pretty challenging to get it all to fit together logically and in a small footprint. It ended up being about 350mm x 90mm. I'm pretty happy with how it looks and next I will work on making a cool silkscreen.
I also routed the PCB today, getting the multiplexed buttons was a little challenging, but I got it all done with a pretty small amount of vias.
10/27/2025 9 PM - Added Silkscreen


Went through all the components and added silkscreen of their values to make assembly easy. also added my and hack clubs logos. and found a moon pattern and added that to the back of the PCB. Also went to Logo.com and got a logo for the project made.
10/28/2025 - Cleaned Up Board and Started Code

Mainly just cleaned up a bunch of loose ends this session. I cleaned up some routing things, replaced an LED with a GPIO test pad, adjusted the back silkscreen. I made a test print to see if the switch placement was good and it felt a little far away from front to back so I moved the back row closer to the front.
I also started (vibe) coding using the Mozzi audio library. the audio portion looks good, but i'm going to go back and try and make it myself.
Mainly just need to finish code and make a case before it is ready to be shipped.
10/30/2025 - Started Case Design, Cleaned up Prototype Code

Worked on the first version of the case. I like it, but it seems big so its going to be a real challenge to print and will need to be multiple pieces, so I will look into alternatives and optimizations.
Also cleaned up code for the prototype and started migrating it to the new design which uses a slightly different design than the prototype.
I think im going to try multi core on the Pi Pico, but that will be my first time so I will see what happens.
11/1/2025 - Finished Case Design

Finished the first revision of the case design. Had to go back and forth changing dimensions on the board and found that I put the wrong footprint on 1 screw hole. I think it looks pretty good but the lid doesn't seem super good so I might go back later. Looking like 200-250 grams for the entire thing which im pretty happy with.
Now its code time
11/2/2025 7 AM - More Coding

Started by fixing some minor things in the CAD (forgot holes for the ports)
Then started adding in the OLED into the code. I got multicore on the pi pico, but for some reason the u8g2 graphics library didnt seem to work. (it could be multi core, or weird I2C pins, or a cheap knockoff OLED i dont really know). The adafruit ssd1306 and gfx libraries did work though. I also made a pixel art logo for the project.
Next steps are too modify parameters for the audio from the OLED.
11/2/2025 2 PM - Coded Main Menu

Worked a lot on art and cleaning up code and some really weird bugs. I found out that the way i did multi core made core 0 freeze when core 1 started so i fixed that. I did more pixel art, creating graphics for what wave form is selected. Also added functions to change waveform and ADSR for later. biggest part though was creating the main menu screen where you can see the value of the sliders and in the future, what note is being played on each channel.
going really well so far i just really hope it works
11/3/2025 - Added Menu Selection, Fixed Nasty Bug

I added a rotary encoder and a menu selection screen as well as drawing icons for that. (last journal made this a little confusing this is the "main menu" that was like the main control page that shows what the synth is doing generally). I fixed a really weird bug with the encoders where the screen was drawing too many times and the delay in I2C writes was causing the encoders to not register rotations. (this issue was present across 2 different encoder libraries).
Ive got the wave form selector, the wave viewer, and the envelope editor left and then im done!
11/4/2025 10 AM - Added ADSR Editing and Waveform Switching

I added two more menus today with "art" for both. You can now switch wave forms to either sin, triangle, saw, or square. The icon in the banner also changes accordingly.
I also added a way to change the ADSR curve of the waveform. you use one rotary encoder to change time and the other to change the level.
Going to add 1 last app to view the current outputted wave, like an Oscope and then im going to be done with software for now.
11/4/2025 4 PM - Finished Code with Waveform Viewer

I think im finished with the code. I added a waveform viewer for the audio out. It works with different wave types and (should) change with the pitch and vibrato sliders.
This code has been a beast but im going to upload it to the github have some people review it and then ship on the weekend.
11/4/2025 7 PM - Shipped

Made a promo image for the project. Created a BOM. updated the Github a lot. uploaded code, cad, PCB files. Also shipped the project and waiting for review.
So happy with how this turned out and cant wait to get it and continue making improvements on it.
11/5/2025 - Shaved $30 Off BOM
I got over my fear of Aliexpress and got the total cost for me and you down by $30. Amazon shipping was pretty expensice. Now im ready to ship and start ordering pieces.

11/25/2025 - Received Boards, fixed small PCB Errors
Received the boards from JLCPCB yesterday. Still waiting on components from LCSC, but the boards look really good. I noticed two small errors, neither are fatal but I worked on fixing them.
- The resistor footprints were too small I used the same footprints as the diopdes, but the diodes are especially small and my resistors are bigger (common size) this has been fixed
- My slide pot pin pitch was 2.00 instead of 2.54 Dont know how this one got past but also updated
neither are super big, I should be able to assemble the board with these errors and probably wont order a new board (and for sure not until I assemble it once and verify the other parts) but the files have been updated on github

12/1/2025 - Assembled and Working?
Spent a long time soldering the entire board. Had to both SMD hot plate some chips, but most of it was hand soldering all the through hole components and keyboard switches. Originally nothing was working last night and I got super disappointed but it looks like after re flowing a couple things and fixing a minor short its working.
The software is still a little iffy. every button plays the same frequency note and pressing more than one breaks everything. But both speaker and headphones work and the waverform switcher also works.

12/3/2025 - Code Fixes, Notes Play Correctly, ready to ship
Fixed mostly coding bugs. Got the notes in the right order so the thing actually plays correctly. Fixed a lot of the audio logic so playing more than one note doesn't crash everything.
Still a couple more things I'd like to do, but for now it woks and it's shippable.
So much fun to work on this project.
