guinea-synth/README.md

2.2 KiB

guinea-synth

an synthesizer made out of surplus Raspberry Pi

real machine

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)

see https://pinout.xyz/#

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 synth
  • analog_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