Code Monkey home page Code Monkey logo

soup_machine's Introduction


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

soup_machine's People

Contributors

nickseagull avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

soup_machine's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.