The following program examples use the synthImprov environment which is useful for two-way communication between a computer and a MIDI synthesizer/keyboard.
These programs are based on synthTemplate.cpp
loop1 | a monophonic drum sequencer with click track, save/load patterns.
|
loop2 | a polyphonic drum sequencer with click track, save/load 3 patterns.
loop2 is an elaboration of the loop1 program.
Files store attack velocities unlike the loop1 program.
|
shadow1 | you play a note on a synthesizer, and the computer will echo
that note with a specific transformation.
|
shadow2 | similar to shadow1 but the program is polyphonic.
Also, the duration of the shadow notes are identical to the input notes.
|
switch1 | Inverts key number and attack velocity parameters of
MIDI note messages.
|
switch2 | Similar to switch1 in that it inverts key
number and attack velocity parameters of MIDI note messages.
Adds extra interface features such as using the computer keyboard
like a synthesizer keyboard.
|
sinus | you press a key on the synthesizer keyboard, and a pitch
pattern ostinato shaped like a sinewave is generated as long as
the note is held down. Attack velocity gives
amplitude (pitch range) of sinewave pattern.
|
keykey | A demonstration of how to use more than one note to trigger
an algorithm. This program will print out characters on the
computer screen according to the synthesizer keyboard combination
of two notes being pressed.
|
yekyek | The reverse process of the keykey program.
Computer alphabetic keys are converted to the two pitches which
are used in the keykey program to generate that letter.
|
keyan | Generates a statistical estimate of musical key from the input
MIDI notes. Will output the tonic of the key that is the best
match. The loudness of the output tonic is related to the
certainty of the match -- a loud output means that the
computer is very certain of the chosen key; while a soft tonic
note indicates that it is not certain about its choice.
|
markov1 | Implementation of programmable melodic Markov chain.
Play string of notes to record in a transition table,
and the computer will later generate melodies based
on the input data.
|
nana1 | Rule-based automatic accompaniment program.
|
nana2 | Example sequential neural-net automatic accompaniment program.
|
These examples contain note generation algorithms which are stored in an EventBuffer for processing after the algorithm has been triggered.
gliss | Creates glissandos whenever a key is pressed.
Multiple glissandos can be playing at the same time.
Tempo is defined at time glissando is started.
Direction and step-sizes can change while glissando
is running. If glissando goes out of keyboard range,
it is deactivated.
|
arpeg | Creates arpeggios based on selected chord, rhytms, and durations. Rhythms can be recorded from performance. |
These examples show how to create a musical controller from sensors hooked up to a analog to digital voltage sampler. The A/D sampler used for these programs is the National Instruments AT-MIO-16E-2 which can sample up to 16 sensors at one time. For Windows 95 OS only.
position1 | Maps one sensor's sampled voltage into pitch.
|
position2 | Maps one sensor's sampled voltage into pitch. Adds
musical instrument control to the position1
program, such as sustain pedal, tambre control, volume control,
various note generation algorithms, choice of rhythmic ostinatos,
etc.
|
2dpos | Uses two sensor for input. Maps one sensor's sampled voltage into pitch and the other sensor's voltage values into attack velocity. |