2017年01月15日投稿 投稿者 : DieMatsmot タグ : BGM
MMLプレイヤーは作成する方によってデザインなどが異なりますが
このMMLプレイヤーは一味違います。
なんと!
使われている楽器名やテンポを確認することができます!
さらに!
テンポは自由に変更することが可能です!
そして!
曲の追加が比較的簡単です!
…普通のMMLプレイヤーなので操作も何も。 十字キーで選曲、Aで再生というオーソドックスなタイプ。
下画面タッチでテンポの変更
プチコン3号用の公開キーです。トップメニューの「作品公開とダウンロード」から公開キーを入力すると、作品をダウンロードすることができます。
このプログラムを作成するにあたり幾つかのお気に入り曲を使用させていただいています。
特徴:変数名が無駄に長い OPTIONは練習のため。
- ACLS:XSCREEN 2:BGMCLEAR:BGMSTOP
- OPTION STRICT
- DIM BGMFILENAME$[0]
- DIM RENEWMMLDATA$[3]
- DIM BGM_MMLDATA$[0]
- DIM I,P,J
- DIM TT,TX,TY
- DIM CHKFLG
- DIM NEWTEMPO
- DIM TITLE$[0],COMPOSER$[0],TEXT$[0],MML$[0]
- DIM _TITLE$,_COMPOSER$,_TEXT$,_MML$
- DIM CANPLAYBGMFILE$[0]
- DIM PRINTBGMLIST$[10]
- DIM CHANNELVOLUME$[18]
- DIM CONTFLG
- DIM NEIRO$,PART$,TEMPO$,VOL$,VOLPART$
- DIM CHK
- DIM POINT
- DIM SERCH=0,SERCHVOL,GM=0,GM$[17]
- DIM GMNAME$=LOAD(”TXT:GMNAME.TXT”,0)
- DIM GMNAMES$[0]
- WHILE 1
- J=INSTR(I,GMNAME$,CHR$(10))
- IF J==−1 THEN BREAK
- _TEXT$=MID$(GMNAME$,I,J−I)
- IF _TEXT$==”” THEN _TEXT$=”(BEEP)”
- PUSH GMNAMES$,_TEXT$
- I=J+1
- WEND
- _TEXT$=””
- IF CHKFILE(”TXT:@BACKUP.PRG”) THEN DELETE ”@BACKUP.PRG”
- FILES ”TXT:”,BGMFILENAME$
- NEIRO$=SHIFT(BGMFILENAME$)
- FOR I=0 TO LEN(BGMFILENAME$)−1
- BGMFILENAME$[I]=RIGHT$(BGMFILENAME$[I],LEN(BGMFILENAME$[I])−1)
- NEXT
- FOR I=0 TO LEN(BGMFILENAME$)−1
- IF BGMFILENAME$[I]==”GMNAME.TXT”THEN CONTINUE
- LOAD ”PRG1:”+BGMFILENAME$[I],FALSE
- CHKFLG=FALSE
- USE 1
- CHKFLG=CHKLABEL(”1:@BGM”+FORMAT$(”%03D”,I),1)
- IF CHKFLG THEN
- RESTORE ”1:@BGM”+FORMAT$(”%03D”,I)
- READ _TITLE$,_COMPOSER$,_TEXT$,_MML$
- PUSH TITLE$,_TITLE$
- PUSH COMPOSER$,_COMPOSER$
- PUSH TEXT$,_TEXT$
- PUSH MML$,_MML$
- PUSH CANPLAYBGMFILE$,BGMFILENAME$[I]
- INC P
- ENDIF
- NEXT
- CLS
- P=0
- DIM B
- DISPLAY 0
- GOSUB @MMLDATASHOW
- WHILE 1
- GOSUB @CHECK_BUTTON
- GOSUB @PRINT_BGMDATA
- GOSUB @UNDERDISPLAY
- VSYNC
- WEND
- @CHECK_BUTTON
- B=BUTTON(1)
- IF B AND 1 THEN DEC P
- IF B AND 2 THEN INC P
- IF B AND 4 THEN DEC P,5
- IF B AND 8 THEN INC P,5
- IF P<0 THEN P=0
- IF P>LEN(CANPLAYBGMFILE$)−1 THEN P=LEN(CANPLAYBGMFILE$)−1
- IF B AND 16 THEN BGMPLAY MML$[P]:WAIT 20:CONTFLG=0
- IF (B==#B) AND CONTFLG THEN BGMCONT 0:CONTFLG=FALSE
- IF (B==#X) AND !CONTFLG THEN BGMPAUSE 0,0.5:CONTFLG=TRUE
- IF B THEN CLS GOSUB @MMLDATASHOW
- RETURN
- @PRINT_BGMDATA
- LOCATE 0,0:COLOR #TMAGENTA
- PRINT ”TRACK ”+FORMAT$(”%03D”,P)
- LOCATE 2,2:COLOR #TYELLOW
- PRINT TITLE$[P];” ”*40
- LOCATE 3,3:COLOR #TCYAN
- PRINT ”作曲 ”;COMPOSER$[P];” ”*40
- LOCATE 3,5:COLOR #TWHITE
- PRINT ”・”;TEXT$[P];” ”*40
- LOCATE 3,7
- RETURN
- @MMLDATASHOW
- SERCH=0:GM=0:POINT=0:FILL GM$,””:FILL CHANNELVOLUME$,””
- LOCATE 0,9
- WHILE 1
- POINT=SERCH
- SERCH=INSTR(POINT,MML$[P],”:”)
- IF SERCH!=−1 THEN SERCH=INSTR(SERCH,MML$[P],”@”)
- IF SERCH!=−1 THEN
- NEIRO$=MID$(MML$[P],SERCH,4)
- SERCHVOL=INSTR(SERCH,MML$[P],”V”)
- IF SERCHVOL!=−1 THEN
- VOL$ =MID$(MML$[P],SERCHVOL,4)
- ENDIF
- FOR I=1 TO 3
- PART$=MID$(NEIRO$,I,1)
- VOLPART$=MID$(VOL$,I,1)
- IF ASC(PART$)>47 && ASC(PART$)<58 THEN
- GM$[GM]=GM$[GM]+PART$
- CHK=TRUE
- ENDIF
- IF ASC(VOLPART$)>47 && ASC(VOLPART$)<58 THEN
- CHANNELVOLUME$[GM]=CHANNELVOLUME$[GM]+VOLPART$
- ENDIF
- NEXT
- IF CHK THEN INC GM:CHK=FALSE
- ELSE
- BREAK
- ENDIF
- WEND
- COLOR #TLIME
- PRINT ”使用音源 ”;
- COLOR #TMAROON
- PRINT ”※MML表記のしかたによって、実際の音源と異なる表示をする場合があります。”
- ?
- COLOR #TWHITE
- FOR I=0 TO 16
- IF GM$[I]==”” THEN BREAK
- ?” ”*3+FORMAT$(”%02D”,I)+”:”+FORMAT$(”%03D”,VAL(GM$[I]))+” ”+GMNAMES$[VAL(GM$[I])]
- IF CHANNELVOLUME$[I]==”” THEN CHANNELVOLUME$[I]=”(Undifined)
- LOCATE 30,11+I:?” V:”+CHANNELVOLUME$[I]
- NEXT
- SERCH=INSTR(0,MML$[P],”T”)
- IF SERCH!=−1 THEN
- NEIRO$=MID$(MML$[P],SERCH,4)
- TEMPO$=””
- FOR I=1 TO 3
- PART$=MID$(NEIRO$,I,1)
- IF ASC(PART$)>47 && ASC(PART$)<58 THEN
- TEMPO$=TEMPO$+PART$
- ENDIF
- NEXT
- ELSE
- TEMPO$=”120”
- ENDIF
- RETURN
- @UNDERDISPLAY
- DISPLAY 1
- TOUCH OUT TT,TX,TY
- IF TT THEN
- IF TX>24 && TX<72 && TY>25*8 && TY<27*8THEN
- INPUT ”ご希望のテンポを入力”;NEWTEMPO
- SERCH=INSTR(MML$[P],”T”)
- IF SERCH!=−1 THEN
- RENEWMMLDATA$[0]=LEFT$(MML$[P],SERCH)
- RENEWMMLDATA$[1]=RIGHT$(MML$[P],LEN(MML$[P])−LEN(RENEWMMLDATA$[0])−LEN(TEMPO$)−1)
- MML$[P]=RENEWMMLDATA$[0]+”T”+STR$(NEWTEMPO)+RENEWMMLDATA$[1]
- ELSE
- DIALOG””MML$[P]=”T”+STR$(NEWTEMPO)+MML$[P]
- ENDIF
- ENDIF
- ENDIF
- DISPLAY 0
- RETURN
- ※一部を割愛しています
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・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