Skip to content
This repository has been archived by the owner on Mar 7, 2024. It is now read-only.

NickSeagull/soup_machine

Repository files navigation


Soup Machine is a work-in-progress project to create a hardware Digital Audio Workstation, similar to the Teenage Engineering OP-1.

As the hardware used, a Maschine (the first version a.k.a. MK1), is hooked into a Raspberry Pi v3, which acts as the computer for the software DAW.

demo

As you can see, its in very early state 😅

Development Setup

  1. Install Raspbian Lite on the Raspberry Pi

  2. Install the required libraries and software

    sudo apt-get install libusb-1.0-0-dev libhidapi-dev librtmidi-dev
    sudo apt -y install build-essential openssl curl
  3. Install the Cabl library from source

    # Get source
    git clone https://github.com/shaduzlabs/cabl.git
    cd cabl
    git checkout -b develop && git pull origin develop
    git submodule update --init --recursive
    mkdir build && cd build
    # Build and install
    cmake ..
    make
    sudo make install
  4. Install Nim (make sure you download the latest version)

    # Get Nim sources
    cd ~
    mkdir tmp
    cd tmp
    curl https://nim-lang.org/download/nim-VERSION.tar.xz -O
    tar -xJvf nim-VERSION.tar.xz
    cd nim-VERSION
    
    # Build Nim
    ./build.sh
    
    # Build Nim tooling
    ./bin/nim c koch
    ./koch tools
    ./kock nimble
    
    # Install Nim
    sh ./install.sh $HOME/.nimble
    cp ./bin/* $HOME/.nimble/nim/bin/
    
    # Add to path
    export PATH="${PATH}":$HOME/.nimble/nim/bin:$HOME/.nimble/bin
    
    # Upgrade nimble
    nimble refresh -y
    nimble install -y nimble
    mv $HOME/.nimble/nim/bin/nimble $HOME/.nimble/nim/bin/nimble-orig
  5. If you want to do memory checks with Valgrind, make sure you install it from sources, as Raspbian comes with a buggy one:

    sudo apt install autotools-dev automake
    git clone git://sourceware.org/git/valgrind.git
    cd valgrind
    ./autogen.sh
    ./configure
    make
    sudo make install

Common Tasks

  • To compile and build, run nimble start
  • To perform a memory check, run nimble memcheck
    • Logs will be saved to ./valgrind/log.txt

Road map

  • Use Cabl from Nim
  • Elm-ish API
    • Controls create events
    • Declarative view
    • Cmd-style actions like sound and lights
  • Musical keyboard with pads
  • Drum sampler

As an inspiration, use the OP-1 user manual and the OP-1 explainer playlist on YouTube

Attributions

Icons made by Freepik from www.flaticon.com