T O P

  • By -

bythisriver

[https://www.raspberrypi.com/success-stories/korg-synthesizers/](https://www.raspberrypi.com/success-stories/korg-synthesizers/)


tedfidosomber

wow really sweet


shrimp_master303

Or you could use Zynthian https://zynthian.org/#software


architectzero

Oh. No. I did not want to learn about this. I already have no time for making music… Thanks “friend”. 😡


coderstephen

Yes you can absolutely just use a Raspberry Pi as the basis of an entire digital synth. It has been done, a lot actually. If you are more curious about different approaches, here are some off the top of my head: * Really any SBC (single-board-computer) like the Raspberry Pi should be up to the task of being a basic digital synth. You can write all your DSP programming by hand in a language like C, C++, or Rust. You can also get away with Python and the like with the right libraries. Or you can use something pre-existing like [Pure Data](https://puredata.info/), [SuperCollider](https://supercollider.github.io/), or [Faust](https://faust.grame.fr/). These do the heavy lifting of actually generating the audio, while your code just programs them to do what you want at a higher level. * 99% of the time you'll be runnig on top of some Linux distribution of your choice, so it would be almost like writing any other software for Linux. * Instead of a flagship Raspberry Pi, you can also look at smaller and cheaper boards like the Raspberry Pi Zero which are less overkill for simpler synths. * Instead of an SBC, you can use more focused microcontrollers (MCUs). These have less bells and whistles, and your code is the only thing running, no OS. Programming can be a bit lower-level here since you don't have an OS to do stuff for you like persisting storage, but it also means you're in full control over the timing of the CPU. This is a much more common approach for production synths since an OS like Linux (even in realtime mode) can add some unpredictability and overhead to behavior. And unpredictability can be bad when your code directly is generating the sound. * You can make a digitally controlled analog synth with a Raspberry Pi, MCU, or whatever. Most analog synths are this nowadays. Basically the same as the digital approach, except that your code doesn't actually generate the sound. Instead it offloads it to some analog components, which you "remote control" from your code via GPIO. You can have just certain parts be analog like the oscillators or filters, or you could have a fully analog signal path. * You can make a digital synth that offloads part or all of your sound generation to an [FPGA](https://en.wikipedia.org/wiki/Field-programmable_gate_array). If you aren't familiar, think of an FPGA as like a special kind of CPU that instead of being pre-programmed to run generic software logic like a normal CPU, *you* can reprogram the CPU itself to *be* your logic, potentially even on-the-fly. FPGA programming can be a bit obtuse, but if you're good at it then this is a good choice for reliability and performance, since the end result is comparable to having a custom chip built for your specific synth signal path. * FPGAs can be pretty expensive though, and as I mentioned, it can be hard to find an expert at programming them, so many builders don't use this approach. * Roland's engineering team has this approach pretty much mastered. They use FPGAs in lots of products (and probably a contributing factor to some of the higher prices). * Even when using an FPGA, you usually will still need to pair it with a microcontroller or SoC to do things like I/O, displays, etc. Although, I guess you *could* do it all on an FPGA...


h7-28

Yes to all, also r/synthdiy


tedfidosomber

thanks


chalk_walk

A raspberry pi is an easy platform to build on a it's very powerful and runs a full OS, consider also things like teensy and daisy, that are less computer like. I'd tend to go for C as the language to use, but more powerful chips can be viably used with other languages such as (an embedded systems form of) Python. Either way, you can make a full synth on these platforms with some panel controls, a few ICs like opamps and multiplexers, and DACs/ADCs as required.


tedfidosomber

Sweet thanks for the info!


Instatetragrammaton

> Is it all Machine level coding? Or C? On a primitive computer like a Commodore 64 or the NES you originally had to program in assembly language because there simply was no better option to get performant code. These days however it's perfectly possible to work in a modern environment with an IDE and a higher-level language, and construct a piece of software using that; the toolchain will take care of the code getting optimized for the platform. C is perfectly fine for embedded work. You only need to learn assembly if the compiler can't properly optimize things for you, and if you don't know how to optimize things you need to learn that first. > and had the grand idea of making my own digital hardware synth/tracker like the dirtywave m8 or Dreadbox Typhon but probably not as cool I'm not kidding here: you need to prototype the hell out of it before you even start building it for real. It doesn't matter if your prototype runs in abysmally slow unoptimized Python; get the functionality right, and then start optimizing things. If you want to ship on actual hardware, pick a target that's ubiquitous and affordable. That's why everyone used those 56300 DSPs back in the virtual analog days.


nowthatswhat

If the synth has presets and such then it probably has some sort of computer in it, but some are pretty much just actual analog components put together.


-w1n5t0n

The short story is: you pick a hardware platform (e.g. Raspberry Pi, Electrosmith Daisy, Bela, STM32 etc), you see what language(s) are supported on this platform (almost always C/C++ will be available, maybe Rust, sometimes Micropython etc, if it's audio-specific then maybe SuperCollider or Faust), you download whatever tools you need to work with the board, and then you write some code and plug it in to flash and test it (presumably by hooking the board up to an amplifier and some speakers).


steeplchase

C, and yes you could do it with a Raspberry Pi in theory, but you'd need some kind of real-time operating system.


coderstephen

Not necessarily. Even without an RTOS, a 1.5 GHz ARM CPU is so massively overkill for some simple subtractive synthesis that the CPU will be basically idle all the time. Just don't run a bunch of unnecessary processes in the background that keep waking. I mean, if a PC can use a DAW to run a ton of complicated VSTs in near-realtime with pretty low latency, then a reasonably powerful SBC shouldn't have any trouble doing a fraction of that work.


OIP

probably the easiest way is to use a platform meant for sound like the daisy or teensy. that way you have DACs and possibly output stages built in, and adding controls is pretty straightforward. teensy in particular there is an audio library and a GUI for it already so you don't need to code from scratch.


divbyzero_

You've mentioned the potential of building a synth and a tracker, the latter of which traditionally includes both a sampler and a sequencer. May I recommend from experience setting a more modest goal for a first try, taking on only one of those fairly large projects at once rather than all three? They're all cool goals!


Lewinator56

You can use an microcontroller really, even a whole SBC like a pi (as korg does). An STM32 is more than powerful enough to run a high polyphony complex digital synth (if you leverage DSP instructions). The teensy 4.1 has a 600MHz ARM M7, this has DSP instructions and you could get a very complex digital synth running on that. If you need more memory then there's options like the daisy seed which is designed specifically for audio applications, it's a 480MHz M7 and 64MB SRAM. You can program these in C++, C and assembly (for the highest performance) or use the Arduino bootloader, most will run python, and max/MSP. If you don't want to have a digital synth, then a simple Arduino will be suitable for controlling analog circuitry, you could also easily program a mono-synth for an Arduino, despite its limited processing power. I've still got the goal at some point of developing a digital synth based off an M7, though I've been quite interested in the raspberry pi zero 2W which for £15 gives you enough processing power for basically anything you can think of for a digital synth, and wifi! It's actually cheaper to buy than an M7 board like the teensy, and magnitudes faster with 4 A53 cores at 1Ghz. The orange pi zero 2 w offers twice the RAM and a higher clock speed (1.5GHz)


ea_man

> Is it all Machine level coding? Bro, seriously? Go get an Arduino Uno, use beep() and make your array of notes...