It started from the basic Omnichord idea: one hand selects chords, the other hand plays or strums over them. I did not try to make an exact software copy of a particular Suzuki Omnichord. The useful part of the concept is the separation between chord selection and the strum surface, and from there the instrument grew into something with its own synths, bass, rhythm section, presets and tuning systems.
The design is deliberately split in two:
Qt Quick / Python
touch UI
chord and preset state
synth/rhythm configuration
tuning calculations
|
| OSC, normally localhost:4560
v
Sonic Pi
synths
samples
timing
sustained/manual chord voices
rhythm + chord + bass scheduling
Keeping the UI and audio engine separate turned out to be useful. Sonic Pi remains Sonic Pi; the Qt application does not embed it or import its Ruby code.
Main features
The instrument currently has:
- four independent chord rows;
- 12 root buttons in the Omnichord-like order
Db Ab Eb Bb F C G D A E B F#; - 36 chord types, selected independently per row;
- octave selection
O1throughO6per chord row; - chord inversions per row;
- immediate multi-touch chord playing;
- automatic suppression of rhythm chords while a manual chord is held, so the accompaniment does not fight the player;
- a seven-octave strum range,
C1throughB7; - tap or drag playing on the strum surface;
- separate chord, strum and bass synth engines;
- 27 Sonic Pi synths with editable parameters;
- independent chord, strum, bass and percussion volume;
- a copy button which copies the complete strum synth setup and volume to the chord synth;
- 54 editable rhythms;
- tempo from 40 to 200 BPM;
- separate percussion, chord and bass activity controls;
- independently switchable rhythm and bass playback;
- rhythm-specific bass patterns;
- 18 presets;
- full-screen operation with automatic scale-to-fit;
- a panic button;
- configurable concert-A reference;
- three tuning modes:
EQ,JVandHARM; - configurable title text in
title.json; - touch and OSC debug logging;
- a standalone multi-touch test.
The UI is intended for touch. It uses direct multi-touch areas for the musical controls rather than treating the touchscreen as a mouse.
Jeroen V
Craig Hissett
AndreasVS
Wow !