Awesome
eurorack-blocks
<!--lint ignore no-dead-urls--> <!--lint ignore no-dead-urls--> <!--lint ignore no-dead-urls-->
<img align="left" width="30%" src="./erb-logo.svg">The eurorack-blocks
project allows to develop your own custom Eurorack module for either
prototyping or fun in the comfort of your day-to-day IDE with the C++ or Faust language,
or using the Cycling '74 Max environment,
testing and debugging in a virtual Eurorack environment,
and when ready, to auto-magically generate all the needed files to manufacture
the eurorack module for you to use in a real Eurorack modular system.
eurorack-blocks
is using Daisy Patch Submodule
,
a DSP platform for Eurorack synthesizer modules. It features a lightning fast STM32 processor,
high fidelity stereo audio codec, and enough RAM for 10 minute long buffers
ā all with standard signal levels and conditioning for the Eurorack ecosystem.
The documentation as well as the Getting Started guide can be found on Read the Docs.
The full project's manifest can be read here.
// Bypass.h
#include "artifacts/BypassUi.h"
struct Bypass {
BypassUi ui;
void process () {
ui.audio_out = ui.audio_in;
}
};
<img align="right" width="15%" src="./samples/bypass/screenshot.png">
// Bypass.erbui
module Bypass {
width 8hp
material aluminum black
header { label "BYPASS" }
control audio_in AudioIn {
position 4hp, 40mm
label "IN"
}
control audio_out AudioOut {
position 4hp, 80mm
label "OUT"
}
}
raf:bypass$ erbb configure š Generate IDE projects
raf:bypass$ ls -l artifacts/
drwxr-xr-x 7 raf staff 224 Feb 9 18:31 actions
drwxr-xr-x 3 raf staff 96 Feb 9 18:31 daisy š Daisy firmware build files
drwxr-xr-x 3 raf staff 96 Feb 9 18:31 simulator š Simulator build files
-rw-r--r-- 1 raf staff 109 Feb 9 18:31 Bypass.code-workspace š Visual Studio Code Workspace
drwxr-xr-x 3 raf staff 96 Feb 9 18:31 project_vcvrack.xcodeproj š Simulator Xcode Project
raf:bypass$ erbb build simulator š Build the simulator for VCV Rack
...
** BUILD SUCCEEDED **
raf:bypass$ open /Applications/Rack.app š Test in VCV Rack and iterate
raf:bypass$ erbb build hardware š Build the hardware files for manufacturing
raf:bypass$ ls -l artifacts/hardware/
-rw-r--r-- 1 raf staff 387 Feb 9 18:31 Bypass.bom.csv š Bill of materials
-rw-r--r-- 1 raf staff 15696 Feb 9 18:31 Bypass.dxf š Aluminum panel milling/drilling
-rw-r--r-- 1 raf staff 32731 Feb 9 18:31 Bypass.gerber.zip š PCB Gerber files
-rw-r--r-- 1 raf staff 116908 Feb 9 18:31 Bypass.kicad_pcb
-rw-r--r-- 1 raf staff 4754 Feb 9 18:31 Bypass.pdf š Aluminum panel UV printing
drwxr-xr-x 12 raf staff 384 Feb 9 18:31 gerber
raf:bypass$ erbb build š Build the firmware
ninja: Entering directory `.../eurorack-blocks/samples/bypass/artifacts/daisy/out/Release'
[191/191] LINK Bypass
OBJCOPY Bypass
raf:bypass$ erbb install š Upload the firmware
Enter the system bootloader by holding the BOOT button down,
and then pressing, and releasing the RESET button.
Press Enter to continue...
...
raf:bypass$
Sample Projects
<p align="center"> <a href="./samples/drop/"><img height="200px" src="./samples/drop/photo.png"></a> <a href="./samples/frohmager/"><img height="200px" src="./samples/frohmager/photo.png"></a> <a href="./samples/bypass/"><img height="200px" src="./samples/bypass/screenshot.png"></a> <a href="./samples/faust/"><img height="200px" src="./samples/faust/screenshot.png"></a> <a href="./samples/reverb/"><img height="200px" src="./samples/reverb/screenshot.png"></a> <a href="./samples/kick/"><img height="200px" src="./samples/kick/screenshot.png"></a> <a href="./samples/custom/"><img height="200px" src="./samples/custom/screenshot.png"></a> </p>Before reading sample code, make sure to grasp the concepts in the documentation. Sample projects are a good place to continue learning:
bypass
is the example used above,drop
shows the usage of almost every blocks,reverb
illustrates how to utilize all the platform memory,kick
illustrates how to use factory samples and make big programs,faust
describes how to use the Faust functional programming language,custom
illustrates how to use custom silkscreens, boards and manufacturers,frohmager
is the recreation in hardware form factor of the legendary Ohm Force multi-band resonant filter (closed-source).
Cycling '74 Max Patches
<img align="right" height="200px" src="./max/reverb/screenshot.png">
First make sure to read the Max integration documentation. Sample projects are a good place to continue learning:
Setting up
Setting up the development environment is described in the documentation. Integrations might have also their own Set up documentation, so make sure to read this as well.
Structure
eurorack-blocks/
blocks/
boards/
build-system/
include/
max/
src/
submodules/
blocks
contains all the atomic blocks hardware for design validation and software tests,boards
contains all the boards hardware to design with,build-system
contains the build system used to build and deploy the tests and samples,include
contains the software implementation of the blocks,max
contains the Cycling '74 Max integration,src
contains the software implementation of the blocks,submodules
contains the software dependencies as submodules.
License
All files in this repository, excluding submodules/
, are provided with the CC BY-SA 4.0 license
for the hardware part, and MIT license for the software part, except:
- The Cycling '74 Max Gen DSP Source Code,
- The D-DIN Font, under SIL Open Font License,
- The Indie Flower Font, under SIL Open Font License,
- The Rogan... files, as derivative work of some VCV Rack files under the VCV Rack GPLv3 License,
- The Arpeggio project, under the MIT License,
- The Custom panel artwork, under the Creative Commons CC0 License.
- The Ohm Force Frohmager, under its proprietary license.
Some files that get installed in build-system/toolchain
during erbb setup
are not part of this repository, but redistributed during the installation phase,
with the following licenses:
- dfu-util under the GPL version 2,
- Cairo under the GNU Lesser General Public License (LGPL) version 2.1 or the Mozilla Public License (MPL) version 1.1,
- libcapstone under the 3-Clause BSD License,
- Fontconfig under the MIT License,
- Freetype under the Freetype license or GNU General Public License (GPL), version 2,
- libftdi, which library is licensed under LGPL 2.1 (not any later), and EEPROM programmer is licensed under GPL 2 (not any later),
- libhidapi, under the GNU General Public License, version 3.0, BSD-Style License or more liberal original HIDAPI license,
- libpixman under the MIT license,
- libpng under the PNG Reference Library License version 2,
- libusb under the GNU Lesser General Public License v2.1,
- Xorg libraries under the MIT license,
- openocd under the GPL-2.0-or-later
- GNU Arm Embedded Toolchain under various licenses, navigate to
build-system/toolchain/gcc-arm-none-eabi-10.3-2021.10/share/doc/gcc-arm-none-eabi/license.txt
for a complete list, - KiCad under its license.
Redistribution of your firmware for commecial purposes only have a subset of those licences:
- Modules which firmware was code generated by Gen from a patcher is dual licensed under the Cycling '74 License for Max-Generated Code for Export or GPLv3.
- Eurorack-blocks framework is under the MIT license,
- libDaisy is under the MIT license,
- GNU Arm Embedded Toolchain libraries under various licenses, navigate to
build-system/toolchain/gcc-arm-none-eabi-10.3-2021.10/share/doc/gcc-arm-none-eabi/license.txt
for a complete list.
Redistribution of your panel, if using the font in this repository:
- The D-DIN Font, under SIL Open Font License,
To fullfil attribution, users will generally put the ERB logo and the URL to this project, on their PCB like in this example (courtesy of Oms in serial)