プチコン3号&BIGまとめWiki

投稿プログラム : 万能MMLプレイヤー

パンくずリスト

2017年01月15日投稿 投稿者 : DieMatsmot タグ : BGM

概要

MMLプレイヤーは作成する方によってデザインなどが異なりますが
このMMLプレイヤーは一味違います。
なんと!
使われている楽器名やテンポを確認することができます!
さらに!
テンポは自由に変更することが可能です!
そして!
曲の追加が比較的簡単です!

遊び方

…普通のMMLプレイヤーなので操作も何も。 十字キーで選曲、Aで再生というオーソドックスなタイプ。

下画面タッチでテンポの変更

公開キー

プチコン3号用の公開キーです。トップメニューの「作品公開とダウンロード」から公開キーを入力すると、作品をダウンロードすることができます。

プチコン3号/BIG 公開キー
A5V4784E

謝辞

このプログラムを作成するにあたり幾つかのお気に入り曲を使用させていただいています。

プログラムリスト

特徴:変数名が無駄に長い OPTIONは練習のため。

  1. ACLS:XSCREEN 2:BGMCLEAR:BGMSTOP
  2. OPTION STRICT
  3. DIM BGMFILENAME$[0]
  4. DIM RENEWMMLDATA$[3]
  5. DIM BGM_MMLDATA$[0]
  6. DIM I,P,J
  7. DIM TT,TX,TY
  8. DIM CHKFLG
  9. DIM NEWTEMPO
  10. DIM TITLE$[0],COMPOSER$[0],TEXT$[0],MML$[0]
  11. DIM _TITLE$,_COMPOSER$,_TEXT$,_MML$
  12. DIM CANPLAYBGMFILE$[0]
  13. DIM PRINTBGMLIST$[10]
  14. DIM CHANNELVOLUME$[18]
  15. DIM CONTFLG
  16. DIM NEIRO$,PART$,TEMPO$,VOL$,VOLPART$
  17. DIM CHK
  18. DIM POINT
  19. DIM SERCH=0,SERCHVOL,GM=0,GM$[17]
  20. DIM GMNAME$=LOAD(”TXT:GMNAME.TXT”,0)
  21. DIM GMNAMES$[0]
  22. WHILE 1
  23. J=INSTR(I,GMNAME$,CHR$(10))
  24. IF J==−1 THEN BREAK
  25. _TEXT$=MID$(GMNAME$,I,J−I)
  26. IF _TEXT$==”” THEN _TEXT$=”(BEEP)”
  27. PUSH GMNAMES$,_TEXT$
  28. I=J+1
  29. WEND
  30. _TEXT$=””
  31. IF CHKFILE(”TXT:@BACKUP.PRG”) THEN DELETE ”@BACKUP.PRG”
  32. FILES ”TXT:”,BGMFILENAME$
  33. NEIRO$=SHIFT(BGMFILENAME$)
  34. FOR I=0 TO LEN(BGMFILENAME$)−1
  35. BGMFILENAME$[I]=RIGHT$(BGMFILENAME$[I],LEN(BGMFILENAME$[I])−1)
  36. NEXT
  37. FOR I=0 TO LEN(BGMFILENAME$)−1
  38. IF BGMFILENAME$[I]==”GMNAME.TXT”THEN CONTINUE
  39. LOAD ”PRG1:”+BGMFILENAME$[I],FALSE
  40. CHKFLG=FALSE
  41. USE 1
  42. CHKFLG=CHKLABEL(”1:@BGM”+FORMAT$(”%03D”,I),1)
  43. IF CHKFLG THEN 
  44. RESTORE ”1:@BGM”+FORMAT$(”%03D”,I)
  45. READ _TITLE$,_COMPOSER$,_TEXT$,_MML$
  46. PUSH TITLE$,_TITLE$
  47. PUSH COMPOSER$,_COMPOSER$
  48. PUSH TEXT$,_TEXT$
  49. PUSH MML$,_MML$
  50. PUSH CANPLAYBGMFILE$,BGMFILENAME$[I]
  51. INC P
  52. ENDIF
  53. NEXT
  54. CLS
  55. P=0
  56. DIM B
  57. DISPLAY 0
  58. GOSUB @MMLDATASHOW
  59. WHILE 1
  60. GOSUB @CHECK_BUTTON
  61. GOSUB @PRINT_BGMDATA
  62. GOSUB @UNDERDISPLAY
  63. VSYNC
  64. WEND
  65. @CHECK_BUTTON
  66. B=BUTTON(1)
  67. IF B AND 1 THEN DEC P
  68. IF B AND 2 THEN INC P
  69. IF B AND 4 THEN DEC P,5
  70. IF B AND 8 THEN INC P,5
  71. IF P<0 THEN P=0
  72. IF P>LEN(CANPLAYBGMFILE$)−1 THEN P=LEN(CANPLAYBGMFILE$)−1
  73. IF B AND 16 THEN BGMPLAY MML$[P]:WAIT 20:CONTFLG=0
  74. IF (B==#B) AND  CONTFLG THEN BGMCONT  0:CONTFLG=FALSE
  75. IF (B==#X) AND !CONTFLG THEN BGMPAUSE 0,0.5:CONTFLG=TRUE
  76. IF B THEN CLS GOSUB @MMLDATASHOW
  77. RETURN
  78. @PRINT_BGMDATA
  79. LOCATE 0,0:COLOR #TMAGENTA
  80. PRINT ”TRACK ”+FORMAT$(”%03D”,P)
  81. LOCATE 2,2:COLOR #TYELLOW
  82. PRINT TITLE$[P];” ”*40
  83. LOCATE 3,3:COLOR #TCYAN
  84. PRINT ”作曲 ”;COMPOSER$[P];” ”*40
  85. LOCATE 3,5:COLOR #TWHITE
  86. PRINT ”・”;TEXT$[P];” ”*40
  87. LOCATE 3,7
  88. RETURN
  89. @MMLDATASHOW
  90. SERCH=0:GM=0:POINT=0:FILL GM$,””:FILL CHANNELVOLUME$,””
  91. LOCATE 0,9
  92. WHILE 1
  93. POINT=SERCH
  94. SERCH=INSTR(POINT,MML$[P],”:”)
  95. IF SERCH!=−1 THEN SERCH=INSTR(SERCH,MML$[P],”@”)
  96. IF SERCH!=−1 THEN
  97. NEIRO$=MID$(MML$[P],SERCH,4)
  98. SERCHVOL=INSTR(SERCH,MML$[P],”V”)
  99. IF SERCHVOL!=−1 THEN 
  100. VOL$  =MID$(MML$[P],SERCHVOL,4)
  101. ENDIF
  102. FOR I=1 TO 3
  103. PART$=MID$(NEIRO$,I,1)
  104. VOLPART$=MID$(VOL$,I,1)
  105. IF ASC(PART$)>47 && ASC(PART$)<58 THEN
  106. GM$[GM]=GM$[GM]+PART$
  107. CHK=TRUE
  108. ENDIF
  109. IF ASC(VOLPART$)>47 && ASC(VOLPART$)<58 THEN
  110. CHANNELVOLUME$[GM]=CHANNELVOLUME$[GM]+VOLPART$
  111. ENDIF
  112. NEXT
  113. IF CHK THEN INC GM:CHK=FALSE
  114. ELSE
  115. BREAK
  116. ENDIF
  117. WEND
  118. COLOR #TLIME
  119. PRINT ”使用音源  ”;
  120. COLOR #TMAROON
  121. PRINT ”※MML表記のしかたによって、実際の音源と異なる表示をする場合があります。”
  122. COLOR #TWHITE
  123. FOR I=0 TO 16
  124. IF GM$[I]==”” THEN BREAK
  125. ?” ”*3+FORMAT$(”%02D”,I)+”:”+FORMAT$(”%03D”,VAL(GM$[I]))+” ”+GMNAMES$[VAL(GM$[I])]
  126. IF CHANNELVOLUME$[I]==”” THEN CHANNELVOLUME$[I]=”(Undifined)
  127. LOCATE 30,11+I:?” V:”+CHANNELVOLUME$[I]
  128. NEXT
  129. SERCH=INSTR(0,MML$[P],”T”)
  130. IF SERCH!=−1 THEN
  131. NEIRO$=MID$(MML$[P],SERCH,4)
  132. TEMPO$=””
  133. FOR I=1 TO 3
  134. PART$=MID$(NEIRO$,I,1)
  135. IF ASC(PART$)>47 && ASC(PART$)<58 THEN
  136. TEMPO$=TEMPO$+PART$
  137. ENDIF
  138. NEXT
  139. ELSE 
  140. TEMPO$=”120”
  141. ENDIF
  142. RETURN
  143. @UNDERDISPLAY
  144. DISPLAY 1
  145. TOUCH OUT TT,TX,TY
  146. IF TT THEN 
  147. IF TX>24 && TX<72 && TY>25*8 && TY<27*8THEN
  148. INPUT ”ご希望のテンポを入力”;NEWTEMPO
  149. SERCH=INSTR(MML$[P],”T”)
  150. IF SERCH!=−1 THEN 
  151. RENEWMMLDATA$[0]=LEFT$(MML$[P],SERCH)
  152. RENEWMMLDATA$[1]=RIGHT$(MML$[P],LEN(MML$[P])−LEN(RENEWMMLDATA$[0])−LEN(TEMPO$)−1)
  153. MML$[P]=RENEWMMLDATA$[0]+”T”+STR$(NEWTEMPO)+RENEWMMLDATA$[1]
  154. ELSE 
  155. DIALOG””MML$[P]=”T”+STR$(NEWTEMPO)+MML$[P]
  156. ENDIF
  157. ENDIF
  158. ENDIF
  159. DISPLAY 0
  160. RETURN
  161. ※一部を割愛しています

CHECKER FLAG (ひとことコメント)

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • takumi : 凄い…… (2020/02/18 (火) 18:27:36)

メニュー 【3号】

ヘルプ

リンク

最近の更新

最近の人気ページ

オンライン情報

  • 現在同時に 1 人がこのサイトを見ています
  • このページはこれまでに 1960 回、本日は 1 回、昨日は 0 回閲覧されました

ページの先頭に戻る

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.089 秒 | このページの最終更新 : 2022/09/20 (火) 12:49:01 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30