コミュニティアイコン プチコン 非公式コミュニティ プレイ日記

アバター
Na ◆QoELVrBXBQCI
2020/3/21 20:34
MMLのキーを変えるだけのプログラムを作りました。(3号用)Ver.7【5PVY43Q4】
ドラムは変えません。
サンプルとして「Nice day!」のMMLが入っています。

ちなみにこの Nice day! 、最初はハ長調(C Major)で作ってました。

コメント

アバター
高原のな 2020/3/21 22:53 ◆bY8RViwvoODw
'キーを変えるプログラム(たぶん不具合だらけ)(!コマンド対応する気になってしまった)

'サブ関数
'調号以外を与えると0、調号を与えると半音上昇なら1、半音下降なら-1を返す(ネーミングセンスをくれ)
DEF ACCIDENTAL(A$)
 RETURN (A$=="#")+(A$=="+")-(A$=="-") 'Naさんが良いワンライナーをくれたので採用
END

'MMLの音長を表せる文字か判別する。(面倒なので)
'中身は読者の課題とする
DEF ISMMLLEN(M$)
 RETURN INSTR("0123456789.&_",M$)>=0 'Naさんの回答
END

'メイン関数と定数群
'↓お好きな一方をコメントアウトする
'VAR _K$="C C+D D+E F F+G G+A A+B "
'VAR _K$="C D-D E-E F G-G A-A B-B "
VAR _TC=LEN(_K$)/2
DEF KEYCHANGE$(_M$,K)
 VAR I,J,V,OC,M$=_M$+"",T$
 FOR I=0 TO LEN(M$)-1
  'VはC基準の音階の差(度数とは別物)
  'Jはインデックス差(Iをむやみに変えられないので)
  'OCはオクターブ差
  V=INSTR("C D EF G A B",M$[I])
  IF V==-1 || V==1 THEN CONTINUE
  IF I>=1 && M$[I-1]!="@" && MID$(M$,MAX(I-4,0),4)!="@MOF" THEN
   J=1
   WHILE (I+J)<=LEN(M$) && ACCIDENTAL(M$[I+J])
    INC V,ACCIDENTAL(M$[I+J])
    INC J
   WEND
   OC=V DIV _TC:V=V MOD _TC
   IF V<0 THEN V=V+_TC
   T$=MID$(_K$,V*2,2)
   IF T$[1]==" " THEN T$[1]=""
   WHILE (I+J)<=LEN(M$) && ISMMLLEN(M$[I+J])
    T$=T$+M$[I+J]
    INC J
   WEND
   IF OC<0 THEN T$=(">"*-OC)+T$+("<"*-OC)
   IF OC>0 THEN T$=("<"*OC)+T$+(">"*OC)
   M$=SUBST$(M$,I,J,T$)
   I=I+J-1
  ENDIF
 NEXT
 RETURN M$
END
アバター
takumi 2020/3/21 23:10 ◆Ce3Q40uXWJjn
MPlay1公開終了したのってなんでなんですか?
(関係ないけど気になっていた)
アバター
takumi 2020/3/22 11:00 ◆Ce3Q40uXWJjn
そうですか……
ではMusics9に今後も力を入れていこうと思います。
アバター
Na 2020/3/22 11:51 ◆QoELVrBXBQCI
Ver.3公開。
調を自動判別できるようになりました。
まあ、あまり正確じゃないですけどね。

特に、転調する曲だと全く見当違いな調を表示することも...
アバター
ドラキーマカレー 2020/3/22 12:01 ◆3jIC4XsSXrZX
「ようこそジャパリパークへ」とか、トランペットの調でおまけにそこに調が付いてる曲ってどうなりますか?

(「ようこそジャパリパークへ」のサビは、♭♭からの#)
アバター
Na 2020/3/22 12:10 ◆QoELVrBXBQCI
トランペットとかの楽器で表記する調がなんか違うっていうのは聞いたことありますけど、詳しくは知らないです(吹奏楽部じゃないので...)
アバター
高原のな 2020/3/22 15:03 ◆bY8RViwvoODw
移調譜なら……ドの位置に書く音を受け取れるようにすれば行けるのでは
アバター
Na 2020/3/22 15:31 ◆QoELVrBXBQCI
Ver.4公開
適当に+や-を増やすのではなく、音程を置き換えるようにしました。

調の判別にはMMLに書かれている音程を使うので、楽譜に書かれる調とかは関係ないと思います。
アバター
さすらいの名無し 2020/3/22 18:45 ◆LWMA5UzCJb3e
Nice day以外はほとんど調号自動にするとエラーが出る…()
アバター
さすらいの名無し 2020/3/22 18:50 ◆LWMA5UzCJb3e
かんたん!BGMメーカーで生成されたものは必ず(確認した範囲では)エラーが出ます。
アバター
さすらいの名無し 2020/3/22 18:51 ◆LWMA5UzCJb3e
CDEFGAB<Cとかでもエラーが出ます。
アバター
ドラキーマカレー 2020/3/22 19:03 ◆3jIC4XsSXrZX
↑6
B♭トランペット譜は基本的にピアノの楽譜の全音下です
アバター
Na 2020/3/22 19:15 ◆QoELVrBXBQCI
>さすらいの名無しさん
あ、ハ長調でエラーが出ますね。修正します
アバター
Na 2020/3/22 19:19 ◆QoELVrBXBQCI
修正しました。(Ver.5)
アバター
Na 2020/3/22 20:40 ◆QoELVrBXBQCI
↑3
MMLは全音下で書かれてないので、全音下げる前の元の調が表示されると思います。
音遊戯に入ってるジャパリパークのMMLだと♭1になりましたね
(♭2 + #1 = ♭1 なので合ってると思います(?))
アバター
Na 2020/3/22 20:50 ◆QoELVrBXBQCI
今調べましたが、例えばA♭Major(♭4)はG#Majorとは書かない(#8になってしまう)し、(♭7)はBではなくC♭Majorと表記するんですね。
気が向いたら直します。
あと日本語表記(ハ長調とか)も追加しようかな
アバター
Na 2020/3/24 20:05 ◆QoELVrBXBQCI
Ver.6公開
調の表記の修正
<>や><を自動で削除
1度生成したMMLは配列に入れておいて、何度も同じのを生成しないようにしました
アバター
Na 2020/3/24 21:23 ◆QoELVrBXBQCI
そういえばWikipediaによると変ホ長調(♭3)は「調号が3箇所 であることから、古くから三位一体につながるとされた」そうです。
https://ja.wikipedia.org/wiki/%E5%A4%89%E3%83%9B%E9%95%B7%E8%AA%BF

♭3 = 神曲 というのも間違いではないのかも...(?)
アバター
Na 2020/3/26 15:32 ◆QoELVrBXBQCI
Ver.7公開
ドラムの番号(キー変更をしない音色)の設定が間違ってたので修正のついでに各種BEEPをそれに追加

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -