プチコンまとめArchive

投稿プログラム : 電子ピアノ

パンくずリスト

このページの最終更新 : 2021/07/12 (月) 12:36:20

2012年01月21日投稿 / 投稿者 : 天郷思音(わぁぃ@) / タグ : 投稿プログラム 音楽 QRコード 初代対応

概要

これは電子ピアノ(キーボード)です。

特徴

サンプルのものとは違い、鍵盤が表示されます。

付属機能

ワンキーモジュレーション

十字キー(左右)で半音上げ下げができます。

録音/再生

Aボタンで録音を開始/終了します。
13分39秒まで録音できます。
GRPにデータを書き出す構想はToukou/プログラムのマージを参考にさせていただきました。

スクリーンショット・動画

電車の運転台みたいにいろいろとボタンがあるバージョン3

piano3.JPG

無理やり4オクターブ出せるようにした場合

PIANO_x2.JPG

幅が8ドットしかないのでかなり弾きにくい。

プログラムリスト

バージョン4 (QR コード)

12
qr0.pngqr1.png
3-
qr2.png

バージョン3

修正
  • "NN()は音色だとしたらIが2以上になるのはまずいのかな?"⇒修正しました。(I)ではなく(N)でした。(2012/02/17 (金) 22:52:08)
  • "VISIBLEのSPのパラメータは1にしなくてよいの?"⇒修正しました。(2012/02/17 (金) 22:52:08)
  • "カウンターのボタン表示らしきところに鍵盤を構成すべきBGが上書きされているような感じです。"⇒修正しました。(2012/02/17 (金) 22:52:08)
  • "NN()については@PLAY2のほう(103行)も修正したほうがよい"⇒修正しました。(2012/02/18 (土) 16:57:49)
  • "96行目のFLOOR((TX/112)-32)→FLOOR((TX-32)/112)にしないと"⇒修正しました。(2012/02/18 (土) 16:57:49)
  • "72行目のN=IC→N=IC-1にしないと"⇒手元のプログラムに合わせました。(35~39行目もご確認ください。)(2012/02/18 (土) 16:57:49)
  • "73行目あたりのSPのX座標チェックがあまいのか画面右端までいってしまう。深いほうのIF文条件TY→TXでは?"⇒修正しました。(2012/02/18 (土) 16:57:49)
  • "各ボタンに対応したところをタッチすると処理が戻ってこない"⇒修正しました。(2012/02/24 (金) 21:14:17)
  • "67、68行目のPNLSTRの座標が微妙に違う"⇒修正しました。(2012/02/24 (金) 21:14:17)
  • "53行目のカッコが足りないのでは"⇒修正しました。(2012/02/24 (金) 21:14:17)
  • "色々やってみたけで今のソースのままだと上画面にP$が表示されません"⇒修正しました。(誤って表示後に初期化しておりました。)(2012/02/24 (金) 21:14:17)
プログラムリスト
  1. VISIBLE 0,1,1,0,1,1 
  2. PNLTYPE”OFF” 
  3. CLS:BGMSTOP
  4. FOR C=0 TO 1
  5. SPPAGE C:SPCLR
  6. BGPAGE C:GOSUB @BGCLR
  7. GPAGE 1-C:GCLS 0
  8. NEXT
  9. BGOFS 0,0,0
  10. CLEAR 
  11. DIM RM$(12) 
  12. DATA”C”,”1”,”D”,”2”,”E”,”F”,”3”,”G”,”4”,”A”,”5”,”B”  
  13. DATA”91122993344559” 
  14. DATA”91122993344559” 
  15. DATA”91122993344559” 
  16. DATA”CCDDEEFFGGAABB” 
  17. DATA”CCDDEEFFGGAABB” 
  18. DATA”CCDDEEFFGGAABB” 
  19. DATA”CCDDEEFFGGAABB” 
  20. DATA 21,22
  21. DATA 18,18
  22. DATA 22,20
  23. DATA 16,”А”,1,3
  24. DATA 32,”Б”,24,1
  25. DATA 64,”Ф”,13,3
  26. DATA 128,”Х”,1,2
  27. FOR I=0 TO 11 
  28.  READ RM$(I) 
  29. NEXT
  30. FOR I=0 TO 767
  31.  PRINT” ”; 
  32. NEXT
  33. FOR I=0 TO 6 
  34.  READ P$ 
  35.  LOCATE 0,I+10 
  36.  PRINT MID$(P$,10,4);P$;P$ 
  37. NEXT
  38. ICONCLR 3
  39. FOR I=0 TO 2
  40.  READ NI(I),NN(I)
  41.  ICONSET I,NI(I)
  42. NEXT
  43. FOR I=0 TO 3
  44.  READ BM(I),BM$(I),BX,BY
  45.  LOCATE BX,BY
  46.  FOR J=0 TO 1+(I==1)*4
  47.   PRINT BM$(I);
  48.  NEXT
  49. NEXT
  50. FOR I=0 TO 31 
  51.  FOR J=0 TO 23 
  52.   C$=CHR$(CHKCHR(I,J)) 
  53.   C=((C$!=” ”)*15-(VAL(C$)>0 AND VAL(C$)<9))*(ASC(C$)>32) 
  54.   BGPUT 0,I,J,C,0,0,0 
  55.   IF C$!=” ” AND I%2+(VAL(C$)!=0) THEN PNLSTR I,J,”и ”,2 
  56.  NEXT 
  57. NEXT 
  58. PNLSTR 24,1,”Б:EXIT”
  59. PNLSTR 2,6,”йййййййй” 
  60. SPSET 0,94,0,0,1,0
  61. SPOFS 0,57,45:V=100
  62. @LOOP
  63. IC=ICONCHK()
  64. TC=TCHST:TX=TCHX:TY=TCHY
  65. OB=B:B=BUTTON()
  66. I=0:G=0:T=T+R:S=S+P
  67. PNLSTR 1,3,STR$(N+1)
  68. PNLSTR 13,2,STR$(V)+”  ”
  69. PNLSTR 1,3,STR$(T)+”    ” 
  70. PNLSTR 13,3,STR$(S)+”    ”
  71. IF TC THEN GOSUB @CHK
  72. IF 1+IC THEN N=IC
  73. 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
  74. F=(B==8)-(B==4) 
  75. IF B==OB THEN @SKIP 
  76. IF B==16 THEN IF 1-R THEN GCLS 0:R=1:GOTO @SKIP 
  77. IF B==64 THEN IF 1-P THEN P=1:GOTO @SKIP 
  78. IF B==16 THEN IF R THEN T=0:R=0 
  79. IF B==64 THEN IF P THEN S=0:P=0 
  80. IF B==128 THEN N=(N+1)*(N<2)
  81. IF B==32 THEN @EXIT 
  82. @SKIP 
  83. IF T>49139 THEN R=0:T=0 
  84. IF S>49139 THEN P=0:S=0 
  85. IF R THEN GPSET (T+1)%256,(T+1)/256,I 
  86. IF P THEN GOSUB @PLAY2 
  87. VSYNC 1 
  88. GOTO @LOOP 
  89. @CHK
  90. IF I<4 THEN IF CHKCHR(TX/8,TY/8)==ASC(BM$(I)) THEN B=BM(I):G=1
  91. IF I>11 OR G==1 THEN I=0:RETURN 
  92. IF CHKCHR(TX/8,TY/8)==ASC(RM$(I)) THEN @PLAY 
  93. I=I+1 
  94. GOTO @CHK 
  95. @PLAY
  96. I=I+FLOOR((TX-32)/112)*12 
  97. BEEP NN(N),(I+F)*4096/12,V 
  98. I=I+50 
  99. RETURN 
  100. @PLAY2 
  101. M=GSPOIT(S%256,S/256) 
  102. IF M<26 OR M>74 THEN RETURN 
  103. BEEP NN(N),(M-50)*4096/12,V
  104. RETURN
  105. @BGCLR
  106. FOR I=0 TO 31
  107.  FOR J=0 TO 23
  108.   BGPUT 0,I,J,0,0,0,0
  109.  NEXT
  110. NEXT
  111. RETURN
  112. @EXIT 
  113. PNLTYPE”KYA” 
  114. CLS:SPCLR:GOSUB @BGCLR
  115. CLEAR 
  116. VISIBLE 1,1,1,1,1,1 
  117. END


バージョン2

修正
  • "29行目,21文字目 }}が入っています。 39行目,22文字目&40行目,49文字目 FALSEでは?"⇒修正しました。
  • "もうひとつすいません。39,40行目あたりのIF文の内容についてと、ボタン判定も一回だけ受け取る処理が必要かと思います。"⇒修正しました。ただし、ダブルIFは問題ありません。(2012/01/31 (火) 20:52:36)
  • "できれば再生プログラムをメインプログラムに吸収できないでしょうか?" ⇒追加しました。(2012/02/03 (金) 21:19:04)
  • システム変数(TRUE,FALSE)と普通の1,0が混在していたのを普通の1,0に統一しました。(2012/02/03 (金) 21:19:04)
  • "うまく再生できなかった"⇒修正しました。(2012/02/11 (土) 13:02:48)
  • "40行目のIFが文法エラーになる"⇒修正しました。(2012/02/11 (土) 13:02:48)
プログラムリスト
  1. VISIBLE 0,1,1,0,0,0
  2. PNLTYPE”OFF”
  3. CLS:BGPAGE 1
  4. BGMSTOP:CLEAR
  5. DIM RM$(12)
  6. DATA”C”,”1”,”D”,”2”,”E”,”F”,”3”,”G”,”4”,”A”,”5”,”B”
  7. FOR I=0 TO 11
  8.  READ RM$(I)
  9. NEXT
  10. DATA”91122993344559”
  11. DATA”91122993344559”
  12. DATA”91122993344559”
  13. DATA”CCDDEEFFGGAABB”
  14. DATA”CCDDEEFFGGAABB”
  15. DATA”CCDDEEFFGGAABB”
  16. DATA”CCDDEEFFGGAABB”
  17. FOR I=0 TO 767
  18.  PRINT” ”;
  19. NEXT
  20. FOR I=0 TO 6
  21.  READ P$
  22.  LOCATE 0,I+10
  23.  PRINT P$;P$
  24. NEXT
  25. FOR I=0 TO 31
  26.  FOR J=0 TO 23
  27.   C$=CHR$(CHKCHR(I,J))
  28.   C=((C$!=” ”)*15)-((VAL(C$)>0 AND VAL(C$)<9))
  29.   BGPUT 0,I,J,C,0,0,0
  30.   IF C$!=” ” AND I%2+(VAL(C$)!=0) THEN PNLSTR I,J,”и ”,2
  31.  NEXT
  32. NEXT
  33. PNLSTR 24,1,”Х:EXIT”
  34. @LOOP
  35. OB=B:B=BUTTON()
  36. PNLSTR 1,3,STR$(T)+”    ”
  37. PNLSTR 12,3,STR$(S)+”    ”
  38. I=0:T=T+R:S=S+P
  39. IF TCHST THEN GOSUB @CHK
  40. IF B==OB THEN @SKIP
  41. IF B==16 THEN IF 1-R THEN GCLS 0:R=1:GOTO @SKIP
  42. IF B==64 THEN IF 1-P THEN P=1:GOTO @SKIP
  43. IF B==16 THEN IF R THEN T=0:R=0
  44. IF B==64 THEN IF P THEN S=0:P=0
  45. IF B==128 THEN @EXIT
  46. @SKIP
  47. IF T>49139 THEN R=0:T=0
  48. IF S>49139 THEN P=0:S=0
  49. IF R THEN GPSET (T+1)%256,(T+1)/256,I
  50. IF P THEN GOSUB @PLAY2
  51. VSYNC 1
  52. GOTO @LOOP
  53. @CHK
  54. IF I>11 THEN RETURN
  55. IF CHKCHR(TCHX/8,TCHY/8)==ASC(RM$(I)) THEN @PLAY
  56. I=I+1
  57. GOTO @CHK
  58. @PLAY
  59. F=(B==8)-(B==4)
  60. I=I+FLOOR(TCHX/112)*12
  61. BEEP 21,(I+F)*4096/12
  62. I=I+50
  63. RETURN
  64. @PLAY2
  65. M=GSPOIT(S%256,S/256)
  66. IF M<26 OR M>74 THEN RETURN
  67. BEEP 21,(M-50)*4096/12
  68. RETURN
  69. @EXIT
  70. PNLTYPE”KYA”
  71. CLS:CLEAR
  72. VISIBLE 1,1,1,1,1,1
  73. END

再生用ルーチン

組み込むプログラムのメインループにVSYNC 1が必要です。

  1. @PLAYBGM 
  2. BGM=GSPOIT(BGMTIME%256,BGMTIME/256) 
  3. IF BGM<26 OR BGM>74 THEN RETURN 
  4. BEEP 21,(BGM-50)*4096/12
  5. RETURN

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

この作品に対するコメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談はOFコーナー掲示板で)
付属機能のご要望もどうぞ。

  • バイカウントメルビル : 録音機能なんかあったらおもしろいしつかえるなーと。 (2012/01/22 (日) 09:57:39)
  • わぁぃ@ : 追加しました。 (2012/01/22 (日) 14:23:19)
  • バイカウントメルビル : さっすがわぁいさん!仕事が早い! (2012/01/22 (日) 19:07:57)
  • バイカウントメルビル : 音や音量を変えることができる機能や、エコーの機能(ON/OFF可)がつくといいと思います。 (2012/01/22 (日) 19:09:37)
  • わぁぃ@ : 音量と音はすぐできますが、エコーはちょっと難しいですね。とりあえず作ります。あと、保存はSAVE"GRP:○○でできます。(分かってるかもしれませんが) (2012/01/22 (日) 19:14:47)
  • バイカウントメルビル : グラフィックで保存とは画期的ですね(^^)参考にさせていただきます(笑) (2012/01/22 (日) 19:24:46)
  • わぁぃ@ : プログラムのマージの処理の応用ですから、そちらにもご挨拶いただければ幸いです。 (2012/01/22 (日) 20:56:12)
  • バイカウントメルビル : ほんとだ、ありがとうございます!(^^)! (2012/01/23 (月) 00:03:39)
  • RND 128 : 作曲機能とかほしいかも。 29行目,21文字目 }}が入っています。 39行目,22文字目&40行目,49文字目 FALSEでは? (2012/01/23 (月) 02:03:03)
  • RND 128 : もうひとつすいません。39,40行目あたりのIF文の内容についてと、ボタン判定も一回だけ受け取る処理が必要かと思います。 (2012/01/23 (月) 02:51:35)
  • わぁぃ@ : IF - THEN IF -THEN(個人的に”ダブルIF”と命名)は問題ありません。 (2012/01/27 (金) 15:58:46)
  • バイカウントメルビル : ↑へ~、知らなかった。でもANDでよくね?w・・・と思ったけどその後が実行されないのかw (2012/01/27 (金) 18:43:05)
  • わぁぃ@ : 字数的には多くなりますが、必ず2回比較するより、1つ条件を満たしたときのみもう1回比較するようにしたほうが無駄がないという思考によるこだわり。 (2012/01/27 (金) 18:50:21)
  • わぁぃ@ : 他には、条件aか条件bを満たして、条件cを満たしていればBEEPという文がIF 条件a OR 条件b AND 条件c THEN BEEPがあっているか分からない場合などに使います。 (2012/01/27 (金) 18:54:59)
  • わぁい@ : キーの大きさを半分にすれば4オクターブ出せますが、非常に弾きにくいです。あとで画像載せます。 (2012/01/27 (金) 19:44:12)
  • 初心者 : Aボタンを押しても左上のカウンターが動作しないのですが、初心者で入力判定らしきものがよく解らず修正できません。(39,40行あたりですよね...) (2012/01/30 (月) 14:57:53)
  • わぁぃ@ : OLD処理忘れてました。すみません。 (2012/01/30 (月) 21:42:19)
  • わぁぃ@ : ↑修正しました。 (2012/01/31 (火) 20:54:43)
  • わぁぃ@ : ↑の修正が不完全なことが分かりました。再修正しますのでいましばらくお待ちください。 (2012/02/01 (水) 19:33:16)
  • わぁぃ@ : 再修正できました。 (2012/02/01 (水) 22:36:24)
  • 初心者 : ありがとうございました。録音はうまくいきました。できれば再生プログラムをメインプログラムに吸収できないでしょうか?あと再生を途中で停止するにはどのような処理を追加したらよいのでしょうか? (2012/02/02 (木) 16:29:37)
  • 初心者 : もう一つ。押した鍵盤が光るとそれっぽくないですか?(自分で改良しようとしたが失敗してしまった…) (2012/02/02 (木) 16:51:42)
  • わぁぃ@ : 難しいうえ、重くなるので今のところ追加しません。 (2012/02/02 (木) 17:21:58)
  • わぁぃ@ : 録音しながら再生できるようにできました。プログラムリストは夕方ごろ更新します。 (2012/02/03 (金) 12:43:16)
  • わぁぃ@ : ↑更新しました。 (2012/02/04 (土) 12:00:44)
  • わぁぃ@ : どうでもいいバグ発見。録音中に鍵盤以外のところをタッチすると、値が12になる(黄色い先になる)本来は0だが、どっちみち範囲外ではじかれるので問題ない (2012/02/05 (日) 10:50:53)
  • わぁぃ@ : ↑1行目の最後の0を1にすると分かる (2012/02/05 (日) 10:52:23)
  • 初心者 : 待ている間に鍵盤を2段(4オクターブにしたくて…)にしようとして、ひっちゃかめっちゃかになってしまったのですが、これって実現可能ですか? (2012/02/06 (月) 10:32:13)
  • 初心者 : 自動演奏っぽいことはできるのでしょうか?(セーブ・ロード機能を組み込まないとだめなのかな…) (2012/02/06 (月) 10:37:29)
  • 名無しさん : 40行目のIFが文法エラーになるんですけど何間違えてるんでしょうか… (2012/02/06 (月) 16:13:50)
  • わぁぃ@ : ↑=は2こでした。すみません。 (2012/02/06 (月) 17:31:10)
  • わぁぃ@ : >>初心者さん:2段化は可能です。作曲は乱数でどうぞ。 (2012/02/06 (月) 17:36:08)
  • 名無しさん : ↑3です、ありがとうございました。ボタンで音色変更出来るようにいじりたいんですがどうすればいいですかね…自力じゃどうにもわからなくて(汗 (2012/02/07 (火) 22:06:24)
  • わぁぃ@ : 週末に最新版を載せるので少々お待ちください。 (2012/02/08 (水) 17:06:06)
  • 名無しさん : ↑ありがとうございます! (2012/02/08 (水) 18:13:36)
  • 初心者 : うまく再生できなかったので、44行のR→P、65行のI→Sと適当にいぎったら、とりあえずうまくいきました。これでよいのでしょうか? (2012/02/10 (金) 11:16:23)
  • プチコン : 30行目のNの逆みたいなのの打ちかたが分からないのと0とOの区別がorz (2012/02/10 (金) 17:54:38)
  • プチコン : 30行目のNの逆みたいなのの打ちかたが分からないのと0とOの区別がorz (2012/02/10 (金) 17:55:03)
  • わぁぃ@ : ↑Nは右よりの|です。あとOという変数は使ってないはずです。 (2012/02/10 (金) 19:07:27)
  • わぁぃ@ : >>初心者さん:RはRECのRなのでちがいます。I→Sは正解です。 (2012/02/11 (土) 13:03:56)
  • 名無しさん : 毎回すいません、最新版打ち込んだら50行目のFORが文法エラーになったんですけど… (2012/02/13 (月) 09:29:20)
  • わぁぃ@ : FOR I=0 TO 31はエラー因子ないですよ。 (2012/02/13 (月) 15:50:51)
  • 初心者 : 最新版の鍵盤がまったく表示されないんですが、プログラムのどのあたりを確認したらよいのですか?(入力ミスはないと思います…) (2012/02/14 (火) 11:05:17)
  • 初心者 : それと実際の画面はどんな感じなのですか?(スプライトはボリュームかな…) (2012/02/14 (火) 11:07:09)
  • 七夜 : 40行目がundefind label(40,IF)と出るのですがどうしたら… (2012/02/14 (火) 19:50:53)
  • 七夜 : すみません自己解決しました。ただ、55行目が何回やってもエラーします。subscript out of range (55,ASC)と出ます。どうしたらいいですか? (2012/02/14 (火) 20:21:18)
  • わぁぃ@ : 55行目、ASCないはず。VALでは? (2012/02/14 (火) 21:42:14)
  • わぁぃ@ : 鍵盤出ない件は状況が分からないと。全く何も出ないですか?(他のパーツとかも) (2012/02/14 (火) 21:44:56)
  • 名無しさん : 55行目のエラーが出たときの変数Iの値が0~11の範囲内に収まってないように思います。エラーが出たら?I を実行して値を確認してみると何かわかるかもしれません。 (2012/02/14 (火) 22:24:21)
  • 名無しさん : 多分七夜さんが入力されたのはバージョン2なのではないかと思ったので書かせてもらいました。 (2012/02/14 (火) 22:34:41)
  • わぁぃ@ : バージョン2ですか?(処理が抜けてた記憶が・・・) (2012/02/14 (火) 22:38:48)
  • わぁぃ@ : 確認しましたが、IF I>11 THEN RETURNではじく仕様になっているので問題ないですね。 (2012/02/14 (火) 22:43:50)
  • 七夜 : ASCではないのですか。valにしてみたのですが、実行すると下に白い点線が出てきて、鍵盤の絵がなく、タッチすると音がなるんですが…バージョン2は修正版だと思ったら違うんですか…? (2012/02/14 (火) 23:51:13)
  • わぁぃ@ : バージョン2ならASCであってます。上にかかれているようなコードが抜けていないか確認を。 (2012/02/15 (水) 17:15:58)
  • わぁぃ@ : いくらバージョンアップしても直接アップロードしない限り誤植は無くならないものです。 (2012/02/15 (水) 17:21:56)
  • 七夜 : あれ…下手したら55行目文字化けしてるかな…何回打ち直しても直らない…すみませんが55行目をコメントで書いてください… (2012/02/15 (水) 17:34:16)
  • 七夜 : あっちなみにバージョン2です。うまく起動しますかね (2012/02/15 (水) 17:37:55)
  • 名無しさん : IF CHKCHR(TCHX/8,TCHY/8)==ASC(RM$(I)) THEN @PLAY 以上55行目をコメントで打ってみました。ちゃんと表示されてるかな?ちなみに、55行目でエラーが出たから55行目に間違いがあるとは限らないですよ。 (2012/02/15 (水) 23:02:55)
  • 名無しさん : IF CHKCHR(TCHX/8,TCHY/8)==ASC(RM$(I)) THEN @PLAY 以上55行目をコメントで打ってみました。ちゃんと表示されてるかな?ちなみに、55行目でエラーが出たから55行目に間違いがあるとは限らないですよ。 (2012/02/15 (水) 23:32:30)
  • 名無しさん : 間違えて2度書きしてしまいました。ごめんなさい。 (2012/02/15 (水) 23:33:58)
  • 名無しさん : プチコンってやり方次次第で何でも出来るんですか。 (2012/02/16 (木) 00:07:30)
  • 名無しさん : ついでに私はまだ少6です。 (2012/02/16 (木) 00:11:00)
  • 初心者 : カウンターのボタン表示らしきところに鍵盤を構成すべきBGが上書きされているような感じです。録音用のカウンターは動くけれど鍵盤は表示されません。ちなみに「FOR I=0 TO 767:?” ”;NEXT」をVer2同様にDATA文のすぐ後にもっていくと、鍵盤は表示されるがタッチすると@PLAYのBEEP文でエラーがでます。(内容はNN(I)のIの値が大きすぎるみたいな感じだと思います) (2012/02/16 (木) 12:41:56)
  • 初心者 : どうやら上画面に読み取るキャラがないような感じです…あとNN()は音色だとしたらIが2以上になるのはまずいのかな? (2012/02/16 (木) 12:50:04)
  • わぁぃ@ : 掲載時に手を加えたせいかな。(読み込みの配列を手元のプログラムと変えました。) (2012/02/16 (木) 18:33:57)
  • 名無しさん : やっぱり普通の人が書くと完全に無視されますね。 (2012/02/16 (木) 19:06:14)
  • わぁぃ@ : いえいえ。今日はコメントが多いもので。1つずつ返信しますね。金曜日には。 (2012/02/16 (木) 19:38:41)
  • わぁぃ@ : すみません。NN(I)→NN(N)ですね。 (2012/02/16 (木) 19:41:13)
  • わぁぃ@ : >>プチコンってやり方次第で(略):通信以外自由にできますね。 (2012/02/16 (木) 19:43:49)
  • qa : 私は初心者だからプログラムとかそういうのはまったく分からんです講座とか見ても肝心なところがほとんど書かれてないし、、、 (2012/02/16 (木) 22:27:54)
  • 名無しさん : こういうコメントを書くのって色々大変じゃないですか? (2012/02/16 (木) 22:30:11)
  • qa : すいません。。つけてませんでした。 (2012/02/16 (木) 22:34:39)
  • qa : すいません。。つけてませんでした。 (2012/02/16 (木) 22:37:35)
  • qa : 毎度すいません。二度書きしてました。本当すいません。 (2012/02/16 (木) 22:41:32)
  • 初心者 : VISIBLEのSPのパラメータは1にしなくてよいの?スプライトが表示されないのではないですか。ちなみにVer2はうまく動いてますよ! (2012/02/17 (金) 12:20:18)
  • わぁぃ@ : ↑あー。確かに。 (2012/02/17 (金) 15:26:59)
  • わぁぃ@ : >>BGが上書きされて:*(ASC(C$)>32)が抜けていたようです。 (2012/02/17 (金) 22:48:28)
  • 名無しさん : 4オクターブのやつはもう少し大きく出来ますか? (2012/02/17 (金) 23:38:04)
  • 名無しさん : すいません···むりですよね。 (2012/02/17 (金) 23:39:43)
  • わぁぃ@ : ↑2段にすればできる。 (2012/02/18 (土) 08:42:42)
  • 名無しさん : あ、できました。結構やりやすいです。わぁいさん、ありがとうございます。 (2012/02/18 (土) 11:29:44)
  • 初心者 : 自分なりにいろいろ修正して動くようにしてみました。参考までに・・・①40行目の画面をスペースでうめる処理はDATA文のすぐあと(おそらく29行のあとでもだいじょうぶなのかな?)にしないと鍵盤が表示されないようです。②NN()については@PLAY2のほう(103行)も修正したほうがよいのでは。③96行目のFLOOR((TX/112)-32)→FLOOR((TX-32)/112)にしないと今回追加した右端の方をタッチするとオーバーフローするのでは。④72行目のN=IC→N=IC-1にしないとシステムアイコンで音色を選択した時に結果がずれるのでは。⑤73行目あたりのSPのX座標チェックがあまいのか画面右端までいってしまう。深いほうのIF文条件TY→TXでは?(未確認)⑥各ボタンに対応したところをタッチすると処理が戻ってこない?(確認中) (2012/02/18 (土) 13:05:04)
  • 初心者 : 長々とすいません。とりあえず①~④を修正すればVer3も快調に動いています。それとエコーの実装を試みてみたが、言われたとおり処理が重くなってしまった。(半音さげて追っかけ再生じゃだめなのかな?VSYNCではなくてMAINCNTLを使ってみたが、それでも処理落ちしてるみたい…) (2012/02/18 (土) 13:14:24)
  • わぁぃ@ : DATA文の順序は調査中です。すみません。 (2012/02/18 (土) 16:58:37)
  • 初心者 : ↑↑⑥について91行目のI=0のあとにG=0を追加することでかいけつしました。例えばタッチで録音を開始すると鍵盤が反応しなくなるみたいな…。修正はこれでよいのかな? (2012/02/20 (月) 15:28:02)
  • 初心者 : 53行目のカッコが足りないのでは?。C=(((C$~<9)))*(ASC~にしたらちゃんと動きました。 (2012/02/20 (月) 15:31:06)
  • 初心者 : あとは表示がらみなので別に修正しなくてもいいとおもうのですが一応…①55行目の分岐条件の論理式にAND C!=0を追加しないと最初の画面表示の時、一瞬縦線が表示されるいたいです。(でも数字で上書きされるのできにしなくてもよいかも?)。②67、68行目のPNLSTRの座標が微妙に違う?スクリーンショットを参考に修正すると67行→1,2 68行→12,2 となりそうですね。これをしないと①でうまく上書きされないようです。 (2012/02/20 (月) 15:38:20)
  • 初心者 : 以上でVer3も快調に動作しております。いろいろありがとうございました。 (2012/02/20 (月) 15:40:13)
  • 初心者 : あとひとつ。録音時の音色はいっしょに保存できないのですか?できたら本格的な演奏もできそうですね!! (2012/02/20 (月) 15:50:00)
  • 初心者 : ↑×5 色々やってみたけで今のソースのままだと上画面にP$が表示されません。Ver3で処理を変更したのかな? (2012/02/20 (月) 15:59:36)
  • わぁぃ@ : いろいろ修正しました。ところで、このプログラムがどういう仕組みで動いているかご存知ですか? (2012/02/24 (金) 21:23:12)
  • 初心者 : GRP画面を使用して録音&再生をしているのはわかりました。鍵盤はタッチした座標を使って上画面のASCIIコードを読み取って音を鳴らしてるぐらいまでは何とか理解できました。他人のプログラムを読んでいくのは、なかなかたいへんですね。おそらく、今のままでは音色を一緒に保存するのはできないんですね。 (2012/02/27 (月) 12:17:58)
  • 初心者 : 知識がある方のプログラムは特殊な処理や論理式を多用しているので理解するのがたいへんですが、こちらでは細かい所までコメントしていただいたので参考になりました。 (2012/02/27 (月) 12:35:03)
  • わぁぃ@ : 最新版出来ました!メトロノームとエコーのような気がする機能追加。 (2012/03/05 (月) 22:55:14)
  • バイカウントメルビル : 是非mkIIのGMとかに対応お願いします!(^^)! (2012/03/14 (水) 21:36:05)
  • 天郷思音 : すごい今更だけど、投稿者名の欄のフォーマットが標準から逸脱していたので修正しました。(ついでに最近の名前を併記) (2021/07/12 (月) 12:36:20)