【mkII 専用】 2012年4月8日 公開
リアルタイムで文字入力をしながら歌わせることができる演奏プログラムです。ボタン操作でカナを入力しながら画面上の鍵盤をタッチすることでその音程で歌わせることができます。
ACLS:CLEAR:PNLTYPE "OFF" DIM A(25),B(256):Y$(3)="ャ":Y$(9)="ュ":Y$(7)="ョ" FOR I=1 TO 9:READ A:B(A)=I:NEXT FOR I=1TO 9:FOR J=1 TO 5 X$(I,(J+(J==2)-(J==3))*2+(J==1)-2)=CHR$(171+I*5+J-(I==9)*2-(I==8)*((J==3)+(J==5)*2)) NEXT:FOR K=0TO 2:X$(I,K*3+3+(K==1))=X$(I,4):NEXT:NEXT:X$(8,4)="ワ":X$(8,6)="ン" PNLSTR 2,13,"[START]+[L] <==> [START]+[R]",13 GPAGE 0:GFILL 24,40,224,128,15:GFILL 27,43,221,125,0 GPAGE 1:GCLS 250 X=41:GOSUB @BF:X=157:GOSUB @KB:GOSUB @PN:MS=1 @MAIN PB=B:B=BUTTON() S=B%16:C=B%256-S:D=512AND B:M=256AND B:M$="":Y$="":F=1:N$=X$(E,F) IF B>1023THEN GOSUB @SL IF !D*B(C)THEN E=B(C):N$=X$(E,1):P=0 IF C*D/9*B(C)THEN F=B(C):N$=X$(E,F):P=1:IF E>1AND X$(E,F)==X$(E,4)THEN Y$=Y$(F) H=(S==4)*3+(S==1)*9+(S==8)*7 IF H*(E>1)*(X$(E,3)==X$(E,4))THEN F=4:N$=X$(E,F):Y$=Y$(H) IF M*E*(!(E%2)+!(E%3))*(E-8)THEN N$=X$(E-(E==9)*3,F)+CHR$(222+(E==9)) GOSUB @BG:GPAGE 1 V=DX:DX=X:W=DY:DY=Y:X=TCHX:Y=TCHY:Q=TCHST IF Y-W<2THEN R=0 IF !T*Y*Q>174THEN GOSUB @MS:ON (X>21)*(X<85)+(X>133)*(X<197)*2+(X>222)*3-1GOSUB @BF,@KB,@PN IF !Q THEN TALKSTOP:T=0:GOSUB @KC IF Y<Q*150THEN GOSUB @TC VSYNC 1:GOTO @MAIN @TC GOSUB @MS PT=!T-(Y-W>ABS(X-V)*3)*(Y-W>8)*(R<1)*2 R=R+(PT<0):IF PT THEN GOSUB @KC:GOSUB @TK RETURN @TK GOSUB @KC:CL=GSPOIT(X,Y) IF CL==13THEN RETURN P=(CL==14):Z=A(0OR (X+P*KS/2)/KS)-P IF PZ==Z AND R>1THEN RETURN PC=CL:PX=X:PY=Y:PZ=Z:KP=1:GPAINT X,Y,6 T$=V$+STR$(Z*58+1447)+N$+M$+Y$+W$ T=1:TALK T$:U$=RIGHT$(U$+N$+Y$,32):LOCATE 0,22:?U$; IF PN THEN BEEP 22,Z*341.2-4096 RETURN @BF BF=0OR(X-21)/4 PNLSTR 0,20,"バッファ サイズ":PNLSTR 0,22,RIGHT$("0"+STR$(BF),2): GFILL 19,172,87,186,251:GFILL 21,174,85,184,13:GFILL BF*4+21,175,BF*4+25,183,251 V$="@E16@S9@T"+STR$(BF*BF*4+50)+"@N":W$="-"*(BF*14+10) RETURN @KB KB=0OR(X-101)/4:IF O+KB>23THEN KB=23-O PNLSTR 14,20,"ケンバンスウ":PNLSTR 14,22,RIGHT$("0"+STR$(KB),2): GFILL 131,172,199,186,251:GFILL 133,174,197,184,13:GFILL KB*4+101,175,KB*4+105,183,251 GOSUB @KP RETURN @PN PN=1-PN PNLSTR 27,20,"ピアノ":PNLSTR 28,22,MID$("OFFON ",PN*3,3),15 GFILL 220,172,252,186,251:GFILL 222,174,250,184,249+PN*2 @LP IF TCHST THEN @LP ELSE RETURN @KP GFILL 0,0,255,150,15:H=N-5:KS=256/KB:FOR I=0 TO KB GBOX I*KS,0,(I+1)*KS,151,13:NEXT FOR I=0 TO KB:A=(I+O+7)%7:H=H+1 IF A!=2 AND A!=5 THEN K=KS*I-KS/2+1:L=KS*I+KS/2-1:GFILL K,0,L,80,14:GBOX K,0,L,80,13:H=H+1 A(I)=H:NEXT:VSYNC 1:RETURN @KC IF KP THEN GPAINT PX,PY,PC:KP=0 RETURN @SL GOSUB @MS IF B==1540THEN ACLS:END IF PB==B THEN RETURN PS=D/512-M/256:PO=(GSPOIT(KS*(6.5+PS/2),50)==14)+1 IF O+PS>-6AND O+PS+KB<24THEN O=O+PS:N=N+PO*PS LOCATE 0,0:?O,:GOSUB @KP:RETURN @MS IF MS THEN PNLSTR 2,13," "*28:MS=0 RETURN @BG Z$=N$+Y$:L=LEN(Z$)-1 GPAGE 0:GFILL 27,43,221,125,0 FOR I=0 TO L GPUTCHR I*64-L*32+96,56,"BGF0",ASC(MID$(Z$,I,1)),0,8 NEXT:RETURN DATA 192,64,80,128,0,16,160,32,48 |
子音・母音選択 | [A] [B] [X] [Y] ボタン | |
子音確定 | [R] ボタン | |
濁音 | {L] ボタン |
[X] + [Y] ボタン | [X] ボタン | [A] + [X] ボタン |
[Y] ボタン | [A] [B] [X] [Y] ボタンを どれも押さない | [A] ボタン |
[B] + [Y] ボタン | [B] ボタン | [A] + [B] ボタン |
[X] + [Y] ボタン | [X] ボタン | [A] + [X] ボタン |
[Y] ボタン | [A] [B] [X] [Y] ボタンを どれも押さない | [A] ボタン |
[B] + [Y] ボタン | [B] ボタン | [A] + [B] ボタン |
[R]ボタン を押しながら [X] + [Y] ボタン | [R]ボタン を押しながら [X] ボタン | [R]ボタン を押しながら [A] + [X] ボタン |
[R]ボタン を押しながら [Y] ボタン | [R]ボタン を押しながら [A] [B] [X] [Y] ボタンを どれも押さない | [R]ボタン を押しながら [A] ボタン |
[R]ボタン を押しながら [B] + [Y] ボタン | [R]ボタン を押しながら [B] ボタン | [R]ボタン を押しながら [A] + [B] ボタン |
《 補 足 》 [A]+[B]といっても[A]と[B]全く同時に押す必要はなく[A]と[B]を押した状態であれば問題ないのでゆっくり押していけば確実です。 [A][B][X][Y]ボタンと[R]ボタンの同時押しができない場合は1stepと2stepの間に[R]ボタンを押す3stepで考えた方が簡単かもしれません。 なお、母音「A」(ア段の音)は2nd Stepを行う必要はなく1st Stepで決定できます。(Rボタンを押す必要はない) 拗音は「ャ」「ュ」「ョ」のみサポートしています。「ヲ」は「オ」で代用してください。 拗音は2nd stepを行わなくても1st stepの「子音+十字ボタン」で入力可能ですが、鍵盤操作をしにくいためおすすめし辛いです。 濁音は押している間のみ有効なので任意のタイミング(1st Stepでも2nd StepでもOK)で押して鍵盤をタッチするまで押し続けてください。 半濁音(「パ」行)はラ行+濁音で入力できます。 |