home *** CD-ROM | disk | FTP | other *** search
- OCTOPUS (8pus) 8-voice Amiga MIDI instrument Sept 13 88
- By J Henry H Lowengard
-
- This is a demo program which shows you a couple of aspects of sound:
- First, you can draw or use preset waveforms, and do some rudimentary
- editing and processing on them. Second, you can compare a 12-tone
- equal temperament scale to a just scale. It also is a partially
- featured MIDI synthesizer, capable of 8-voice synthesis.
-
- The most important line of any doc file:
- To exit the program, you can use the Close gadget, the Escape key, or
- the Stop gadget.
-
- The MIDI implementation:
- 8pus acts on note_on,note_off and pedal signals. When you try
- to play 9 notes, the 9th will not be played. The pedal holds the
- notes in a chord. Velocity is not yet used. An 'All-notes-off'
- can be done by using the 'Shutup' gadget or pressing the space bar.
-
- Tunings:
- The 12-Equal tuning is the default. The '12ET' gadget also sets
- the tuning to 12ET, as does the number '1' on the keypad.
- The just tuning consists of these ratios
-
- C C# D Eb E F F# G Ab A Bb B
- 1/1 ( c#) 9/8 6/5 5/4 4/3 (f#) 3/2 8/5 5/3 7/4 15/8
-
- The Just tuning is set by the 'Just' gadget and the number '2' on the keypad.
-
- A change of tuning takes effect immediately.
-
-
- You can play the Amiga keyboard in a way similar to that of Sonix, Soundscape,
- Synthia, SoundLab etc. etc.
- The Z key represents c-below-middle-c (note #48). it continues in the
- usual B&W pattern. Middle C (note # 60) is on Q. Because of the "key
- ghosting problem", certain combinations of keys cause mysterious notes
- to turn on. Hit the spacebar to "Kill" any stuck notes which may result
- from this. You can use the shift keys as "sustain pedals" to build large
- chords without this problem. Using Caps lock and the spacebar is one way to
- build the chords up. You don't need to grow an extra finger either.
-
-
-
- The waveforms:
- Gadgets provide the following preset waveforms, also found on F-keys:
- F1 ... Sine
- F2 ... Square
- F3 ... Triangle
- F4 ... Upgoing sawtooth (double frequency)
-
- The waveforms can be changed by hand with the mouse while 8pus is
- playing.
-
- Also, there are these functions:
- F6 ... F*2: doubles the frequency of the sound by moving the
- even samples to the front and the odd samples to the back.
- Nine 'doubles' brings you back to the original waveform.
- (since 2^9 = 512, the length of the wave)
- F7 ... Shrink: ramps the amplitude down on the waveform -
- good for making "chips"
- F8 ... Filter: filters the waveform with the equation:
- S(i) = (s(i-1)+2*s(i)+s(i+1) ) /4
-
- There will be a slight buzz while the screen fixes itself after these
- operations (if the sound is on).
-
- Audio Characteristics:
- The high-pitched whine, at 5000 Hz, is in fact my output sample frequency.
- If you want to discover something about aliasing, play some high notes.
- I realize the thing is noisy .. the rate is so low because of the enormous
- throughput needed. If you play eight notes and move the mouse, you can hear
- the program hiccup.
-
- The length of the wave which I'm playing is 512 bytes. You can hear the
- frequency getting less accurate in the low notes while the aliasing starts
- early in the high notes. Although you can turn the just intonation on,
- and hear a difference, the accuracy in not the hottest in the world.
- The length of the CHIP-buffers are 128 bytes each. At 5000 Hz, a new
- buffer comes out every 39th of a second. This is perceptively slow
- in reacting to lots of MIDI messages.
-
- So what's the point?
- Well, This is just one byproduct of my researches into double buffered
- audio and MIDI parsing. Played with cleaner sounding MIDI instruments,
- it adds colorful distortion and texture. Re-drawing the waveform
- while you play it is lots of fun. It sounds like playing with a
- graphic equalizer. And the fact that 8 go on at once is the real
- story here. I'm going to use the tools developed for Octopus to make
- more interesting (monophonic) synthesizers.
-
- Tips and fun stuff:
- Start with a square wave and carve pieces out of it. Then filter it,
- double it and filter it some more.
- Doodle something on the screen, double it until it's a meaningless mush,
- then filter it and draw over it some more.
- Take the UpSaw wave and double it and filter it. Sounds just like a
- Juno-6 or a dying Casio PT-20, eh?
- Now shrink it .. note the vocal quality? Like someone snoring over
- AM radio 1000 miles away?
- Toggle between tunings while playing a C7/9 chord (C-E-G-Bb-C-D)
- Ditto for a Bb7 (Bb-D-F-Bb-C). Sounds lousy when the tuning is Just, eh?
- That's why people don't use just tunings on fixed pitch instruments too
- often. (Maybe I'll put up an "adjusting just" scheme in a future version)
-
- Rules and reulations:
-
- This program may be freely distributed...or it may not.
-
- Copy this program and give it to your friends, especially educational
- institutions. Send no money, but if you are developing a product on
- similar lines, you can consult me . The low quality of the output should
- be enough to convince you of the foolishness of trying to do this on
- a standard Amiga. The program is written in assembler, using some very
- nasty optimization inthe inner sound computation loop. I use the HiSoft
- "GenAm" assembler, which takes about 15 seconds to go from source to
- executable. I also use Metascope a whole lot.
-
- The program may be slightly improved, but other, related programs
- will be more interesting. For instance, I may add an ARexx interface,
- to allow it to be retuned from ARexx, started, stopped, maybe play
- some notes (I suppose it multitasks). Or, I may put in some savable
- waveforms, or operate in a more sophisticated way, with envelopes,
- velocity, stereo panning, etc, etc. Reading and using Iff 8svx files
- might be nice.
-
-
-
- CAUTION: Don't try running this with other Music programs on the same
- machine - it won't work. I amd doing low, low level things to the
- serial port and audio interrupts. Don't try multitasking it with
- itself either. You can leave it running if you are aren't using the
- serial port or the audio chips, but my intese work might make you
- miss other, high I/O type work. It does crash on exit with a memory list
- bug (GURU #81000009) from time to time, but I can't reproduce it.
-
-
-
-
- J Henry H Lowengard, 43 W 16th Street, Apt. 2D, NYC 10011-6320
- CIS: 76625,2425 NYTEL: 212-675-6046
- Previously released version dates:
- Sept 4 1988 (CIS)
- Sept 5 1988 (Eniac,Gateway)
- : fixed drawing bugs, added shrink
- Sept 13 1988
- : Added keys, widened display, etc.
-