GithubHelp home page GithubHelp logo

v0idkr4ft / squares-and-circles Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eh2k/squares-and-circles

0.0 0.0 0.0 1.05 MB

squares-and-circles is an alternative firmware for the Eurorack module O_C, targeting Teensy 4.

C++ 54.32% C 45.21% Python 0.05% NASL 0.39% Shell 0.02% Faust 0.02%

squares-and-circles's Introduction

WORK-IN-PROGRESS: At the moment where are not all engines in this repo. Feel free to leave me a message / feedback or any hints in the "BETA TEST - FEEDBACK" issue. More engines will follow.

□︎●︎ PlatformIO CI

squares-and-circles is an alternative firmware for the Eurorack module O_C, targeting Teensy 4.0.

■ Demos

Motivation

When I am asked why I do such projects - my general reply is: I don't know - because I like to get deeper understanding of technical things. Maybe the reason was the chip shortage that makes Eurorack DIY projects tricky at the moment and I used that, to get more involved with coding in the eurorack land. At this point, a big thanks to the people behind ornament & crime (o_C), Teensy and specially Mutable Instruments for the inspiring playground and the basis regarding hardware and software for this project.

Challenge

Given are the following ingredients: Two buttons, two encoders and a 128x64 display. Sixteen I/O ports (4x trigs, 4x cv and 4x dac) and a Cortex-M7.

Damn many possibilities to complicate it. Mono, stereo and then again CV. Seen way too many projects that got lost in menu diving. A tricky task to design a simple UI logic and to get as much out of the hardware as possible (work in progress).

Concept

Similar to Monomachine and Machinedrum here we have basically 4 configurable tracks. Each track can be assigned with a synthesizer machine, controlled by a trigger and CV input. As there are mono and stereo machines, the generated audio signal is routed to one or two neighbour DAC outputs by default. E.g you can chain the mono audio signal from an oscillator machine to the neighbour fx-machine with stereo-outputs.

  • [Short Press Left/Right Button] scrolls through the 4 machine-tracks.
  • [Long Press Left-Button] enters the machine-selection-page.
  • [Long Press Right-Button] enters the machine-config-page.
  • [Long Press Left and Right-Button] saves the patch - will be restored at startup.

Machines (Wiki)

  • GND
    • ---
  • CV
    • V/OCT, LFO, Envelope
  • Drums
    • Analog-BD, Analog SD, Analog HH, Analog HH2
    • 909ish-BD, 909ish-SD, TR909-CH-OH, TR909-OH, TR909-Ride
    • 808ish-BD, 808ish-SD, 808ish-CH-OH, 808ish-HiHat
    • TR707, TR707-CH-OH
    • FM-Drum
    • Djembe
    • Clap
  • M-OSC
    • Waveforms
    • Virt.Analog, Waveshaping, FM, Grain, Additive, Wavetable, Chord
    • Resonator
  • Stereo-FX
    • Reverb, Rev-Dattorro, Delay
  • SPEECH
    • LPC, SAM

Machine-Config (per Track)

  • Trig-Input: default Trig/Gate, Midi-In (channel 1 only)
  • CV-Input: default V/OCT, any other control parameter
  • Transpose: -48 to 24 (default -24)
  • Midi-Channel: 1-16, one channel on mulitple machines, for polyphony
    • Note-Hold: True, False (Trigger)
  • Output-Boost: Add extra-gain to the output - can result in distortion

Build & Flash firmware

Supported Hardware

Ornament-and-Crime

  • Teensy 4.x + DAC8565 + 128x64 OLED display
  • Build-guide: http://ornament-and-cri.me/ (https://github.com/jakplugg/uO_c)
    • Replace the Teensy3 with Teensy4

    HINT: if the POGO Pin is soldered - cover the bottom of the teensy with insulating tape - all other pins are compatible with T4 to T3 (see pjrc). Be careful with connecting USB and power at the same time - if you have VIN/VUSB connected.

Hardware setup procedure (automatically on first startup)

Power on the module with the [LEFT] button pressed for entering the setup procedure.

  • Encoder setup
    • Check the encoder rotation direction, press encoder for reversed setup.
  • TR/CV Test:
    • Test/Verify your TRIG or CV inputs.
  • DAC Test:
    • All outputs shoud have 0V.

⦾ Midi-Expander

Midi-In is supported on the trigger-port TR1. Although the connection does not comply with the MIDI standard - for me this solution is more practical than the alternative via USB.

Midi-Control

  • Engines can be loaded/selected by midi program change
  • Midi channel configurable per track * ([Long Press Right-Button] enters the config-page)
  • Note-On behaviour configurable (HOLD, TRIGGER)
  • Paramter CC-Mappings
    | HEX | DEC | parameter-index | CH |
    |-----|-----|-----------------|----|
    |  20 |  32 |        0        |  * |
    |  21 |  33 |        1        |  * |
    |  22 |  34 |        2        |  * |
    |  23 |  35 |        3        |  * |
    |  24 |  36 |        4        |  * |
    |  25 |  37 |        5        |  * |
    |  26 |  38 |        6        |  * |
    |  27 |  39 |        7        |  * |
    

⧉ Conclusions and the future

The project was originally a kind of research that I did over half a year. The current O_C hardware could certainly be optimised. As you know, the DAC and the display share the SPI port - this is not ideal for simultaneous operation. Furthermore, the Teensy 4.0 does not have "high-end" ADCs - my focus here was to achieve operation at audio rate - the issue of noise has not been the focus so far. ADC/DAC calibration is still on my to-do list.

At the moment I want to make the project available to the community as open-source, so that everyone has the possibility to adapt and experiment with it. In principle, this project is a suite of apps so-called machines/engines interfacing with a system library ("libmachine"). You are welcome for any kind of feedback or colleboration. Lets extend the engine collection - where is about 60% free space at the moment.

The application code respectively the suite of machines/engines is released under the MIT licence.

The previously mentioned "libmachine", a hardware abstraction layer, will remain "closed software" until I follow some not yet discarded ideas. This is to prevent the firmware from being ported to similar digital Eurorack modules and some theoretical licensing questions. So if you consider commercially distributing hardware with this firmware, please contact me (eh2k◯gmx.de).

squares-and-circles's People

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.