Cleaner code for programming songs into BS2 wanted
humble scuba
Posts: 1
Hey, all.
I'm pretty new to this whole basic stamp thing, and robotics in general, really.
I've programmed a short little song into my chip, and it plays recognizably through a piezo buzzer. The code is just a little bulky, and I was wondering if there's a cleaner way to do it.
Here's the code:
a CON 831
b CON 932
c CON 1047
d CON 1109
e CON 1245
f CON 1397
ah CON 1661
DO
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 300, f
FREQOUT 0, 300, f
FREQOUT 0, 500, e
PAUSE 50
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 300, e
FREQOUT 0, 300, e
FREQOUT 0, 500, d
PAUSE 50
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 400, d
FREQOUT 0, 200, e
FREQOUT 0, 200, c
FREQOUT 0, 200, b
FREQOUT 0, 300, a
PAUSE 100
FREQOUT 0, 250, a
FREQOUT 0, 400, e
FREQOUT 0, 600, d
PAUSE 200
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 300, f
FREQOUT 0, 300, f
FREQOUT 0, 500, e
PAUSE 50
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 400, ah
FREQOUT 0, 200, c
FREQOUT 0, 200, d
FREQOUT 0, 200, c
FREQOUT 0, 300, b
PAUSE 50
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 400, d
FREQOUT 0, 200, e
FREQOUT 0, 200, c
FREQOUT 0, 200, b
FREQOUT 0, 300, a
PAUSE 100
FREQOUT 0, 250, a
FREQOUT 0, 400, e
FREQOUT 0, 600, d
PAUSE 100
LOOP
To put it simply, I looked up the frequencies of the notes I wanted to play, declared them as a constant, then called on the notes instead of having to type out the actual frequency over and over again.
Any help cleaning this up or rewording it would be greatly appreciated, though. Thanks.
I'm pretty new to this whole basic stamp thing, and robotics in general, really.
I've programmed a short little song into my chip, and it plays recognizably through a piezo buzzer. The code is just a little bulky, and I was wondering if there's a cleaner way to do it.
Here's the code:
a CON 831
b CON 932
c CON 1047
d CON 1109
e CON 1245
f CON 1397
ah CON 1661
DO
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 300, f
FREQOUT 0, 300, f
FREQOUT 0, 500, e
PAUSE 50
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 300, e
FREQOUT 0, 300, e
FREQOUT 0, 500, d
PAUSE 50
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 400, d
FREQOUT 0, 200, e
FREQOUT 0, 200, c
FREQOUT 0, 200, b
FREQOUT 0, 300, a
PAUSE 100
FREQOUT 0, 250, a
FREQOUT 0, 400, e
FREQOUT 0, 600, d
PAUSE 200
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 300, f
FREQOUT 0, 300, f
FREQOUT 0, 500, e
PAUSE 50
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 400, ah
FREQOUT 0, 200, c
FREQOUT 0, 200, d
FREQOUT 0, 200, c
FREQOUT 0, 300, b
PAUSE 50
FREQOUT 0, 100, a
FREQOUT 0, 100, b
FREQOUT 0, 100, d
FREQOUT 0, 100, b
FREQOUT 0, 400, d
FREQOUT 0, 200, e
FREQOUT 0, 200, c
FREQOUT 0, 200, b
FREQOUT 0, 300, a
PAUSE 100
FREQOUT 0, 250, a
FREQOUT 0, 400, e
FREQOUT 0, 600, d
PAUSE 100
LOOP
To put it simply, I looked up the frequencies of the notes I wanted to play, declared them as a constant, then called on the notes instead of having to type out the actual frequency over and over again.
Any help cleaning this up or rewording it would be greatly appreciated, though. Thanks.
Comments
Look in the Basic Stamp Manual in the sections on the DATA and READ statements.
-Phil