David Snow's Atari Midi programs
Midi Master Drummer/MidiSquare/MusicBox/Phraser and New Wave
MIDI Master Drummer
By David Snow
Released as Freeware June,2000
MIDI Master Drummer is a graphic rhythm editor
and sequencer. Similear to Robobop,
however with many more features.
It runs in color or monochrome on all Atari ST/STE/TT/Falcon030 systems. If you have a color ST system, you must use medium resolution; for Falcon030 VGA you must be in an 80-column video mode. Assuming that you already have your computer hooked up to your MIDI rig, double-click on MMD_2_5.PRG to start the program (make sure that the MMD_2_5.PRG and MMD_2_5.RSC files are in the same folder). If the optional MMD_HELP.TXT file is also in the same directory, it will be loaded at startup, giving you access to online help during your work session. Master Drummer is divided into three parts: Pattern mode, where patterns are composed; Phrase mode, where the patterns are linked together into musical phrases; and Song mode, where phases are linked together into song parts and song parts are sequenced into a complete song. You can select the mode you need from the Edit menu.
It also has random creation of patterns making for some interesting algorithmic possabilities.You can save what you do as standard midi files for exporting to a sequncer program for use in a larger composition.
David has also made available the Source Code for those that would like to develop the program further.See below for the download
By David Snow
Released as Freeware June,2000
MIDISquare is a mouse-oriented MIDI synth controller for Atari computers. It has been tested on a 1040ST and a Falcon, so I expect it to work on all the ST's cousins, and it runs in any resolution except ST LOW.
Assuming you already have your synth hooked up to your computer, you play the synth by left-clicking the mouse and dragging it over the square grid on the screen. Each little square in the grid plays a different four-note chord: a horizontal note along with a user-selected harmony interval, and a vertical note along with a user-selected harmony interval. Pitches are derived from a user-selected diatonic (i.e. modal, not chromatic) scale that runs low to high horizontally from left to right, and low to high vertically from top to bottom. Notes are played only when the left mouse button is depressed. Everything you play can be captured and saved as a MIDI file for editing and playback using a conventional software sequencer.
In "Poly" (polyphonic) mode, all four notes are played on the same MIDI channel. In "Mono" (monophonic) mode, each note is played on a different MIDI channel so you can assign a different patch to each note in the chord.
To select a MIDI channel, click on the up and down arrows in the MIDI CHANNEL box. In Mono mode, the four MIDI channels used are numerically consecutive (that is, if you select MIDI channel 10, the notes will play back on channels 10, 11, 12 and 13).
Pitches are selected from a 7-note scale. Each "white-key" note (C, D, E, F, G, A, and B) can be selected sharp, natural, or flat. Besides conventional 7-note modes, it is possible to construct pentatonic scales by selecting enharmonic notes (example: C, D, E, Fb [which is enharmonic with E], G, A, and B# [which is enharmonic with C]). It is also possible to construct non-diatonic scales with chromatic clusters (example: C, D#, E, F, Gb, A#, B).
The intervals of the horizontal and vertical harmony notes are selected by clicking on the up and down arrows in the DIATONIC INTERVAL box. The numbers represent diatonic, not chromatic intervals: a "+1" means that the harmony note will be next higher note in the user-selected diatonic scale, a "+2" means the second higher note, and so on.
With TRANSPOSITION set at "0," the notes played will be exactly those indicated in the DIATONIC SCALE box. Higher and lower numbers cause the notes to be transposed chromatically (example: with a diatonic scale of C, D, E, F, G, A, and B, along with a transposition value of "1," the notes played will be C#, D#, E#, F#, G#, A#, and B#).
TEMPO and UNIT
The speed at which notes are played is determined by the TEMPO (beats per minute) and UNIT (subdivsion of each beat) parameters. A UNIT value of "1" means a note will play once on every beat (quarter note); a value of "2" means a note plays twice per beat (eighth note); a "3" means three notes per beat (triplet-eighth), and "4," "6," and "8" mean sixteenth, triplet-sixteenth, and thirtysecond notes, respectively. Notes are only played when the mouse is moving over the grid with the left button held.
To change the velocity (loudness) of the notes, press the right button while moving the mouse over the grid (this can be done simultaneously while pressing the left button). There are two user-selectable velocity patterns:
The velocity of the two horizontal notes goes from soft to loud moving left to right, and the velocity of the two vertical notes goes from soft to loud moving top to bottom.
The velocity of the two horizontal notes goes from loud to soft moving left to right, and the velocity of the two vertical notes goes from loud to soft moving top to bottom.
Note-velocity is changed only when the mouse is moving over the grid with the right button held.
MIDI FILE RECORDING
Clicking on the START button records all note output in a Standard MIDI file. Click on STOP to save the file.
MIDI Square is very similear to Laurie Spiegels "Music Mouse" in that it uses the computer and mouse as a controller.
New Version Of MIDI SQUARE Available
Last year, David Snow released his Atari Midi programs to the Atari community. A certain Edgar Aichinger took the BASIC code and produced a version in C that can be used as a Desk ACC as well as improved dialogs and windows. It is now on the Atari-Midi archives. Midi Square is an alternate Mouse controller that turns the atari computer into a versitle music instrument.
By David Snow
Released as Freeware June,2000
Algorithmic composition software for the Atari ST (monochrome only)
This is an enhanced version of a do-it-yourself software project that appeared in the March 1989 issue of Electronic Musician magazine. MIDI Music Box is an algorithmic composition program that can be best described as a four-track sequencer that generates its own tracks. In the original bare-bones version, user interaction was minimal: pressing "G" on the computer keyboard would cause the program to generate four monophonic tracks on MIDI channels 1, 2, 3 and 4; pressing the "P" key would play the tracks; and pressing the "T" key would allow you to change the playback tempo. The tracks were generated from rhythmic source patterns that were strung together in random order; pitches were chosen randomly from a source set. Since the source rhythms and pitches were coded into the program, you had to mess around with the BASIC listing if your wanted to alter them. I wrote this version to allow one to more easily change the rhythms and pitches, and also to add functions to modify the generated tracks. Although it's more user-friendly than the original, it's not exactly "intuitive" to operate, so here are brief instructions:
1. Hook the MIDI output of your ST to a 4-channel multitimbral synth
(or four single-channel synths) which is set to receive MIDI data on
channels 1, 2, 3 and 4. Hook the MIDI out of the synth (or a
keyboard controller) to the ST's MIDI input.
2. Run the program (duh).
3. Before you can make music, you need to program Music Box with rhythms and pitches:
a. Click on the EDIT RHYTHMS button.
b. You'll see a dialog box with 8 four-note rhythm patterns. The default patterns are all quarter notes, which is very, very boring. To change a note value in a rhythm pattern, left-click on the note until you get a value you want; you can also change any note into a rest. If you want to make a rhythm pattern that is shorter than four notes, click on a note until it changes into the "END" icon; the pattern will only play the notes before it. If you want fewer than 8 rhythm patterns, change the first note in any pattern into the "END" icon; it will be skipped when the tracks are generated.
c. You can save the set of rhythms by clicking on the SAVE button, and reload them later by clicking on the LOAD button (double-duh). When you're finished editing rhythms, click on the QUIT button.
d. Click on the ENTER PITCHES button.
e. Enter pitches using your MIDI keyboard or controller. Note-entry will automatically end if you enter 12 notes. If you want to enter fewer than 12 notes in your pitch set, quit by pressing the "Esc" key on the computer. The pitches are displayed on a piano-style grand staff as you enter them.
4. Along the left side of the screen are ten Function Buttons that create or modify the 4 tracks, which are designated A, B, C and D. To make a Function Button affect the desired track, select the A, B, C or D button before clicking the Function Button. To wit:
RHYTHM: Randomly fill the designated track with patterns from the EDIT RHYTHMS dialog.
PITCH: Assign pitches from the ENTER PITCHES dialog to the randomly created rhythm track.
COPY FROM/COPY TO: Clone one track to another.
TRANSPOSE: Raise or lower the pitch of a selected track by the value indicated in the "Transpose value" edit field; a negative number lowers pitch.
COMPRESS: Divide the rhythm/duration values in a selected track by the factor in the "Compress ratio" edit field.
EXPAND: Multiply the rhythm/duration values in a selected track by the factor in the "Expand ratio" edit field.BR> SHIFT: Delay the start of a selected track by the value indicated in the "Shift value" edit field. A value of "24" equals one beat. Do the math.
INVERT: Turn the pitch intervals in a selected track upside down.
REVERSE: Reverse the order notes in a track.
Whenever you click on a Function Button, you change all the notes in the selected track; there is no "Undo" function.
The PLAY button does what it says; select playback tracks using the A, B, C and D buttons.
The AUTO-GENERATE button generates all 4 tracks and starts playback immediately. The MIDI FILE button saves the tracks in SMF format.
Neat trick: Edit rhythms and enter pitches as described above, and generate the "A" track by clicking on the RHYTHM and PITCH Function Buttons. Copy track A to tracks B, C and D with the COPY FROM/COPY TO function. Enter a value of "96" in the "Shift value" edit field. Select the "B" button next to the SHIFT Function Button, then click the SHIFT button. Select the "C" button next to the SHIFT Function Button, then click the SHIFT button TWICE. Select the "D" button next to the SHIFT Function Button, then click the SHIFT button THREE TIMES. Now play the four tracks: instant 4-part canon.
NEW PROGRAMS AVAILABLE FROM DAVID SNOW: SEPTEMBER 2000
Phraser, an interactive real-time MIDI file generator for the Atari ST/TT/Falcon family of computers
by David Snow
Released as Freeware SEPTEMBER 2000
Instant psuedo-12-tone composition is here! Hook up a MIDI keyboard to your ST's MIDI output and double-click on PHRASER.PRG. At the first prompt, enter a tempo (beats per minute) value. At the second prompt, enter a beat-subdivision value (2=eighth notes, 3=eighth note triplets, 4=sixteenth notes, etc.). Start playing single notes on the MIDI keyboard. Phraser responds by creating random phrases triggered by the notes you play. Note density is controlled by how loudly you play. To quit, press the Esc key. You can save the performance as a MIDI file, or click on "Cancel" in the file selector to discard it.
A MIDI Sound Design Tool for the Falcon030
by David Snow
Released as Freeware SEPTEMBER 2000
New Wave is a GEM application that allows you to create original
16-bit sound files using a powerful technique called "additive
synthesis". New Wave samples can be downloaded to any sampler or
sample-player that supports the MIDI Sample Dump standard, and also be
saved to disk in Sound Designer format. Even if you don't don't own a
sampler, you can still audition the samples you create.
A little theory...
It's beyond the scope of this manual to delve deeply into the science of acoustics, but some background is necessary to understand how New Wave works.
Sound is energy produced by a physical medium vibrating at a rate called its "frequency". The higher the frequency, the higher the pitch of the sound. When a trumpet or a violin plays the note "A" above middle C, the frequency of air vibration is 440 cycles per second (or 440 Hertz).
The tonal quality that distinguishes the sound of a trumpet from a violin (or from a power saw, for that matter) is called its "timbre". Several elements combine to create that psycho-acoustic effect; one of the most important of these is the presence of "partials", which are low-amplitude frequencies superimposed upon the basic or "fundamental" frequency. For pitched instruments like violin and trumpet, the ratios of the frequencies of partials to that of the fundamental is usually an integer: the first partial is twice the frequency of the fundamental (2:1), the next is three times the frequency of the fundamental (3:1), the next four times (4:1), and so on. The amplitude of these paritals is so low that you don't hear them as separate notes; instead, they blend with and color the fundamental so you hear only its pitch. Different instruments accentuate different partials; a clarinet timbre, for example, is composed predominantly of partials with odd-integer ratios: 3:1, 5:1, 7:1, etc. For unpitched instruments like drums and cymbals, there is no fundamental frequency per se, and the partials may all be of nearly equal amplitude in non- integer (fractional) ratios to each other.
Another parameter that gives a sound its character is its "amplitude envelope", or the manner in which it changes in loudness over time. Percussive instruments have a virtually instantaneous "attack", followed by a sloping release into silence. By contrast, brass instruments have slower attack (slower on a scale of milliseconds, that is) which peaks and quickly decays to a steady state ("sustain"), then releases when the player stops blowing. In reality, each partial in a complex acoustic sound has its own amplitude envelope contributing to the overall loudness contour. The frequency of a partial can also change over time (although in acoustic instruments it usually deviates only by a small fraction). This frequency curve is called a "pitch envelope".
The logic of "additive synthesis" is to build sounds from the bottom up by adding partials together. In order to create interesting, dynamic timbres it's necessary to provide a sufficiently large number of partials for tonal variety, and to equip each with its own frequency ratio, and amplitude and pitch envelopes.
Using New Wave
New Wave offers three methods for creating sounds. The first
method, "Single partial editing", is available on the Partial Editing
Page which is the first screen you see. On the top half of the screen
is the Amplitude Envelope window, and on the bottom half, the Pitch
Envelope window. To draw an envelope in either window, click and drag
the mouse: left-clicking and dragging allows you to free-draw the
envelope, while clicking both buttons and dragging lets you stretch a
straight line from the starting point.
New Wave permits you create envelopes for a maximum of 24 partials. To select a partial for editing, select "Partial #" under the Edit menu and type in the number of the partial you want. You can also select partials by using the up and down cursor keys on the computer keyboard.
Each partial has a frequency ratio and waveform assigned to it. To change these parameters, select "Waveform" or "Ratio" from the Edit menu. By default, each partial is a sine wave with a frequency ratio equal to its partial number (i.e. the second partial has a ratio of 2:1, the third 3:1, etc.).
Under the Edit menu you'll find options for manipulating amplitude and pitch envelopes. "Copy" lets you copy the envelope of the currently selected partial to other partials. "Swap" exchanges the envelope of the current partial with that of another. "Shift" moves the envelope up or down by a positive or negative offset value; "Scale" modifies the slope of the envelope by multiplying it by a factor of 0% to 200%. "Invert" flips the envelope upside down, while "Reverse" flips it backward. Finally, "Reset" restores the envelope to its zero-state.
You can perform these edit options on either amplitude or pitch envelopes. Make sure the proper window is selected before executing an edit option, or you'll alter the wrong envelopes. To select a window, click on it, or click on "Amplitude" or "Pitch" under the Edit menu. With "Pitch envelope" selected, you can also define the maximum span of pitch deviation by clicking on "Pitch span" under the Edit menu.
You can view all envelopes simultaneously by clicking on "All partials" under the "Display" menu; the currently selected partial will be drawn in a heavy line. You can't manually draw envelopes in this display mode, but all options under the Edit menu are available. "All partials" will display either amplitude or pitch envelopes, depending upon which edit mode you're in. Click on "Amplitude" or "Pitch" under the Edit menu to change edit mode.
Once you have created envelopes, you must define the parameters of the sample that you wish to generate. Click on "Set pitch" under the Sample menu: a 5-octave keyboard will appear. Left-clicking on a key sets the pitch of the sample accordingly and displays the frequency of the note. Right clicking closes the keyboard.
Next, select "Parameters" under the Sample menu. The top edit field displays the frequency of the pitch you just entered (which you can also enter directly). Enter the desired duration of the sample in the middle edit field, and the sampling rate in the bottom field. New Wave samples can be a maximum of 64K 16-bit words long; the maximum duration of a sample therefore equals 65536 divided by the sampling rate.
Once parameters are set, click on "Calculate" under the Sample menu. To view the waveforms of the generated sample, select "Wave display" under the Display menu. You can also view the waves sequentially by selecting "Wave sequence"; pressing the Control key halts the sequence for viewing. To hear the sample, select "Audition" under the Sample menu.
To dump the sample to a synth, make sure MIDI IN and OUT cables are properly connected between computer and sampler. If the sampler is set to receive dumps on a particular MIDI channel, set New Wave accordingly by selecting "Channel" under the MIDI menu. Now click on "Sample dump" dump under the MIDI menu. You can abort a dump at any time by hitting a key on the computer. If your sampler doesn't have a keyboard, you can play it directly from the computer by selecting "Keyboard" under the MIDI menu and clicking on its keys.
To save a sample to disk, select "Save sample" under the File menu. You can also save and load parameter files containing envelope, waveform, ratio, pitch, duration, and sample rate information by selecting "Save parameters" and "Load parameters" under the File menu. (Note: In 1993, I made the unfortunate decision to give New Wave parameter files a ".WAV" extension. Sorry about that. This program was developed before I had heard of Microsoft WAV-format audio files.)
You can selectively re-initialize envelopes, waveforms, and frequency ratios by selecting "Reset all" under the Edit menu. Click on the buttons representing the parameters you wish to reset, then click on "OK".
A Slice of Time
The second method of generating samples is called "Timeslice
editing". Instead of editing one partial at a time (with each
envelope representing the entire duration of the sample), you can edit
all the partials at discrete points in time.
Select "Timeslice" under the Display menu. At the top of the screen is a series of buttons that represent 32 equally-spaced time segments (i.e. for a 1 second sample, each button would represent 1/32 of a second). At the bottom of the screen are 24 "volume control sliders", each representing the amplitude of a partial at the selected point in time; click and drag each slider to the desired amplitude level. After editing the partials in a timeslice, click on the MARK button. To select a new timeslice to edit, click on a button under "AMPLITUDE ENVELOPE BREAKPOINTS"; to copy the slider positions of one timeslice to another, press the Control key while clicking on one of the buttons.
Once you've edited and MARKed at least two timeslices, you can connect the points between them into a continuous envelope by clicking on the SLICE 'N' DICE button. You can then view the new envelopes by selecting "All partials" under the Display menu. To generate a sample, you must set the pitch, duration, and sampling rate as before and select "Calculate" under the Sample menu.
Only timeslices that are MARKed will be treated as breakpoints in newly-created envelopes when you execute SLICE 'N' DICE. To remove a MARK from a timeslice, click on the UNMARK button.
And for the sample-impaired...
The final method of generating samples is also the easiest, since the program does most of the work. Select "QuikWave" from the Edit menu. Depending upon whether you're in amplitude or pitch envelope edit mode, a dialog box will offer several options that determine the shape and intensity of the envelopes you wish to create. A second dialog will ask for the range of envelopes to be generated. After generating the envelopes, you must set sample parameters as before and then generate the sample.
You can do lots of wild things with New Wave, and some will be ugly. Let experience be your guide. As a general rule, avoid drawing amplitude envelopes with steep slopes; a sudden shift in amplitude in the middle of a sine wave will cause a harsh-sounding glitch. You might want to refer to books on the acoustic properties of musical instruments to get an idea of how partials influence timbre. From there you can go on to experiment with irrational frequency ratios, sawtooth partials, and other debris from the sound-desingers lab.