Enjoy programming more!
Kidspod is a post site which supports young programmers.
First step to join us.
Register as a member
For members

2018/11/28 18:31:06

MixJuice GET URL : kidspod.club/mj/677

赤鼻のトナカイ PWM_MUSIC

OUT 5 に圧電サウンダを接続して、PWMで音を鳴らします。
曲が長いので2分割しています。
事前にSAVEファイル番号で保存場所を指定しておきます

テンポ・音符の長さはL=で1/60秒を単位として設定します。
N=は音を区切るための無音の時間 P=パルス幅の%

CDEFGAB は音符 cdfgaは半音高い音符
-で音を伸ばします。_は休符
<=> でオクターブ O=10 20 40 を指定します。

演奏中にエンターを押すとOUT5,0で音を止めて終了します。

SOURCE CODE

  1. NEW
  2. F=FILE()
  3.  
  4. 10 'アカハナノトナカイー1
  5. 20 CLS:PRINT "アカハナノトナカイ"
  6. 30 L=6:N=2:P=50:O=20
  7. 40 M="G_AGE->C-=A-G-----":GSB@PL
  8. 50 M="GAGAG->C-=B-------":GSB@PL
  9. 60 M="FG_FD-B-A-G-----":GSB@PL
  10. 70 M="GAGAG-A-E-------":GSB@PL
  11. 80 M="GA_GE->C-=A-G-----":GSB@PL
  12. 90 M="GAGAG->C-=B-------":GSB@PL
  13. 100 M="F-GFD-B-A-G-----":GSB@PL
  14. 110 M="GAGAG->D-C-------":GSB@PL
  15. 120 LRUNFILE()+1
  16. 130 @PL:I=0
  17. 140 @RD:C=PEEK(M+I):I=I+1:F=0
  18. 150 IFC=34OUT5,0:RTN
  19. 160 IFC=60O=10
  20. 170 IFC=61O=20
  21. 180 IFC=62O=40
  22. 190 IFC=95GSB@RE
  23. 200 IFC=45GSB@WT
  24. 210 IFC=67F=3822
  25. 220 IFC=99F=3608
  26. 230 IFC=68F=3405
  27. 240 IFC=100F=3214
  28. 250 IFC=69F=3034
  29. 260 IFC=70F=2863
  30. 270 IFC=102F=2703
  31. 280 IFC=71F=2551
  32. 290 IFC=103F=2408
  33. 300 IFC=65F=2273
  34. 310 IFC=97F=2145
  35. 320 IFC=66F=2025
  36. 330 IFF>0GSB@NT
  37. 340 GOTO@RD
  38. 350 @RE:OUT5,0:WAITL:GSB@P:RTN
  39. 360 @NT:F=F/O:PWM5,F*P/100,F
  40. 370 @WT:WAITL-N:IFPEEK(M+I)<>45OUT5,0
  41. 380 WAITN:GSB@P:RTN
  42. 400 @P:IFINKEY()=10OUT5,0:END:ELSERTN
  43.  
  44. SAVE
  45.  
  46. NEW
  47.  
  48. 10 'アカハナノトナカイー2
  49. 40 M="=A-A->C-=A-G-EG----":GSB@PL
  50. 50 M="F-A-G-F-E-------":GSB@PL
  51. 60 M="D-E-G-A-B-B-B---":GSB@PL
  52. 70 M=">C-C-=B-A-G-FD----":GSB@PL
  53. 80 M="GA_GE->C-=A-G-----":GSB@PL
  54. 90 M="GAGAG->C-=B-------":GSB@PL
  55. 100 M="FG-FD-B-A-G-----":GSB@PL
  56. 110 M="GAGAG->D-C-------":GSB@PL
  57. 120 END
  58. 130 @PL:I=0
  59. 140 @RD:C=PEEK(M+I):I=I+1:F=0
  60. 150 IFC=34OUT5,0:RTN
  61. 160 IFC=60O=10
  62. 170 IFC=61O=20
  63. 180 IFC=62O=40
  64. 190 IFC=95GSB@RE
  65. 200 IFC=45GSB@WT
  66. 210 IFC=67F=3822
  67. 220 IFC=99F=3608
  68. 230 IFC=68F=3405
  69. 240 IFC=100F=3214
  70. 250 IFC=69F=3034
  71. 260 IFC=70F=2863
  72. 270 IFC=102F=2703
  73. 280 IFC=71F=2551
  74. 290 IFC=103F=2408
  75. 300 IFC=65F=2273
  76. 310 IFC=97F=2145
  77. 320 IFC=66F=2025
  78. 330 IFF>0GSB@NT
  79. 340 GOTO@RD
  80. 350 @RE:OUT5,0:WAITL:GSB@P:RTN
  81. 360 @NT:F=F/O:PWM5,F*P/100,F
  82. 370 @WT:WAITL-N:IFPEEK(M+I)<>45OUT5,0
  83. 380 WAITN:GSB@P:RTN
  84. 400 @P:IFINKEY()=10OUT5,0:END:ELSERTN
  85.  
  86. SAVEFILE()+1
  87.  
  88. LRUNFILE()-1

COMMENT

S