When envelopes are used, the "command code" for the envelope should be loaded a single time at the start. Otherwise the envelope is "resetted" continuously creating a "motor" noise.
if throw_sound = 1 then
IF SND = 0 THEN
sound 4,$0f,$0007
sound 2,$0BB8,$30
sound 3,$0800,$0004
END IF
snd = snd + 1
if snd = 20 then
SOUND 4,,0
SOUND 2,,0
SOUND 3,,0
snd = 0
throw_sound = 0
end if
end if