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

Toukou/万能MMLプレイヤー の変更点

パンくずリスト


#title(投稿プログラム : 万能MMLプレイヤー)
#contents
// ↑↑↑↑ この2行は削除しないでください。 ↑↑↑↑
//
// ←このように「//」で始まる行はコメントです。ページ本文には反映されません。
//------------------------------------------------------------------------------
// ・投稿年月日は、このページを投稿しようとしている今日の日付を半角数字で入力してください。
//   この日付は、投稿プログラムを自動的に年月日順に並べる際に使用されます。
// ↓↓↓
2017年01月15日投稿
// ↑↑↑
//------------------------------------------------------------------------------
// ・投稿者名は、将来的に投稿プログラム一覧に表示するために使用します。
// ・「名無しさん」のままにしておくと、匿名の方からの投稿として扱われます。
// ↓↓↓
投稿者 : DieMatsmot
// ↑↑↑
//------------------------------------------------------------------------------
// ・適当にタグをつけることができます。半角のコンマ区切りで複数つけられます。
//   タグをつけると、同じタグが付いたページを検索することができます。
// ★次に該当するプログラムは、特定のタグを設定するようご協力お願いします。
//   これらを設定すると、将来的に投稿プログラム一覧に目立つマークが付くようになる予定です。
// ・短いプログラム → 「1行プログラム」「数行プログラム」「1画面プログラム」タグのいずれか1つ
// ・該当するなら「ゲーム」「実用ツール」「音楽」タグのいずれか
// ↓↓↓
&tag(BGM);
// ↑↑↑

//------------------------------------------------------------------------------
// ここに概要とか書きます。
// ・** や *** で始まる行は子見出しとなります。* の数で深さが決まります。
// ・[#英数字] はページ内リンクに使用されるキーワードとなりますが、
//   消してもかまいません。ない場合はランダムな文字列が自動付与されます。
//   逆に、[#英数字] して同じものを増やしてしまった場合、目次からのリンクがちょっとおかしくなります。


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


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

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

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


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

* プログラムリスト [#kccbb6aa]
特徴:変数名が無駄に長い
OPTIONは練習のため。
 
#basic{{
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
※一部を割愛しています
}}


/////////////////////////////////
// コメントを募集したくないなら、ここから下は削除してください


* CHECKER FLAG (ひとことコメント) [#i37c0039]
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は[[掲示板>Board]]へ)
- ''takumi'' : 凄い…… (&new{2020/02/18 (火) 18:27:36};)

#comment

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