25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

77 satır
2.6KB

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

Powered by TurnKey Linux.