BUZZ doc file

Sep 11 1993 Mar 18 94 Oct 28 94 HTML: May 1999

Buzz is a cheesy sort of REXX controlled configurable synthesizer. It's like a primative analogue syntheizer with 8 oscillators with a few waveforms, which can modulate each other via AM or FM. MIDI enters the picture if need be - each MIDI note-on can reload the entire synthesizer with a new configuration! Also, Midi Note-on velocity can be used as a modulator.

Buzz does not work well on A4000's . In fact, it doesn't work at all there. I suspect the same of A1200's. I'm not sure why.
Moral: sell it and get an A3000.

To start BUZZ, you must say
RUN Buzz
because it should run as a background task.

You will get a bare looking window with a close button and one line of information about the sample rate.
You can actually set the sample rate from the command line:
run Buzz -s 12000
but it's easier to use ARexx to set it.

Although you hear nothing, BUZZ is alive.

You MUST use ARexx to command and configure BUZZ. This means you should run Rexxmast to start ARexx in case you foolishly have left it out of your startup sequence.

Because Buzz runs continuously, it will continue running a patch even though the controlling ARexx program has terminated. This is a feature - if you want it to shut up, use the SHUTUP command!

Another subtle point is that is can easily be controlled by any program which can execute a shell or ARexx macro command, such as editors, authoring tools, multimedia programs...

The ARexx port name for Buzz is BUZZ (all uppercase).

I give ARexx programs for Buzz the suffix .buz, but it's not necessary. A later version might have a different interface which maps ARexx macros to keys and thus would prefer a suffix.

1) Internals summary
BUZZ has 8 ocillators, called 0 1 2 3 4 5 6 7.
In a crude sort of way, the oscillators are assigned stereo outputs:
0,3,4 and 7 are rights while 1,2,5 and 6 are lefts.
An oscillator has the following programmable properties:

Another command associates the current patch with a MIDI note-on event.
Furthermore, there is a global sample rate changer so that complicated patches won't skip records.
Finally, there are commands to return all the oscillators to defaults and to quit.
2) the real Arexx commands:
All commands are case insensitive.
General Use:
Quit, free memory,close the window. The closebutton onthe window does the same thing.
return all oscillators to defaults.
change sample rate to something near . The funny number is rounded to a nearby Amiga "period" - controlled sample rate. The more oscillators, the more likely that the synthesizer will miss calculating a buffer in time, and you'll hear a click. Just drop the sample rate!
Wait for n buffer turnovers (a crude timing device). Of course, timing depends on the sample rate (higher rate == faster ticks).
Filter ON/OFF
Turns the famous audio filter on or off on models which have it. Also blinks the famous power LED as a side effect.
MSET <midi notenum>
this associates the current patch with a MIDI note number. remember to TURNMIDI on to use this feature.
The MIDI parser can be disabled as well. By default, it IS off, so you must turn it on when you are ready to run MIDI. Buzz's MIDI support ignores the channel (i.e. it's in OMNI mode) Also, it's monophonic, but remembers old note-ons so trills are possible
OSC <#> <f> <a>
give oscillator # a frequency of <F> and an amp of <a> ; <a> is optional
TURN <#> [ON/OFF] <a> <p>
OSCENA <#> [ON/OFF] <a> <p>
turns oscillator # on or off with amplitude <a> and starting phase <p>
TURN means that the oscillator will calculate a signal. however, if the signal is being used as a modulator, it will be muted. Otherwise, it will play.
OSCENA is the same as TURN.
<a> and <p> are optional. <a> is +/- 127, <p> is 0-1M (1048576) or 4K*256
OSCWAVE <#> <type>
set the oscillator <#> waveform to be
0- Sine 1-Saw Up 3-Saw Down 3-Square 4- User wave 0 5 - user wave 1 6 - user wave 2 7 - user wave 3
SSAMPLE <u#> <uo> <uf>
put a value uf in the sine table for user wave u# at offset uo. uo is 0..4095, uf is -1.0 .. 1.0
In these modulation effects, the source oscillator is muted from the output.
OSCFM <#> on/off [source]
enable FM modulation of oscillator # with a source oscillator (0..7) or MIDI Velocity (-1)
OSCAM <#> on/off [source]
enable AM modulation of oscillator # with a source oscillator (0..7) or MIDI Velocity (-1)
OSCSUM <#> on/off [source]
enable adding of another source's signal to this one.
here is a simple oscillator patch.
/* a simple patch */
address BUZZ

/* always a good idea */

/* right channel*/
OSC 0 110.0 127
/* left channel*/
OSC 1 110.0 127


here is a simple FM patch

/* simple FM patch mono*/
address BUZZ
/* always a good idea */
/* right channel*/
OSC 0 110.0 127
/* left channel*/
OSC 1 220.0 40
oscfm 0 ON 1
/*a complicated MIDI patch */

address Buzz

/* turn off previous patch */
/* a pretty good sample rate on the A3000 */
srate 8000

/* don't play while I load these patches! */
TurnSynth Off

/* this magic number is the 12th root of 2, the ratio by which
   12 equal tempered semitones differ. This is not an endorsement of
   this tuning system */

ET = 1.059463094

A   = 110
AS  = a *ET
BF  = a *ET
B   = as *ET
C  = B *ET

CS  = C *ET
DF  = C *ET
D  = CS*ET
DS  = D *ET
EF  = D *ET
E  = EF *ET

F  = E *ET
FS  = F *ET
GF  = F *ET
G  = FS *ET
GS  = G *ET
AF  = G *ET

Base = C/2

/* determine frequencies for a range of MIDI Note Numbers... */
do MNN = 36 to 96

/* this patch uses two carrier frequencies, which beat at 2 Hz
  (twice a second) near the 'target' frequency */

OSC 0 base+1.0 127
OSC 1 Base-1.0 127

/* set up a modulator for those two with a subtle amplitude */
osc 2 base*2 4

/* to use MIDI velocity to modulate the volume, use these lines */
/* ARexx note: in double quotes so that the expression 'on -1'
   is not erroneously evaluated! */
"oscam 0 on -1"
"oscam 1 on -1"

/* AM modulate the Modulator (osc 2) with MIDI velocity */
"oscam 2 on -1"
oscam 0 on 2
oscam 1 on 2

Turn 0 on
Turn 1 on
Turn 2 on 

/* save this as Midi Mote Number MNN */
MSet Mnn

/* update the base pitch */
base = base*et

end MNN

/* turn off last loaded patch */

/* ready to run !*/
TurnSynth On
TurnMIDI on
/* inform the user! */
say "Ready for MIDI"

BUZZ © 1993,1994 by J Henry H Lowengard
Buzz is 100% assembler code.

Buzz is experimental software and is not particularly nice to the serial port or the audio system. Other programs won't know it is using these resources and will (properly) snag them from Buzz and possibly malfunction. Sometimes this is a desired function, as the programs holding these resources are dormant, but haven't released them. One solution for Buzz would put the official grabbing of these resources under programmable control... but that's for some later version. You have hereby been warned of this behavior and hereby disclaim all responsibility for damages incurred by using this program.

That being said, it is a free program - give it away if you please. In fact, I don't consider you a licensed user unless you give it away. No charging fees now - that gives you an infinite profit, which is reprehensible. A license means nothing, other than I have your name in case you bother me again or deign to release more software or upgrades. If you use the stuff for some artistic pursuit, I'd like to know about it so I can boast to my friends. An example or description of said artwork would also be nice!

Of coure, any nice Curt Teich Colortone Postcards of sunsets or water scenes would be appreciated.

I have written a number of other free experimental music and animation programs, most of which I'm happy to distribute. But until I develop the ESP to Joystick port interface, you'll have to write me:

[Back to software-o-phones] [Back to the main page]
Henry Lowengard, /324 Wall St. Apt 5 / Kingston NY 12401/

© 1999 Henry Lowengard