Democratizing Music: Manufacturing an Accessible, Integrated Kit for Composition and Live Performance
Advisor: Ms. Apra
Internship Location: Shelburne, Vermont (virtual)
Onsite Mentor: Chris Walker
I began learning piano at the age of three with the intent of progressing through standardized examinations. Practically, this entailed hours of rote memorization of classical pieces, and while having perfect pitch expedited the process, I found no joy in it. At 11 years old, I pivoted into electronic music production, a field where I could compose my own ideas; to date, I’ve spent thousands of hours working on original music using Logic Pro X (comparable to GarageBand), creating with computer-generated sound.
Unfortunately, a major barrier exists for young musicians who hope to follow the same path: cost. Even beginner equipment can run into four-digits, depending on your specialization within electronic music. Worst of all, several personal forays into product development and small business have taught me most of that equipment cost lurks in profit margins.
So I’m building a prototype: an analog synthesizer interface, an isomorphic MIDI controller, and custom software for live sequencing and performance, all rolled into a device as portable and affordable as a Nintendo Switch. In other words, it’s an electronic musician’s entire studio in your backpack at a fraction of the cost. By the end of this project, I’ll have functional, scalable, intuitive equipment that I will use to compose and perform an original song in front of a live audience.
I’ll be remotely working with Hack Club’s Chris Walker, an expert on integrated systems (and a lover of strange piano keyboard layouts) to develop the software and CAD for my prototype. But for the most part, I’ll be relying on my own expertise in the fields of music, computer science, and product design to make this dream happen.
Project Blog
Post 1: Blog 0
For a world where creativity transcends cost.
As a music producer and DJ, I’ve had the chance to energize countless events, teach music composition to other teenagers, launch my own resources for young musicians, and put smiles on my friends’ faces. Then inevitably, someone emerges from the audience: “I’d like to learn, but it’s too expensive.”
Over the course of these blogs, I’ll take you through the process of building a piece of intuitive and (most importantly) affordable equipment for beginners and professionals alike. And here we are, at Step 0.
***
Technically, this is supposed to be the beginning of my project, but I’ve been working since the beginning of 2024. Well, working is a loose term, but prototyping, planning, testing ideas, coding—you know what I mean. I don’t have a physical product to point to yet, but the experience has been invaluable. That’s the goal here! I’m ready to start fresh.
Here’s a recap of what it is I’m trying to build, pulled from my blog abstract:
"... an analog synthesizer interface, an isomorphic MIDI controller, and custom software for live sequencing and performance, all rolled into a device as portable and affordable as a Nintendo Switch. In other words, it’s an electronic musician’s entire studio in your backpack at a fraction of the cost."
As I’m writing this, I’ve just submitted all my college applications and I’m beginning to hear back from some of my favorite schools. So there hasn’t been much time to work on anything between financial aid forms and capstone final projects. But in a few short weeks, school will “end” and progress will truly begin. That’s the status update. I’m most excited to jump into building the physical interface, because while it makes up a smaller percentage of the work, having it in my hands will make me feel great about progress.
Long term, I want my work to reach hundreds of people. I want my prototype to turn into something I can produce at scale. We’re at the beginning of that road at this moment. Follow along, it’ll really mean something.
Post 2: Blog 1: The Raspberry Pi
A package arrived at my door the other day.
Yeah, I thought it was pretty ominous too. But within was a key component of my project: a beautiful Raspberry Pi 5 with 8 gigs of RAM (and a nice case for it). For the uninitiated, it’s a full computer the size of a credit card. Plug it into a monitor and you’re good to go. This little device will be the brains of my prototype.
Speaking of prototyping, here’s a quick summary of what I’ve accomplished this week:
Studied basic CAD modeling
Spent time working on a web app demo version of the prototype
Working on music that will be playable on the prototype
Now, I started the week off with the best of intentions. Thought I’d approach my goals in a precise order. But life throws its hurdles at you, and a busy week led to a busy approach. Still, things are running along smoothly. I’m getting comfortable with SuperCollider and I can’t wait to have a 3D mockup of the whole project.
See you next week.
Post 3: Blog 2: Getting down to business
Progress... unstoppable once it’s moving but near impossible to get started. This week, the wheels started turning for real.
I didn’t have any dramatic package deliveries this time (shoutout to my Raspberry Pi 5 from last week), but I did put in more hands-on work. No sitting around reading theory for hours -- just running scripts, testing ideas, and seeing what sticks.
Here’s a breakdown of what I worked on this week:
Testing MIDI signal response times: I wrote a quick Python script to log MIDI input timestamps and compare them against when they were actually received. This was my way of checking for any input delay that could throw off real-time performance. The results weren’t perfect (some lag here and there), but now I’ve got a baseline for improvement.
Exploring isomorphic key layouts: Using my MIDI keyboard and Launchpad, I tried out different note arrangements to simulate how my controller might feel. Since isomorphic layouts let you play the same patterns in any key, I wanted to test how natural they were under my fingers. Some layouts felt promising, but I’m still debating whether I should go full hexagonal grid or keep things simpler.
Learning about PCB layout through experimentation: I spent some time shifting components around on simulators, mostly focusing on spacing and wiring paths. I didn’t make any major leaps here, but playing with the layout helped me visualize how compact I can make the board without making it a nightmare to put together.
Connecting a MIDI controller to SuperCollider: I ran some basic sequencing tests by sending MIDI data into SuperCollider and manipulating it in real time. This was mostly an excuse to see how fluidly I could map different parameters and mess around with live synthesis. Not super practical yet, but, fun fun fun!
Mocking up UI layouts: I threw together a rough UI sketch to get a better sense of how the controls should be arranged. Buttons, knobs, pads -- I want everything to feel like it belongs under your hands, not scattered randomly. This mockup will probably change a hundred more times, but at least I’ve got something real to reference.
Every little test, every failed experiment, it all pushes me closer to the finish line. I can start seeing the pieces coming together, and that’s exciting. Next week, I want to start making real decisions about the interface. The goal is to have something that feels playable, even if it’s just in software for now.
See you next week.
Post 4: Blog 3: Nailing down the nitty-gritty
This week went by like a blur. Receiving a ton of college decisions. Some good, some... not so good. Beautiful weather every day. Still managing to wake up at 5 every day. Despite the chaos, I still managed to make some progress on the project. Not huge leaps, but enough to keep things moving.
Here’s a breakdown of what I worked on:
Fine-tuning MIDI input smoothing: I ran a script to average out incoming MIDI velocity data and smooth inconsistencies. The idea was to make note inputs feel more natural, especially for expressive playing. The difference wasn’t night and day, but it’s another small piece of the puzzle.
Comparing response times for different potentiometers: I tested both linear and logarithmic pots to get a feel for how they affect real-time control. I didn’t have a strict experiment planned—mostly just turning knobs and seeing what felt right.
Messing around with UI color schemes: Played with different contrast settings and color choices for the interface mockup. It’s not a major priority right now, but making sure everything is visually intuitive will matter in the long run.
Looking into microcontroller options: Spent some time researching alternative microcontrollers just to see if there’s a better fit for the project. No final decisions yet, but I’ve got a few new contenders on the list.
Revisiting the hex layout debate: Once again, I tried experimenting with a hexagonal grid for the input layout. I still can’t decide if it’s the best choice, but at least I know I’m not completely sold on the alternatives either.
This wasn’t my most productive week, but I’m not stressing about it. A lot is changing right now, and I’m trying to embrace that instead of getting stuck in the usual routine. Next week, the goal is to make real decisions instead of tinkering with ideas. Still ahead of schedule.
See you next week.
Post 5: Blog 4: Overheating!?!
Wednesday morning, I realized I had installed the case on my Raspberry Pi wrong---no proper cooling, which explained the overheating issues. Right now, I’m figuring out whether I need to get... thermal paste or something? I reassembled the case once but there's some issue with the adhesive material. Until then, the Pi is on pause, which is frustrating because it was finally starting to feel like things were coming together.
Before the shutdown, I did manage to get some real coding work done; solid, tangible steps toward making the synth software function properly:
I spent some time tweaking how MIDI events are queued and triggered in real time, making sure note-on and note-off messages weren’t getting bottlenecked. This involved adjusting buffer sizes and refining the timing logic to keep everything running smoothly.
I implemented a basic rendering system for visualizing waveforms, using a lightweight GUI library to display simple wave shapes. Eventually, I want this to evolve into a full-featured editor, something along the lines of what Native Instruments' Massive or Serum offer, but for now, it’s a functional starting point.
I worked on mapping MIDI CC messages to synth parameters in real time, so knobs or sliders could control things like filter cutoff, reverb depth, or modulation. Instead of hardcoding everything, I built a more flexible system, but working with limited components is going to make this trickier as the project scales.
It’s annoying to hit a roadblock right when things are moving, but at least I got some key software pieces in place before the hardware situation derailed me. Hopefully, by next week, I’ll have the cooling issue sorted and can get back to making strides.
See you next week.
Post 6: Blog 5: Not Overheating Anymore
This week was basically a staring contest between me and a tiny, overheating computer. The Raspberry Pi had been throwing a fit ever since I botched the case installation, and I was convinced I’d need to start shopping for a heatsink as per my friend Samarth's suggestion, or maybe even a new cooler setup. But here’s the thing: after leaving it alone for a couple days, I booted it up again... and it just worked. No thermal throttling, no auto-shutdown, nothing. A little warmer than ideal, but totally usable. I don’t know if the thermal pad finally settled into place or if the Pi just needed a moment to reflect on its choices, but I'll take the win.
Most of the week was eaten up by that drama, but I still squeezed in some work:
I threw together a quick Python script to simulate inconsistent MIDI input, basically testing what happens when data arrives a little too fast or too out-of-sync. I was curious whether my queuing logic from last week could still hold up under a bit of stress, especially with CPU usage creeping up from background tasks. It... did not work so well. Still working on it.
I also cleaned up some older testing code that had become a little bloated. A bunch of print statements to log errors, redundant imports, things I didn’t really need anymore. Not glamorous, but it makes debugging way less painful down the line. Again, not a lot more I could do with the Pi out of commission for most of my time.
Honestly, it wasn’t the flashiest week, but it felt real. Less about shiny breakthroughs and more about making sure things don’t catch fire (literally). Hoping that next week I can dive back into sound design and UI, now that the Pi isn’t actively trying to melt itself.
See you next week.
Post 7: Blog 6: Music!
This week, I shifted full focus to the demo song I’ll be performing live at the end of this project. The idea is to use the track as both a stress test and a showcase for the hardware: if it can handle a full pop production with layered synths, real-time parameter automation, and aggressive MIDI control, I’ll know I’m on the right track.
Most of the time went into building the skeleton of the song in Logic Pro. I started with a basic chord progression, something bright but punchy. Then, I worked out a rough topline melody to give it structure. I didn’t bother with vocals yet, but the phrasing is baked in so it’ll feel cohesive when I add them (if I do). I've done this a million times but this time around, I had to keep my hardware in mind.
From there, I moved into sound design using Native Instruments' Massive and Kontakt plugins. Massive handled the main synth engines---think sawtooth stacks with detune, a low-pass filter with a little envelope modulation on the cutoff, phaser. You know, shaping the waveforms in ways that'll challenge my system.
Kontakt, an emulator for real instruments like pianos and saxophones, posed a little larger challenge conceptually, considering my system is built around basic waveforms, but honestly I think I can get away with using e-pianos and organ sounds.
Drums were built from scratch. No loops. Never. I did use samples, just like I plan to with my system, but applying basic echo, pan, and compression was a breeze.
Mixing and definitely mastering are afterthoughts
No code. No CAD. No PCB. But this song is shaping up to be the emotional and technical centerpiece of the whole project. It’s what people will hear. It’s what they’ll remember. And if the hardware doesn’t choke while I perform it, that's a win.
See you next week.
Post 8: Blog 7: User Interface Design
This week I took a step back from building new features and instead dedicated my time to making the existing interface actually feel good to use. The backend logic was mostly stable, but the overall experience still felt clunky; more like a prototype than something you’d want to interact with in a real creative session.
So I spent the bulk of the week refining the UI. Not just visually, but functionally. I tried to approach it like a user would: if I were sitting down to make music, what would confuse me? What would slow me down? What would feel intuitive?
Here are a few of the changes I made (among many):
- Labeled Parameter Displays: I cleaned up a bunch of unnamed sliders and numeric fields, adding clear, readable labels so you actually know what you're adjusting. “Filter Cutoff” and “Dry/Wet” go a long way compared to, say, “Slider 7.”
- Color-Coded Modes: I implemented distinct color themes for different sections of the interface—synth design, drum sequencing, mix adjustments, etc., to provide quick visual feedback and help users know where they are without needing to read small text. Especially important with the tiny screen I plan to use.
- A Reset Anchor Point: I added a dedicated homescreen, which acts like a safe place to return to when you're deep in a submenu. It’s subtle, but when you're moving fast, it’s a lifesaver.
Those are just surface-level examples, but the bulk of my time was spent streamlining workflows: fewer clicks to access core functions, better spacing of interface elements, improved mouse/touch targets. Basically, I stopped thinking like a developer and started thinking like a musician.
There’s still a lot to improve, but this was the first week the UI started feeling like something I’d want to use outside the context of a school project.
Post 9: Blog 8: Burnout
I’ve been dealing with what I can only describe as a heavy and persistent lack of motivation. That might sound surface-level, but it’s deeper than just not feeling like working. It’s been... an ever-growing list of responsibilities piling up, and me just not rising to meet them. Not because I don't care, but because the more the list grows, the harder it becomes to even look at it.
I haven’t been submitting my timesheets, and as of this last week, my consistency in checking in dropped. That avoidance came back around hard this week. I got called into the office and was told I was in danger of being dropped from the project entirely. It wasn’t dramatic or shocking, but hearing it out loud forced me to admit to myself that I let things get out of hand. It's one thing if I were the only one affected, but I have advisors that are counting on me to pull my weight. I can't make my problems everyone else's.
Folks believe in what I'm building. And I know that my work will create real impact. All it would have taken was being more prompt with communication and, well, submitting my timesheets.
After talking to Ms. Nagpal, I’ve been given a final opportunity to catch up. That means submitting everything I missed and sticking to it going forward. We are heading into the final stretch anyhow. It’s a second chance, and I don’t take it lightly.
This week wasn’t about music, or code, or design. It was about accountability.
I’m committed to pulling this project across the finish line.
See you next week.
Post 10: Blog 9: The Final Countdown
This week felt different, not because everything suddenly got easier, but because something finally clicked.
The web-based DAW I started building last week (slight pivot from the previous native software due to hardware and overheating issues) is now almost done. It’s lightweight, intuitive, and feels surprisingly good to use. It’s not Logic Pro, obviously, but it plays like something familiar. You can record MIDI, layer tracks, nudge notes in the piano roll, tweak virtual instruments, and loop ideas just like you would in any proper music-making environment. The UI is responsive, the transport bar is smooth, and you can drop into a workflow without needing a manual. That was the goal.
I leaned into the core features:
* Layering multiple virtual tracks
* Drawing and editing MIDI in a basic but functional piano roll
* Playback controls with looping and tempo changes
* Simple synth manipulation and recording directly in-browser
The more I refined it, the more I realized I was building something that people could actually, finally make music with. The kind of tool that invites you to mess around. It’s not bloated, it’s not over-engineered, it just works. That’s a rare feeling, and honestly, it’s exciting.
But now, there’s no excuse to avoid the harder part: the hardware.
I’ve been letting that side lag, partly because software has been more fun and easier to test, but also because I’ve been second-guessing design choices and dragging my feet on implementation. I can’t afford that anymore. The demo’s coming up fast, and the DAW is basically ready to go. What’s missing is the very thing this entire project is supposed to showcase -- the physical interface.
If I want people to take this seriously, then I need to move fast, and smart, and now. The software has bought me some time, but not much.
I’m proud of how far the app has come. Now I need to close the loop.
See you next week.
Post 11: Blog 10: STRESSED.
The online DAW is basically finished. It’s not perfect, there are still a few bugs to squash and details to tighten up, but it works. You can play, record, layer, edit MIDI, mess with synths, and build full tracks right in the browser. For something that started out as a fallback, it’s ended up being one of the most functional and satisfying parts of the whole project.
As for hardware… well, everything is arriving *just* in time. The input PCB, sound card, and other components are either in-hand or on the way. I’ve got a solid plan for assembly. It’ll be really really really REALLY tight, but it’s doable.
The one thing that’s absolutely not happening is a fully CADed, polished enclosure. There’s no way I’m going to model, print, and finish a proper shell in time for the presentation. So I’m improvising. I’ve been looking at plastic tubs, storage boxes; anything rigid and modifiable. Worst case, I drill some holes, mount the parts inside, and call it a day. It might not look pretty, but it’ll work. And honestly, at this point, functionality matters more than aesthetics.
This whole thing has been a balance of ambition and adaptation. A year ago, I imagined building a sleek, all-in-one device that would look like something from Teenage Engineering. Today, I’m just proud it exists and that it’ll work when I hit play at the demo.
I think.
See you at the finish line.