cvos - control-voltage controlled software oscillator

modular synths menu

analogue meets digital

This Eurorack-contraption (Doepfer A100 compatible) converts a "control voltage" to sound, it is thus an oscillator .

There are other solutions for this, but this implementation does it in software giving you infinite possibilities!

features

configurable via an intuitive ncurses user interface

compatible with all Raspberry Pies and Arduinos (it may run on other Linux systems as well as long as it has I2C)

setup

The setup consists of a Raspberry Pi connected to an Arduino via I2C. The Arduino has an opamp to convert the control voltage to a voltage that the Arduino can handle.

The Arduino functions as a cheap I2C ADC for the Raspberry Pi.

schematics

The eagle cad schematic can be found in this file: cvos-0.6.tar.xz.



As you can see it is not using the regular hardware I2C pins but some others instead. See below for the reason.

Raspberry Pi configuration

This setup has been tested with a raspberry pi 2b, a raspberry pi zero w and a brand new raspberry pi 3b.

The Raspberry Pi has issues with hardware I2C. At this website you can read how to configure the required software I2C bus (in short: add "dtoverlay=i2c-gpio,bus=3" (without quotes) to /boot/config.txt and reboot).

software

i2cadc.ino is the source-file for the Arduino. Any AVR based Arduino should do, I used an Arduino Nano.

The program can be retrieved from GitHub.

Run it with -h to see a list of command line arguments, e.g. with an audio device-name: sudo cvos -d hw:0,1

faq

Q: no sound at all

A1: if you connected something to the HDMI port, then audio will go through that channel (this can be changed with the raspi-config utility)

A2: did you select the correct audio device? run cvos -L to see a list of audio-devices. then use -d to select one

A3: period-size too small, see question about "sound stutters"

Q: sound stutters

A: increase the "period size" using -p .... default is 256. on-board audio requires a value of at least 1024

Q: audio is distorted via rpi headphone connection (raspberry pi 1)

A: use an amplifier between the rpi and the headphone

Q: I get an access denied error

A: the program requires access to /dev/i2c-3, you can get that by running it as root (via sudo)

Q: I get tons of I2C errors and no audio, also "i2cdetect -a -y 3" does not detect anything

A: upgrade your raspberry pi to the latest kernel



Q: if I add echo, it sounds distorted

A: lower the amplitude

Q: there is a tiny latency when detecting new notes

A: use '-t' to set a high note-sample-rate. default is 100, max is +/- 1500

samples

sweeps

This is a sample of Dennis from NURDSpace. He said "aaa" and that was then played by cvos while being modulated with a 1Hz sinus. It might be a bit noisy but that is caused by a not-so-high quality microphone. CVOS has filters that can be enabled at run-time to solve this.

1hz-sweep.flac is a sweep of the whole frequency range, played with a sinus curve as the instrument.

1hz-sweep-triangle.flac is a sweep of the whole frequency range, played with a triangle curve as the instrument.

pressing random keys on the midi keyboard

This is recorded via a midi-keyboard connected to a midi-to-cv converter and that is then connected to a raspberry pi running cvos.

random.mp3 random keys pressed with a sinus curve as the instrument

random_niz.mp3 same as random.mp3 but here with Dennis as the instrument

tunes

tune.mp3 by wotwot

abba-chiquita-cvos-the_niz.mp3 Abba's Chiquita with the Dennis instrument

abba-chiquita-cvos-sine.mp3 Abba's Chiquita with the sine curve instrument

pics

user interface

board











