16K Cassette or Disk
by John Carmody
Creating sound effects with the Atari computers is fun! Creating just the right effect can, however, be frustrating. Most of the sound manipulation utilities are powerful but complicated. What most of us need is a program that is powerful but simple, one that is most useful for BASIC programming, or just exploring the amazing sound potential of our omnipotent computers.
Sound FX is that program. The screen displays:
VOICE/PLAY : ATTACK : SUSTAIN : DECAY : FREQUENCY : DISTORTION : VOLUME :
for all four voices. A joystick, plugged into port 1, moves the cursor. Pressing the button on most lines increases the appropriate value. Pressing the button on the VOICE/PLAY line plays the sound. Pressing START at any time plays all four voices with the time values of the current voice. When any value reaches its maximum, it is reset to zero. When playing a single voice, the BASIC SOUND command appropriate to the SUSTAIN portion of the note is displayed at the bottom of the screen.
| Line | Function |
|---|---|
| 0 | Skip to initialization |
| 6000 | Begin single voice play |
| 6006 | Skip if ATTACK=0 |
| 6009 | Skip if SUSTAIN=0 |
| 6019 | Skip if DECAY=0 |
| 6030 | Turn off voice |
| 6050 | Return to joystick entry |
| 7000 | If OPTION then end |
| 7001 | Begin multiple voice play |
| 7002 | Skip if ATTACK=0 |
| 7009 | Skip if SUSTAIN=0 |
| 7019 | Skip if DECAY=0 |
| 7030 | Return to joystick entry |
| 8000 | Initialize |
| 8015 | Read initial sound values |
| 8020 | Read screen display |
| 8050 | Set up screen and colors |
| 8100 | Read X,Y positions for display |
| 8900 | Print bottom of screen |
| 9000 | Print sound matrix on screen |
| 9010 | Print initial sound values |
| 9020 | Position cursor for start |
| 10000 | Main entry loop |
| 10001 | Check for console key pressed |
| 10007 | If no entry, loop |
| 10008 | Get rid of cursor at current location |
| 10010 | Convert stick to X,Y |
| 10060 | Decide where to move cursor |
| 10150 | Put cursor at new location |
| 10200 | Loop back |
| 15000 | Button pressed if on VOICE/PLAY then play |
| 15010 | Increment/reset value |
| 15020 | Jump back to cursor printing routine |
| 19000 | Date for hi-lo of values |
| 20000 | Date for initial values |
0 DATA 427,672,604,75,331,705,314,567,
900,198,861,854,13,96,834,7451
6020 DATA 17,259,256,914,200,158,49,28
3,216,859,280,873,864,283,190,5701
7029 DATA 45,914,666,232,114,459,287,4
77,406,3,228,652,23,521,226,5253
9020 DATA 289,131,761,782,951,149,593,
451,896,893,733,382,816,822,828,9477
10090 DATA 826,863,862,874,879,995,501
,944,179,758,655,524,633,107,203,9803
19000 DATA 869,872,875,159,885,890,962
,823,1,747,7083