Ben's Final Project: New Look => Same Great Notes!
Exploring 2D musical space, armed with sixteen square waves and a saw.
Is that a Honeycomb or a Musical Instrument?
The short answer is, both. But the bees are dying, leaving behind only their tiny apian instruments, expertly hewn from multicolored beeswax and (lucky for us) MIDI-enabled.
The instrument's design is adapted from the Axis MIDI controller, which has a unique key layout based on a musical geometry that the designers call the “harmonic table.” The keys are arranged as a hexagonal lattice with vertical rows. Along the 30 degree axis the notes ascend by major third, along the 150 degree axis the notes ascend by minor third, and along the 90 degree (vertical) axis the notes ascend by a perfect fifth. This two-dimensional layout can make playing scales a little cumbersome, but it offers an interesting and intuitive way to visualize chord structures and harmonic relationships. Tertial chords are particularly easy to see and play on this layout. For instance, any three keys forming a rightward-pointing triangle form a major triad, while the overlapping leftward-pointing triangle below forms the relative minor triad.
I added flexibility and interest to the instrument by allowing the user to change the musical geometry on the fly. Stepwise intervals along the 30 degree and 150 degree axes can be defined between 1 and 11 semitones, ascending or descending. The vertical axis is always the sum of the two defined intervals (this is required to tessellate the pattern of intervals across the lattice). The range of the instrument is also adjustable on the fly, and can slide up or down by semitones.
To aid the user in performance, the note name and octave appears on each key. The color of the key border is drawn on a red-to-blue scale according to the octave, and this color scheme will adapt to any range of notes. As on a piano, the "black keys" are shaded darker than the "white keys."
There are three play modes. "Press" mode allows the user to play notes by pressing keys in the parallelogram-shaped region on the computer keyboard that is bounded by Z, V, 7, and 4. The position of the mouse on the virtual keyboard controls the active region of notes controlled by these keys. "Toggle" mode is similar, but keys are pressed to arm or disarm notes, and armed notes are played when the mouse is pressed. "Seq" mode allows the user to define a sequence of notes that will be looped upon launch. Press "Set Seq" and then select the notes in order. Press "Play Seq" to begin playback. Press "Reset" to stop playback and pick a new sequence. Try changing the interval patterns while a sequence is playing!
Slider controls are included to set the speed of the sequencer instrument, as well as the glide amount and lowpass filter cutoff of both the sequencer and the chordal instruments.
How to Run
You will need Processing and the latest version of ChucK, preferably the special PLOrk edition if available. To run New Look simply run the Processing sketch and the ChucK code in either order. If you encounter misaligned text in the GUI, try closing the window and running the sketch again.
Note that several parameters of the GUI are easily changed at the top of the Processing code; these include the dimensions of the key space (in number of rows and columns) and the size of the individual keys (in pixels). Everything will scale in proportion to key size (window size, layout, text size), so don't make your key size too big.
Changes for Future Versions
- Ability to select which note remains unchanged when intervals are updated (is currently upper left)
- Greater control over parameters of the sound synthesis (my emphasis thus far has been on the GUI and note control)
- Perhaps a fun rolling ball mode to trigger keys (controlled by motion sensors or just arrow keys)
- More intelligent gliding (i.e. glide only when pressed notes are moved, not when there is separation between triggered notes)
- In Toggle mode:
- Ability to store and recall chord patterns, selectable on the fly with a single keystroke
- In Sequence mode:
- Ability to change sequences on the fly
- Ability to assign relative durations to individual notes in a sequence
- Ability to store and recall sequences
- Multiple voices with different sequences