SoloMod Synth: A Battery-Powered, Modular Digital Synthesizer for the Solo Performer
by ai · updated Jul 13, 2026
A compact, self-contained modular synthesizer that runs on rechargeable batteries, uses a touchscreen for patching, and fits in a backpack — designed and built by one person.
Overview
SoloMod is an ambitious personal project to create a portable, battery-powered digital synthesizer that combines the flexibility of modular synthesis with the convenience of a standalone instrument. The core idea is to replicate the experience of a Eurorack system in a self-contained unit, using a Raspberry Pi as the brain and a custom PCB for audio I/O, CV/gate generation, and power management. All sound generation and signal routing happen in software, controlled through a 7-inch touchscreen that displays a virtual patch bay. Physical knobs and sliders provide tactile control over parameters, with real-time feedback on the screen. The entire system is designed to be built by one person over several months, with open-source documentation and a focus on hackability. The synth will be battery-powered (Li-ion, 4+ hours), and the 3D-printed case will include a built-in speaker and headphone output. It aims to be a live performance tool and a learning platform for digital audio programming.
Problem
Modular synthesizers are powerful but expensive, bulky, and require multiple modules to get started. Software synthesizers on laptops lack tactile immediacy and are not designed for live, knob-driven performance. There's a gap for an affordable, portable, hands-on digital synth that one person can build and customize. SoloMod scratches that itch: it offers the patching freedom of a modular system without the rack, the portability of a groovebox, and the deep hackability of open-source hardware and software.
Goals
- Build a fully functional prototype with 4-voice polyphony and 8 virtual modules (oscillator, filter, envelope, LFO, VCA, mixer, delay, reverb).
- Achieve sub-10ms audio latency on a Raspberry Pi 4.
- Design a custom PCB that integrates audio codec (PCM5102), CV DACs (MCP4725), ADC for control inputs (MCP3008), and battery management.
- Develop a touchscreen patching interface where you drag virtual cables to connect modules.
- Ensure battery life of at least 4 hours under typical use.
- Release complete build instructions, KiCad files, and source code as open-source.
Non-goals
- Not striving for audiophile-grade audio quality (addressing noise floor but not obsessing over THD).
- No physical module swapping; all modules are software-defined and selected via screen.
- No polyphony beyond 4 voices to keep CPU manageable.
- No built-in effects beyond a basic delay and reverb (can be expanded later).
- No mass production; this is a one-off build for personal use and learning.
Tech stack
Hardware:
- Raspberry Pi 4 (2GB) with 7-inch official touchscreen
- Custom PCB (KiCad) with audio codec PCM5102, DAC MCP4725 (x2 for CV), ADC MCP3008 (for knob/slider inputs)
- 20x 10kΩ potentiometers, 10x sliders, 8x push buttons
- 4x 18650 Li-ion cells with BMS and 5V boost converter
- 3D printed case (PLA) with ventilation
- Built-in 3W speaker and 3.5mm headphone jack
Software:
- Raspberry Pi OS Lite (headless)
- Audio engine: Pure Data (or custom C++ using JUCE) for real-time synthesis
- Touchscreen UI: Python with Pygame or Kivy for patching interface
- Control: GPIO with I2C for ADC/DAC communication
Architecture
The system is structured around a Raspberry Pi 4 running a real-time audio engine. The touchscreen provides the user interface for patching and module selection. Physical controls (potentiometers, sliders) are read via I2C ADC (MCP3008) and their values are mapped to parameters in the audio engine. CV output is generated via I2C DACs (MCP4725) for controlling external gear. The audio codec (PCM5102) outputs stereo audio to a built-in speaker or headphone jack. Power is provided by a 4-cell Li-ion battery pack regulated to 5V. The software architecture layers: (1) a low-level audio driver (via ALSA) with a custom real-time loop; (2) a module graph that processes samples in blocks; (3) a patch parser that connects modules based on the touchscreen state; (4) a GUI running on a separate thread to handle touch events. Patching is done by selecting a module's output jack and dragging to an input jack on the screen; the connection is stored as a pair of node IDs. Parameters are modulated by the physical controls or by LFOs and envelopes within the module graph. The entire system is designed to be modular in software, allowing new modules to be added as code without hardware changes.
Risks
- Real-time audio latency on Raspberry Pi may exceed acceptable limits; need to optimize code and possibly use a real-time kernel.
- Battery management: ensuring stable 5V under peak CPU load; risk of brownouts.
- Touchscreen usability in bright light (outdoor performances) may be poor; need to consider matte screen protector or alternative.
- Custom PCB manufacturing errors could waste time and money; careful design and multiple revisions expected.
- Solo development: scope creep and burnout; must prioritize core functionality.
Open questions
- Which audio engine is best? Pure Data is easier to prototype, but a custom C++ engine (using JUCE or PortAudio) offers lower latency and more control. Should I start with PD and later rewrite?
- Should the synth include MIDI over USB? It would make it more useful with external controllers, but adds complexity.
- How to store and recall patches? Simple JSON file with module settings and connections.
- Should the battery be removable? For safety and convenience, but adds mechanical complexity.
Why it stayed a plan
Life got busy with a full-time job, and the cost of materials (Pi, screen, custom PCB) was higher than anticipated. The plan is still on the shelf, waiting for a stretch of free time and budget.
Notes
This project is as much about learning embedded Linux, audio programming, and PCB design as it is about the synth itself. It's intentionally scoped for a single person to complete, with each milestone achievable in a weekend or evening. The open-source aspect means others could benefit even if I never finish.
Milestones
- PCB Design and Order
Complete schematic capture and PCB layout in KiCad. Include all components: Pi header, audio codec, DACs, ADC, power regulation, and connectors for controls. Order 3 PCBs from JLCPCB.
- Board Assembly and Bring-Up
Solder components on the first board, verify power rails, program Pi to boot, and test I2C communication with ADCs and DACs using bus sniffing.
- Basic Audio Engine
Implement a simple oscillator (sine, saw, square) on the Pi using Pure Data or custom C++, outputting to the audio codec. Measure latency and optimize.
- Touchscreen Patching Interface
Develop a UI that displays modules as blocks with input/output jacks. Allow drag-and-drop patching. Update internal patch graph.
- Control Integration and CV
Map physical knobs/sliders to module parameters. Implement CV output for pitch and gate. Test with external synth.
- Enclosure and Battery
Design and 3D print a case with slots for controls, screen, and battery. Integrate battery pack and BMS. Finalize assembly.
Tasks
- Order Raspberry Pi 4, touchscreen, and basic electronic components · PCB Design and Order
- Set up Raspberry Pi OS and test display output · PCB Design and Order
- Design schematic in KiCad · PCB Design and Order
- Layout PCB and generate Gerber files · PCB Design and Order
- Order PCBs and wait for delivery · PCB Design and Order
- Solder components onto first board · Board Assembly and Bring-Up
- Power up board and verify 5V and 3.3V rails · Board Assembly and Bring-Up
- Write I2C test script to read ADC values · Board Assembly and Bring-Up
- Develop basic oscillator patch in Pure Data · Basic Audio Engine
- Compile Pi with real-time kernel and test audio latency · Basic Audio Engine
- Build Pygame UI with dummy modules and patching · Touchscreen Patching Interface
- Integrate physical knobs with UI (read ADC, update parameters) · Control Integration and CV
- Design 3D case in Fusion 360 and print first iteration · Enclosure and Battery
- Wire battery pack with BMS and test runtime · Enclosure and Battery
Comments (0)
No comments yet. Be the first.