|
- 1 REM =============================================
- 2 REM SOUND-DEMO.BAS — C64 SID Chip Sound Demo
- 3 REM Demonstrates: 3-voice music, ADSR, waveforms
- 4 REM =============================================
- 10 SID = 54272 : REM SID base ($D400)
- 20 VOL = SID+24 : REM master volume ($D418)
- 30 POKE VOL, 15 : REM Volume = 15 (maximum)
-
- 100 REM --- PLAY A SIMPLE MELODY (Voice 1) ---
- 110 REM Frequency values for NTSC C64
- 120 REM C4=4313, D4=4842, E4=5431, F4=5760, G4=6433, A4=7372, B4=7992, C5=8627
-
- 130 DIM NOTE%(7)
- 140 NOTE%(0) = 4313 : REM C4
- 150 NOTE%(1) = 4842 : REM D4
- 160 NOTE%(2) = 5431 : REM E4
- 170 NOTE%(3) = 5760 : REM F4
- 180 NOTE%(4) = 6433 : REM G4
- 190 NOTE%(5) = 7372 : REM A4
- 200 NOTE%(6) = 7992 : REM B4
-
- 210 REM ADSR for voice 1: fast attack, short decay, sustain 12, medium release
- 220 POKE SID+5, 9 : REM attack=0(2ms), decay=9(250ms)
- 230 POKE SID+6, 192 : REM sustain=12, release=0
-
- 240 REM Sawtooth waveform
- 250 WAVEFORM = 32 : REM %00100000 = sawtooth
-
- 300 REM --- MELODY LOOP ---
- 310 FOR I = 0 TO 6
- 320 F = NOTE%(I)
- 330 POKE SID, F AND 255 : REM frequency low
- 340 POKE SID+1, INT(F/256) : REM frequency high
- 350 POKE SID+4, WAVEFORM OR 1 : REM start note (gate on)
- 360 FOR W = 1 TO 150 : NEXT : REM hold note
- 370 POKE SID+4, WAVEFORM : REM release (gate off)
- 380 FOR W = 1 TO 50 : NEXT : REM short gap
- 390 NEXT I
-
- 400 REM --- 3-VOICE CHORD (C major) ---
- 410 PRINT "PLAYING C MAJOR CHORD..."
- 420 REM Voice 1: C4
- 430 POKE SID, 4313 AND 255 : POKE SID+1, INT(4313/256)
- 440 POKE SID+5, 2 : POKE SID+6, 240 : REM slow attack, sustain 15
- 450 POKE SID+4, 33 : REM triangle + gate
-
- 460 REM Voice 2: E4
- 470 POKE SID+7, 5431 AND 255 : POKE SID+8, INT(5431/256)
- 480 POKE SID+12, 2 : POKE SID+13, 240
- 490 POKE SID+11, 17 : REM triangle + gate (voice 2 control = SID+11)
-
- 500 REM Voice 3: G4
- 510 POKE SID+14, 6433 AND 255 : POKE SID+15, INT(6433/256)
- 520 POKE SID+19, 2 : POKE SID+20, 240
- 530 POKE SID+18, 17 : REM triangle + gate (voice 3 control = SID+18)
-
- 540 FOR W = 1 TO 500 : NEXT : REM hold chord
-
- 550 REM Release all voices
- 560 POKE SID+4, 16 : REM voice 1 release
- 570 POKE SID+11, 16 : REM voice 2 release
- 580 POKE SID+18, 16 : REM voice 3 release
- 590 FOR W = 1 TO 300 : NEXT
-
- 600 REM --- NOISE EFFECT (explosion) ---
- 610 PRINT "EXPLOSION SOUND..."
- 620 POKE SID+5, 0 : POKE SID+6, 0 : REM instant attack+decay+release
- 630 POKE SID, 255 : POKE SID+1, 255 : REM high frequency for noise
- 640 POKE SID+4, 129 : REM noise + gate (%10000001)
- 650 FOR W = 1 TO 100 : NEXT
- 660 POKE SID+4, 128 : REM gate off
-
- 700 REM --- CLEAN UP ---
- 710 FOR W = 1 TO 200 : NEXT : REM wait for release
- 720 POKE VOL, 0 : REM silence
- 730 PRINT "DONE."
|