2012年01月21日投稿 / 投稿者 : 天郷思音(わぁぃ@) / タグ : 投稿プログラム 音楽 QRコード 初代対応
これは電子ピアノ(キーボード)です。
サンプルのものとは違い、鍵盤が表示されます。
十字キー(左右)で半音上げ下げができます。
Aボタンで録音を開始/終了します。
13分39秒まで録音できます。
GRPにデータを書き出す構想はToukou/プログラムのマージを参考にさせていただきました。
幅が8ドットしかないのでかなり弾きにくい。
- VISIBLE 0,1,1,0,1,1
- PNLTYPE”OFF”
- CLS:BGMSTOP
- FOR C=0 TO 1
- SPPAGE C:SPCLR
- BGPAGE C:GOSUB @BGCLR
- GPAGE 1−C:GCLS 0
- NEXT
- BGOFS 0,0,0
- CLEAR
- DIM RM$(12)
- DATA”C”,”1”,”D”,”2”,”E”,”F”,”3”,”G”,”4”,”A”,”5”,”B”
- DATA”91122993344559”
- DATA”91122993344559”
- DATA”91122993344559”
- DATA”CCDDEEFFGGAABB”
- DATA”CCDDEEFFGGAABB”
- DATA”CCDDEEFFGGAABB”
- DATA”CCDDEEFFGGAABB”
- DATA 21,22
- DATA 18,18
- DATA 22,20
- DATA 16,”А”,1,3
- DATA 32,”Б”,24,1
- DATA 64,”Ф”,13,3
- DATA 128,”Х”,1,2
- FOR I=0 TO 11
- READ RM$(I)
- NEXT
- FOR I=0 TO 767
- PRINT” ”;
- NEXT
- FOR I=0 TO 6
- READ P$
- LOCATE 0,I+10
- PRINT MID$(P$,10,4);P$;P$
- NEXT
- ICONCLR 3
- FOR I=0 TO 2
- READ NI(I),NN(I)
- ICONSET I,NI(I)
- NEXT
- FOR I=0 TO 3
- READ BM(I),BM$(I),BX,BY
- LOCATE BX,BY
- FOR J=0 TO 1+(I==1)*4
- PRINT BM$(I);
- NEXT
- NEXT
- FOR I=0 TO 31
- FOR J=0 TO 23
- C$=CHR$(CHKCHR(I,J))
- C=((C$!=” ”)*15−(VAL(C$)>0 AND VAL(C$)<9))*(ASC(C$)>32)
- BGPUT 0,I,J,C,0,0,0
- IF C$!=” ” AND I%2+(VAL(C$)!=0) THEN PNLSTR I,J,”и ”,2
- NEXT
- NEXT
- PNLSTR 24,1,”Б:EXIT”
- PNLSTR 2,6,”йййййййй”
- SPSET 0,94,0,0,1,0
- SPOFS 0,57,45:V=100
- @LOOP
- IC=ICONCHK()
- TC=TCHST:TX=TCHX:TY=TCHY
- OB=B:B=BUTTON()
- I=0:G=0:T=T+R:S=S+P
- PNLSTR 1,3,STR$(N+1)
- PNLSTR 13,2,STR$(V)+” ”
- PNLSTR 1,3,STR$(T)+” ”
- PNLSTR 13,3,STR$(S)+” ”
- IF TC THEN GOSUB @CHK
- IF 1+IC THEN N=IC
- IF TY>45 AND TY<55 THEN IF TX>7 AND TX<73 THEN V=(TX−8)*2:SPOFS 0,TX,45:IF V>127 THEN V=127
- F=(B==8)−(B==4)
- IF B==OB THEN @SKIP
- IF B==16 THEN IF 1−R THEN GCLS 0:R=1:GOTO @SKIP
- IF B==64 THEN IF 1−P THEN P=1:GOTO @SKIP
- IF B==16 THEN IF R THEN T=0:R=0
- IF B==64 THEN IF P THEN S=0:P=0
- IF B==128 THEN N=(N+1)*(N<2)
- IF B==32 THEN @EXIT
- @SKIP
- IF T>49139 THEN R=0:T=0
- IF S>49139 THEN P=0:S=0
- IF R THEN GPSET (T+1)%256,(T+1)/256,I
- IF P THEN GOSUB @PLAY2
- VSYNC 1
- GOTO @LOOP
- @CHK
- IF I<4 THEN IF CHKCHR(TX/8,TY/8)==ASC(BM$(I)) THEN B=BM(I):G=1
- IF I>11 OR G==1 THEN I=0:RETURN
- IF CHKCHR(TX/8,TY/8)==ASC(RM$(I)) THEN @PLAY
- I=I+1
- GOTO @CHK
- @PLAY
- I=I+FLOOR((TX−32)/112)*12
- BEEP NN(N),(I+F)*4096/12,V
- I=I+50
- RETURN
- @PLAY2
- M=GSPOIT(S%256,S/256)
- IF M<26 OR M>74 THEN RETURN
- BEEP NN(N),(M−50)*4096/12,V
- RETURN
- @BGCLR
- FOR I=0 TO 31
- FOR J=0 TO 23
- BGPUT 0,I,J,0,0,0,0
- NEXT
- NEXT
- RETURN
- @EXIT
- PNLTYPE”KYA”
- CLS:SPCLR:GOSUB @BGCLR
- CLEAR
- VISIBLE 1,1,1,1,1,1
- END
- VISIBLE 0,1,1,0,0,0
- PNLTYPE”OFF”
- CLS:BGPAGE 1
- BGMSTOP:CLEAR
- DIM RM$(12)
- DATA”C”,”1”,”D”,”2”,”E”,”F”,”3”,”G”,”4”,”A”,”5”,”B”
- FOR I=0 TO 11
- READ RM$(I)
- NEXT
- DATA”91122993344559”
- DATA”91122993344559”
- DATA”91122993344559”
- DATA”CCDDEEFFGGAABB”
- DATA”CCDDEEFFGGAABB”
- DATA”CCDDEEFFGGAABB”
- DATA”CCDDEEFFGGAABB”
- FOR I=0 TO 767
- PRINT” ”;
- NEXT
- FOR I=0 TO 6
- READ P$
- LOCATE 0,I+10
- PRINT P$;P$
- NEXT
- FOR I=0 TO 31
- FOR J=0 TO 23
- C$=CHR$(CHKCHR(I,J))
- C=((C$!=” ”)*15)−((VAL(C$)>0 AND VAL(C$)<9))
- BGPUT 0,I,J,C,0,0,0
- IF C$!=” ” AND I%2+(VAL(C$)!=0) THEN PNLSTR I,J,”и ”,2
- NEXT
- NEXT
- PNLSTR 24,1,”Х:EXIT”
- @LOOP
- OB=B:B=BUTTON()
- PNLSTR 1,3,STR$(T)+” ”
- PNLSTR 12,3,STR$(S)+” ”
- I=0:T=T+R:S=S+P
- IF TCHST THEN GOSUB @CHK
- IF B==OB THEN @SKIP
- IF B==16 THEN IF 1−R THEN GCLS 0:R=1:GOTO @SKIP
- IF B==64 THEN IF 1−P THEN P=1:GOTO @SKIP
- IF B==16 THEN IF R THEN T=0:R=0
- IF B==64 THEN IF P THEN S=0:P=0
- IF B==128 THEN @EXIT
- @SKIP
- IF T>49139 THEN R=0:T=0
- IF S>49139 THEN P=0:S=0
- IF R THEN GPSET (T+1)%256,(T+1)/256,I
- IF P THEN GOSUB @PLAY2
- VSYNC 1
- GOTO @LOOP
- @CHK
- IF I>11 THEN RETURN
- IF CHKCHR(TCHX/8,TCHY/8)==ASC(RM$(I)) THEN @PLAY
- I=I+1
- GOTO @CHK
- @PLAY
- F=(B==8)−(B==4)
- I=I+FLOOR(TCHX/112)*12
- BEEP 21,(I+F)*4096/12
- I=I+50
- RETURN
- @PLAY2
- M=GSPOIT(S%256,S/256)
- IF M<26 OR M>74 THEN RETURN
- BEEP 21,(M−50)*4096/12
- RETURN
- @EXIT
- PNLTYPE”KYA”
- CLS:CLEAR
- VISIBLE 1,1,1,1,1,1
- END
組み込むプログラムのメインループにVSYNC 1が必要です。
- @PLAYBGM
- BGM=GSPOIT(BGMTIME%256,BGMTIME/256)
- IF BGM<26 OR BGM>74 THEN RETURN
- BEEP 21,(BGM−50)*4096/12
- RETURN
この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談はOFコーナーや掲示板で)
付属機能のご要望もどうぞ。
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.231 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:02 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30