c99506d752 | ||
---|---|---|
akwf | ||
README.md | ||
amateur.csd | ||
analog_nomad.csd | ||
autostart.sh | ||
ctcsoundSession.py | ||
guinea-synth.jpg | ||
guinea-synth.py | ||
i2c_lib.py | ||
lcddriver.py | ||
traveller.csd |
README.md
guinea-synth
an synthesizer made out of surplus Raspberry Pi
See demo video.
hardware list
- Raspberry Pi
- 16x2 LCD I2C display
- rotary encoder with switch
- USB MIDI controller
- some wires and LEGO to keep it together
you need to setup that display first - see https://github.com/the-raspberry-pi-guy/lcd
wiring diagram
Display | Raspberry Pi |
---|---|
GND | pin 6 (GND) |
VCC | pin 4 (5V) |
SDA | pin 3 (GPIO 2) |
SCL | pin 5 (GPIO 3) |
Rotary encoder | Raspberry Pi |
---|---|
CLK | pin 19 (GPIO 9) |
DT | pin 21 (GPIO 10) |
SW | pin 22 (GPIO 25) |
+ | pin 17 (5V) |
GND | pin 20 |
DT and CLK pins can be exchanged, it just switches knob direction.
software setup
install these things from apt:
- python2.7
- CSound
- python-csound
add this to your crontab -e
:
@reboot /home/patch/guinea-synth/autostart.sh &
You have three synthesizers in one box:
amateur.csd
- sample-based morphing synthanalog_nomad.csd
- flexible polsynth (Juno-like)traveller.csd
- monosynth for weird sounds
API
TODO - now only method signatures are documented.
- cls()
- echo(text, linenum=0)
- menu(obj)
- act_menu(), menu.add(item)
- act_select(label, params, callback)
- act_confirm(prev, question, callback)
- csd_param(prev, csd, param_name, label, preset=1, min=0, max=1, per_round=20.0)
- csd_select(prev, csd, param_name, label, preset=0, params=[])
- csd_checkbox(prev, csd, param_name, label, preset=0)
known bugs
- sometimes some notes are stuck when playing chords, you need to reset synth
ideas & todo
- sequencer
- loading & saving presets
- refactor python code
credits & thanks
- based on many opensource tools
- ctCsound by (C) 2016 Francois Pinot
- LCD driver by Ryanteck LTD
- uses Adventure Kid Single Cycle Waveforms
- used code from https://blog.amnuts.com/2017/01/11/rotary-volume-control-for-the-raspberry-pi/
- many thanks to Rory Walsh for introducing me to CSound