SLOrk/Instruments/Permutations
by J3 (Jacob Shenker, Jay Bhat, and Jason Riggs)
Contents
Overview
Stuff
How to Play
Keyboard Controls
The keyboard primarily controls the shape of the sound.
"[" and "]" change the timbre of the sound. "[" scrolls down through the list of timbres, while "]" scrolls up. As you scroll upward, the sound becomes more harmonically rich.
"<-" and "->" (arrow keys) change the register (in octaves).
"-^" and "-v" (arrow keys) increase and decrease tempo.
"1, 2, ... 9, 0" (digits) set the amplitude envelope of the notes. The digits are arranged in a logical progression such that the sound become less percussive and more fluid/pad-like as the digits move to the right.
Trackpad Controls (hold "." to activate!)
IMPORTANT: For the following trackpad commands to be active, you must be holding down the "." key.
X-axis: Traversing the x-axis sweeps a low-pass filter with a moderate resonance.
Y-axis: Traversing the y-axis internally detunes the pitch slightly around its note.
GUI Controls
The GUI is controlled by both clicking and keyboard commands.
Click on a square: Swaps the value in that square the value in the square immediately to its right.
" " (spacebar) or clicking "next note" plays the next note in the sequence.
"`" (tildé) or clicking "play" sets the GUI to loop through the sequence.
Mouse controls:
Known Bugs (arranged by priority)
Priority 1 (absolutely needs to be fixed asap):
Polyphony issue. If you set the envelope to a longer decay (3 or above) and then play the
Priority 2 (Would make the instrument run more smoothly/efficiently):
Past a certain polyphony, Chuck can't keep up. We can make the instrument able to handle more of a payload by eliminating MAUI entirely and using command-line Chuck to run it. This means that we need to use a GUI (probably an altered version of the Gamelan-Taiko-Fusion piece's GUI) via OSC messages from the command-line version.
Priority 3 (Minor issues):
The current envelope setting for the digit "5" doesn't make sense in the progression of envelopes.
Whiteboard
Priority 1 (Should totally be in there asap):
i) Currently, all oscillators are sent out all channels (in function "playSound". We should make it so that each time an oscillator is created, it gets randomly sent to one of the six channels. This is crucial to spatializing the sound.
ii) There should be a toggle that kills the sound. If pressed again, it resumes at the previous volume.
Priority 2 (Would be nice):
Priority 3 (Might considering experimenting with):
Files
Here is the chuck file:
Related Projects
This permutations project was created out of a merging of three prior projects.
Jason's Supersaw project is located here: Supersaw
Jacob's Permutations code is located here: permutations_original.ck
Jay's Arpeggiator code is located here: arpeggiator.ck