• Stars
    star
    302
  • Rank 138,030 (Top 3 %)
  • Language
    Python
  • License
    Other
  • Created almost 4 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Software to Hardware Prototyping for Eurorack using C++, Max/Gen~ or Faust

eurorack-blocks

License: CC BY-SA 4.0 GitHub Actions status | ohmtech-rdi/eurorack-blocks GitHub Actions status | ohmtech-rdi/eurorack-blocks GitHub Actions status | ohmtech-rdi/eurorack-blocks Documentation Status

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;
   }
};

// 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

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

First make sure to read the Max integration documentation. Sample projects are a good place to continue learning:

  • reverb uses Gigaverb.
  • drop shows the usage of almost every blocks.

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:

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:

Redistribution of your firmware for commecial purposes only have a subset of those licences:

Redistribution of your panel, if using the font in this repository:

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)