SLOrk/Instruments/Permutations

From CCRMA Wiki
Revision as of 05:01, 2 May 2009 by Jnriggs (Talk | contribs) (Priority 3 (Minor issues):)

Jump to: navigation, search

by J3 (Jason Riggs, Jacob Shenker, and Jay Bhat)

Permutations.png

Overview

This instrument works by displaying a GUI (shown at top of page) through which the slorker plays with algorithms for note-playback. Extensive real-time controls affect the texture and rhythm of the sound.

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 becomes 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 detunes the pitch slightly around its base frequency.

GUI Controls

The GUI is controlled through clicks (with optional keyboard shortcuts).

Click on a square: Swaps the value in that square with 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.

Sweet Spots

If you are playing around with the instrument and you come across a sound texture that works well, it belongs in this sweet spot list. A large collection of sweet spots can be a good way to craft an entire score by aiming for the spots as midway-marks and finding creative, coherent ways to transition between them. Sweet spots should be given in the following format:

(title of sweet spot):

Timbre: (# of timbre)

Register: (# of register)

Envelope: (# of digit selected)

Filter: (closed/midway/open)

Detuning: (none/low/medium/high)

Tempo: (value of tempo in console)

The Sweet Spot List

Eerie Triangle Pads:

Timbre: 1

Register: 4 or 5

Envelope: 9

Filter: open

Detuning: high

Tempo: 1.0

Score/Performance Ideas

Jot down any ideas for a performance or its score here. Possible issues to consider:

1) The role of the conductor (which gestures? use a computer to spread information? control other players' sounds directly?)

2) The format of the score (gestures alone? hold up signs? server-based instructions sent to each player?)

3) Improvisation (to what extent should it be allowed? in what way(s)?)

4) Number of players (how many total? should they be split into sections? how many sections? if split into sections, how many? should sections be fixed before the piece, or should we allow 'dynamic section allocation'? or both?)

List of Score/Performance Ideas

Conductor-controlled timbre w/ Server-based tone selection

A master server runs and controls the tonal evolution of the piece. As the piece transitions from one stage to the next, performers will see their GUIs transition from one set of permutations to another. The conductor can control parameters of the sound such as texture, density, etc., and performers are also left to improvise. The server can fade the piece away by itself when the score is over. Also, the conductor could be given high-level, real-time control over the messages that the server is sending out. The conductor could even have a midi controller and use it to send out permutations in a more spontaneous way. That could sound cool.

People should solo

Everyone not soloing is instructed to hold a certain texture, while the soloist improvises. In a large performance, this means that one computer should be up front and center, and soloists alternate by going up to the front laptop.

Known Bugs

Priority 1 (Absolutely needs to be fixed asap):

- Optimize code for efficiency. It can't handle a heavy payload, plus it needs to work on slork laptops. Slorktops.

Priority 2 (Would make the instrument run more smoothly/efficiently):

- 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 different GUI (probably an altered version of the Gamelan-Taiko-Fusion GUI) via OSC messages from the command-line version.

Priority 3 (Minor issues):

- Right now, the resonance on the low-pass filter causes slight distortion around the fundamental frequency of any given note. There should be a linear function on the resonance so that the amount of resonance decreases as the filter opens up.

- Fine-tune the low-pass filter control (in supersaw.ck, the logarithmic function... maybe make it logistic?)

Whiteboard

Priority 1 (Should be in there asap):

- A server needs to synchronize the machines to a master rhythmic meter. It would be nice if the conductor could control the master tempo in real time, thus adjusting all of the machines' tempos at once on a continuous scale. (best to leave the players' tempos on a discrete scale so they can't get out of sync)

- 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.

- There should be a toggle that kills the sound. If pressed again, it resumes at the previous volume.

Priority 2 (Would definitely be nice):

- The list of available timbres should be expanded, and those currently in place should be improved.

Priority 3 (Might consider experimenting with):

- Timbre selection does not need to be discrete. We could experiment with a slider.

- It might be worth experimenting with a Joystick for the x/y-axis control of the filter/detuning. It would be set up so that the trigger on the joystick needs to be held in order for the detuning (y-axis) to have any effect, while the filter (x-axis) would always have effect. The little circle thingy at the base makes a good way to control master volume as well. The joystick might make more sense than the touchpad, but the con is that everyone who's playing needs a joystick. Maybe we could have it use the joystick if one is plugged in and otherwise default to the trackpad.

Files

Here is the set of chuck files. Set the miniAudicle's root path to a directory containing these files, and then simply add permutations_main.ck. Only one machine should add the server, and the others should be configured accordingly:

permutations.zip

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