There are a lot of synthesizers you can buy. But the really good ones are expensive and you’re locked in to a feature set. So I’m building my own. And you can look over my shoulder right here on this blog.
We have a home on GitHub - https://github.com/AlgoCompSynth! Code will
be showing up quite soon. Major chunks already exist in my
edgyR-containers
project.
I messed up on the bill of materials for the synth. You will need a microSD card for the operating system and data. So instead of the $58.26US USB drive, to stay within the $500US budget we can spend $74.01US. For that price you can get a SanDisk 400GB Extreme. It won’t be as fast as the off-board USB drive, but digital sound synthesis is limited by processor capacity, not disk speed. And you can always add an external USB SSD.
The synth needs a name. So I’m going to call it the AlgoCompSynth One.
So I’m building a synthesizer - the criteria, and why what’s on the market is insufficient:
Hardware budget: $500US or less. That pretty much rules out most commercially-available software synthesizers. The binaries they ship almost all require either Windows or Macintosh.
Some will run on the new Apple Silicon and some will run on Linux, but most of them are constrained to Intel / AMD 64-bit hardware. So their compute / RAM requirements aren’t going to be satisfied by a $500 unit.
That also rules out most desktop analog and digital synths. These are great for beginners, but what you can get for $500 isn’t much. And you can’t expand them.
Modular Eurorack synthesizers do meet the control paradigm and user interface criteria below. Again, you can’t get much for $500US.
A better control paradigm than MIDI: MIDI is a limiting control paradigm for the kind of music I want to make. MIDI polyphonic expression (MPE) is a vast improvement, but few hardware synths support it.
I only know of one under $500 - the Modal Electronics Skulpt. It’s an excellent beginner synth but not expandable. I need at least MPE and prefer Open Sound Control.
Flexible user interfaces: commercial synths have what they have - keyboards, buttons, knobs, tiny LCD screens, pads, ribbon controllers, etc. If you need something else you need to buy more hardware. And cables. Too many cables. I hate cables.
I’ve ruled out most commercial synthesizers. But there’s one that comes very close to meeting my interface flexibility and control paradigm constraints - the Critter and Guitari Organelle M. And it’s only slightly over budget at $595US.
I first discovered the Organelle on a YouTube channel called “Bad Snacks”: https://www.youtube.com/watch?v=jRHLjSOPVko. The Organelle M is actually a complete Linux computer with some impressive software, including Pure Data. You can put it on your local area network and use it as a server.
But I don’t need the buttons, knobs, speaker and LCD screen on it. I can put together a much more powerful hardware platform with much more flexible music software for less than the Organelle M.
NVIDIA Jetson Xavier NX Development Kit ($399US): this platform has
A Yahboom Aluminum Alloy Case ($26.99US): this provides a protective case with cooling fan and antennas for the Jetson WiFi.
A PNY Elite 480GB USB 3.0 Portable Solid State Drive ($58.26US): this is where our software will live.
The JetPack SDK that comes with the development kit already includes:
Ubuntu 18.04 LTS “Bionic Beaver”: this is the whole thing - everything in
that distribution that’s been ported to the arm64
architecture. Desktops,
compilers, applications, games - the works!
NVIDIA GPU development tools: drivers, compilers, libraries, profilers and debuggers to use the GPU. Some are installed on the base image and the rest can be installed from the repositories.
NVIDIA GPU libraries for OpenGL and Vulkan are available, as is NVIDIA
accelerated
gstreamer
.
There are also some advanced video processing and artificial intelligence packages; the main industrial target of the Jetson hardware is self-driving vehicles and robot vision applications. Nearly all of this software is accessible from both C/C++ and Python.
But wait! There’s more! Nearly all of the packages in Ubuntu Studio 18.04 are available. There are digital audio workstations, software synthesizers, effects plugins, drum machines, guitar tutors, audio recording and analysis software, MIDI sequencers, live coding environments and music notation software.
Note that these pacakges run only on the multi-core CPU; they are not GPU-optimized. And there’s some configuration you need to do for Linux audio, but it’s not the maddening catastrophe it used to be.
Between Ubuntu itself and Ubuntu Studio, the control paradigm and interface flexibility criteria are well supported at the cost of a software install. The one thing you won’t be able to do is run binary packages compiled for the Intel / AMD 64-bit architecture, like most commercial VST plugins.
All my added software will be open source on GitHub. I’ll be creating:
Setup scripts for the Linux audio and Miniforge. You’ll need to run these once after you get your hardware set up.
Installers for the
JupyterLab Python data science
environment and the NVIDIA cuSignal - RAPIDS Signal Processing
Library. cuSignal
takes quite a
while to build, so I’m planning to distribute binary packages if the licensing
permits.
Installers for other GPU-capable audio software. The main one I know of is CSound. Again, license permitting, I’ll be distributing these as binary packages.
The PyTorch deep learning package and its audio and vision libraries. If I can get it working, I’ll also have TensorFlow and Magenta.
Haskell music software: this includes Euterpea, the Haskell School of Music, and the TidalCycles live coding environment.
Text and figures are licensed under Creative Commons Attribution CC BY-SA 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Borasky (2021, March 17). AlgoCompSynth by znmeb: I can't find a synth I like, so I'm building my own. Retrieved from https://www.algocompsynth.com/posts/2021-03-13-i-cant-find-a-synth-i-like-so-im-building-my-own/
BibTeX citation
@misc{borasky2021i, author = {Borasky, M. Edward (Ed)}, title = {AlgoCompSynth by znmeb: I can't find a synth I like, so I'm building my own}, url = {https://www.algocompsynth.com/posts/2021-03-13-i-cant-find-a-synth-i-like-so-im-building-my-own/}, year = {2021} }