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!
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.
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.
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).
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
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
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.
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
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