These programs are intended to be simple standalone musical
instruments-- noise-makers in the spirit of rattles, wooden blocks,
Montessori bells, slide whistle, etc.... Most of them rely heavily on
drawing to drive the user interface. They're in varying stages of
completion, but all should fire up without too many bugs. I'll post
the source code after it's a little less of a mess! (Contact me if you really want
it.)
The FreeSketch and GridSketch programs are meant to be used with a simplified quilted
keyboard-- essentially a patchwork cloth cover for a regular keyboard
that uses keyboard bindings controlled at the application level. A
few squares of velcro keep the quilt in place.
Currently, the source is hardcoded so that the
quilt matches the laptop keyboard on which they're being developed.
Making this configurable for other keyboards is a little feature for
the future.
Each "noisemaker" is an executable jar file which should launch with a double click
on windows or from the command line (assuming you're in the directory with
the jar file and have the path set to java correctly). For instance:
java -jar HaveYouBeenTested.jar
Using these instruments in a realtime performance almost works.
Sooner or later jitter, lags and context switches spoil the show. It
does help, however, to shutdown unnecessary processes (programs). On
my gnome running laptop this includes metacity and the like. Then I
run the programs such as GridSketch with "nice -20 java
-jar GridSketch.jar".
Here's the run down:
FreeSketch.jar:
This is an "axis free" drawing program. It follows changes in the x
or y directions to initiate a beat, so try squiggles, spirals,
geometric shapes, etc.... Overlapping shapes will be played in the same
measure. Lines can be dragged and deleted. One may continue to edit
the drawing while the composition plays in loop mode. Recent edits will
be incorporated on the next loop. This makes it almost usable in a
performance context... well, except for some annoying performance
issues. I'm sorry the colors are not "colorblind safe." I'll try to
come up with something better (or configurable) in the future.
ESCAPE -> exits
1, 4, 7, 9 -> change timbral ensembles
A, S -> clear the drawing (and composition)
H, J -> delete a highlighted scribble
K, L -> play in looped mode
ENTER -> play measures one time and then stop
GridSketch.jar
This uses the traditional pitch vs time axis of musical notation. The
program can be set to use a variety of scales, but I've hardcoded this
version with three octaves of C pentatonic, so pretty
much any combination of notes should sound okay. Adding more scales,
such as a major scale and its diatonic modes, is a "to do." Scribbles
may be drawn, moved and deleted. The underlying grid can be modified
by clicking the mouse to change the duration of a note's sustain.
ESCAPE -> exits
A, S -> clear the drawing (and composition)
H, J -> delete a highlighted scribble
K, L -> play in looped mode
ENTER -> play measures one time and then stop
HaveYouBeenTested.jar
This is like a memory game played with cards or tiles. In this
variation, instead of matching pictures, match rhythm/timbre
combinations. There are 108 tiles and 54 rhythmic pairs. The tunes
are generated by "randomly" descending through a decision tree... so
ultimately there's a finite number of them but that number is quite
large. They'll be removed from the board as you find matches. It's
assumed there are players taking turns with two moves each. No score
is kept; however, you can playback all the moves as a sort of song
(it's a bit jittery as the MIDI sequences switch... a bug to fix).
This game is actually pretty damn hard... I'll likely make it a little
easier (or configurable).
ESCAPE -> exits
P -> playback all the moves thus far
H -> playback last five (or as many as available) moves
Sorry, you'll have to quit and restart to clear (yeah, yeah... lots of
stuff for me to add!)
CircleSynth.jar
This is the least complete and most buggy. The switches between threads
are terrible and I need to make some big code changes to try to smooth it
out. I'll be adding envelopes, linear interpolation and per oscillator
gain controls as well as a way to use each synth object to make notes to
play. But check it out anyway.
ESCAPE -> exits
Q, W, E, R, T, Y, U, I -> add a new synth object (can be dragged around)
A -> add a synth object
S -> subtract a synth object
M -> increase frequency of any given oscillator
L -> decrease frequency of any given oscillator
Mouse click on the synth or the oscillator you want to effect. There's an
annoying bug that when a synth uses all 4 oscillators, the underlying
synth object looses loses mouse focus to the oscillators (just a lot of
code to add to work around).