Assembled rev 3 over the course of the past three days - this one makes some pretty major changes:
dropped the AA batteries in favor of a lipo & charge circuit
samd10 on the frontboard to manage the buttons & LEDs. this is now fast enough to support PWMing the LEDs
fixed the issues with the speaker & amp, actually sounds nice now
sd card on sdio (yay, fast, 4bits at a time)
line in detection works, headphone still isn't (I swear I worked this out on the breadboard)
I put the wrong footprints in for the mic, so that won't work. I might be able to fix if I had hot air rework, but I don't.
This time I bit the bullet and actually soldered stuff in, rather than putting female headers everywhere so I could rescue the expensive bits. This let me mostly assemble it, with two execeptions. I stacked up the two ffc connectors that are underneath the teensy, rather than offsetting them. Also the ffc connector doesn't actually fit underneath the battery, so I can't fit it inside the sandwich.
I think both of these issues are fixable.
The larger question I'm up against is if I want to take a hard turn away from teensy, and just make this an stm32 board. It would majorly lower the complexity in some ways, and definitely lower the cost. I could potentially also make it a single board, rather than this sandwich stackup.
I think in need to grind on that question for a few more days, while I'm working on the firmware. Luckily the work that I'm doing on the firmware is transferable to whatever arm chip I end up slotting into the thing, so that isn't a huge issue.
The Basics This project started because I thought it would be interesting to build my own pocket operator. There are a few other projects diy projects that come do this as well, the Teensy Beats Shield, the Wee Noise Maker, and the polaron in particular are pretty nice!
The core was going to be a teensy 4, since it is wildly overpowered as an embedded audio platform, and I expect I can get a bunch of synth channels running at once. Outside of that, the goal is to make everything battery powered, pocket sized, and with a similar ui layout to the pocket operator.
Rev 1 The initial revision had the following modules:
A boost chip to get the AA batteries up to 3.3v - I followed the boost section from the powerboost1000.
A pam class d amp for the onboard speaker
flash memory chip
sgtl5000 codec (the same as the teensy audio shield)
audio in / out over 1/8 inch jacks
I also build an io board that had
and a spot to drop in the oled 96x64 oled display I was using.
This io board just broke all the various parts out to a giant pin header, and I ran the matrix from an arduino pro mini clone I had lying around. The arduino pro mini was communicated with over i2c from the teensy 4. This was the part of the project that actually worked! I got nice pwm control of the LEDs, I could get fast button responses, all sorts of nice stuff.
The part that didn't work so well was the back board. I got the boost chip working, and the amp seemed to work (when I fed it external audio) but I irrecoverably messed up the power supply for the codec, so I couldn't get it dumping audio out. I tried changing the configuration of the codec (its a big blob of i2c nonsense you send it) but there was no audio no matter what I did. Turns out the issue was elsewhere.
You may notice this revision is dusty as heck. The front board was ordered in september, and the backboard was from november.
I didn't make a ton of changes to the main board on this one, other than fixing the issue with the power supply for the audio codec. Once I had that up and running though, I discovered that the audio still wasn't working. I went digging, and found that the in and out lines for the i2s interface were flipped. I had copied the schematic from the teensy audio shield, and those had them flipped. Luckily I was able to easily bodge a fix for this.
you will notice the front board is listed as r.1, I started numbering them at zero, but then changed it. Bad version control, whoops.
The front board went through more changes. I decided not to bring the pro mini onto the board, but rather use an i2c gpio expander. I didn't do the calculations up front, but it turned out that I couldn't push data to it fast enough to accomplish pwm brightness control of the LEDs.
I messed up the pin header for the oled, so I couldn't actually solder it into place, and due to the fact that I was adding female headers to socket the teensy, that meant it was too tall for me to mechanically assemble the sandwich anyways. I also ordered the wrong amp chip, it was a class a/b instead of a class d. I don't know that this really affected the output a ton, but I couldn't get a clean sound out of my speaker.
The good news was that the buttons and lights basically worked, the oled basically worked, and I could write software for it. I started building a sampling drum machine for it, but got kinda bored of writing dsp code I knew had been written a million times before. A few months passed while I worked on other projects, and then I came back to it and decided to port mutable instruments plaits so I could quickly get a ton of really nice sounds.