Your entire music-making workflow, in one box.
Clone or download
Latest commit aaed9ed Oct 22, 2018

README.md

OTTO

Build Status

Making electronic music is awesome! But for most of us, it requires a lot of setup, a lot of moving a mouse around on a laptop that's probably not quite equipped to handle realtime audio processing. Don't you wish you had one single device, which was built to do it all for you, easily and on the fly?

Introducing the OTTO!

The OTTO is a complete hardware and software solution, with synths, a sampler, effects, sequencers, and studio modules. The interface is modal, easy to use, simple, but most of all, it encourages experimentation. The graphics are quirky, and the workflow is minimal.

That sounds cool and all, but haven't I heard about this before?
You

Yes, the OTTO is heavily inspired by the OP-1, but it is not an OP-1 clone. If you want an OP-1 you can get it here.

At this point it might be important to mention that the OTTO is not, and will never be, a commercially aimed product. It is open source by nature, in both hardware and software. If you want an OTTO, you're going to get your hands dirty, if not with the code, at least with the hardware.

Now that proper introductions are made, we would like to invite you to our discord server where we hang out and discuss all things OTTO.

Screenshots:

We are currently working on redesigning the UI, but this is some of the ideas we are playing with:

The hardware

The OTTO is basically going to be a Rpi3 (or other similar boards, we are looking into that), a screen, a DAC, 4 encoders and some 30+ buttons/keys. Some of us are currently building prototypes, and the formfactors and features vary greatly. Below this you see two OTTO hardware prototypes. Feature wise they are similar, but the first one is hand-wired, lasercut, and uses arduino pro micros for handling the keys/encoders. The second one is 3D printed, uses a PCB with onboard microcontroler etc.

As you can see, the OTTO can be built very differently depending on your skills, your avaliable resources and tools, and your priorities. You can also have other features than these two, for example the DSP all supports velocity sensitive keys.

You can find more info about the first prototype design on the "Otto Proto One" on this dedicated repo, and @cester-ino's over at his repo

The software

The software is written in (very) modern C++, and the goal is to be as modular and flexible as possible.

Technology
Core C++ 17 (you will need a very new compiler.)
Graphics C++ wrapper on top of NanoVG, with swappable backends, currently GLFW and EGL are available.
Audio/MIDI Designed to be swappable, though currently the only one available is jack.
DSP C++ and Faust (compiled down to C++)

It is possible to run the software on the desktop, with keybinds emulating the physical buttons and encoders.

For build instructions, check out the wiki.

Backbone

While OTTOs may differ on a lot, some things are fairly set in stone :

  • A Raspberry Pi (or similar) at the core, running a minimal Linux distro.
  • A >= 320x240 RGB screen, preferably AMOLED.
  • ~30 hardware buttons, so nearly every feature has its own button.
  • 4 colour coded rotary encoders (full credits to the OP-1 for that idea), as the main controls. Each screen has a maximum of 4 variables which will be coloured corresponding to their encoder.

Roadmap

Currently, the OTTO consists mainly of a lot of backend, and some proof-of-concept interfaces. During the following months, we will work on punching out the core structure and interactions, along with adding synths, sequencers and effects.

Other ideas for the future include:

  • A mobile app to run the graphics and serve as the screen, since good screens are hard to come by, and you probably already have a great one in your pocket.
  • Support for optional hardware, like an FM radio, Bluetooth speakers, a joystick

It should also be noted that the OTTO of course feeds on midi, and you should be able to hook up all sorts of controllers, with sync and control signals for the OTTO variables.

Getting Involved

We are a small, but steadily growing, group of people working in all sorts of areas, and we are always looking for contributors in whatever form, or just people who are interested in general. If you are not a developer, we could still really use some help with testing, documenting, hardware, samples and presets for engines, and more. And if I didn't mention it yet, the best place for you to get involved is our discord server. Seriously, it's where all the magic happens!

If you're up for it, we'd love some help, for a lot of different things, like:

  • Software testing
  • Writing documentation
  • Hardware design / testing
  • UI design
  • Creating default samples & settings and of course, the coding itself, with areas like
  • Synth/Effect design
  • General backend design
  • Hardware bridging
  • Distro setup (a custom linux distro for the Pi would be optimal)

The DSP can be written seperately in faust, a functional language designed for audio processing that compiles to C++, so if you are up for writing some synths/effects, but not quite ready to take on the beast that is C++ yet, there is still hope.

If you feel like joining the adventure, please check out the guidelines.

Credits