サクラトップ 掲示板トップ ログイン

メロディ風鈴 - サクラ曲掲示板6

曲掲示板6にエディタ機能が追加されました!気軽に曲を作成してみましょう!
森と泉

メロディ風鈴

MML先頭 2000 文字だけ表示していますダウンロード全文を見る
  1. System.Include(stdmsg.h)
  2. System.MeasureShift(1);
  3. ResetGM();
  4. TrackSync;
  5. TrackName={"メロディ風鈴"}
  6. Copyright={"森と泉"}
  7. MetaText={"乱数を使って毎回違ったメロディを奏でます。下側タブにコードと総小節数が出ます。"}
  8. System.TimeBase=48
  9. Int A;Int A9; //音番号、旧の音番号(o5cはn60です)
  10. Int N;Int N9; Int NX; //コード、旧のコード、次コード、0 A7,1 Am,2 B7,3 C,4 C7,5 D7,6 Dm,7 E7,8 Em,9 F,10 Fm,11 G7
  11. Int B; //1小節内何番目の音
  12. Int C; //音長
  13. Int D; //何小節目
  14. Int G;
  15. Int G1=8; //前後の音の高さの差をチェックする回数。
  16. Int Z=6; //前後の音の高さの差を半音何個以内に制限。チェック回数を超えてしまったらそのまま鳴らす。
  17. Int W; //タイ率
  18. Int X; //ベロシティ
  19. Tempo=120
  20.  
  21. TR=1 CH=1 音色(NylonGuitar) q400 V(100) r1 l8 v100 //唐突な^は休符とみなされ、うまく演奏されないのでゲートで対応(q400)
  22. TrackKey=0
  23. TR=2 CH=2 音色(AcousticBass) q100 V(100) o3 r1 l4 v100
  24. TrackKey=0
  25. TR=8 CH=10 l16 V(70) P(27) o3 l8 [4 n31 r] l16
  26. TR=9 CH=10 l16 V(70) P(27) o3 r1
  27. TR=10 CH=10 l32 V(70) P(27) o3 r1
  28. TR=1
  29. N9=1;A9=60;
  30. FOR(D=0; D<100; D++){ //100小節以内演奏する
  31. IF(D==0){N=3;}ELSE{N=NX;} //1小節目はC、2小節以降は次コード(NX)から始める
  32. C=RandomSelect(2,3,4,4,6,8,8,8,12,16)//出したい音符をいくつでも指定。多く出したい音符はダブらせて。
  33. //2,4,8,16は分かると思いますが、3,6,12は3連2分、3連4分、3連8分音符です。
  34. l(C)
  35. X=127-3*C //ベロシティ(2分音符はv127・・・16分音符はv79)
  36. v(X)
  37. W=C*3; //タイ率(2分音符は6%・・・16分音符は48%)
  38. TR=8 cr8.r4crcrr4 TR=9 [r4dr8.] TR=10 [16 f+r]
  39. SWITCH(N){
  40. CASE(0){Print{A7};TR=2 a4.a4.a4
  41. TR=1 l(C) FOR(B=0; B<C; B++){FOR(G=0; G<G1;G++){
  42. A = RandomSelect(55,57,61,64,67,69,73,76);IF((A-A9)*(A-A9)<=Z*Z){EXIT;}}
  43. IF(Random(100)>W){n(A) A9=A;}ELSE{^}}NX=6;}
  44. CASE(1){Print{Am};TR=2 a4.a4.a4
  45. TR=1 l(C) FOR(B=0; B<C; B++){FOR(G=0; G<G1;G++;){
  46. A = RandomSelect(57,60,64,69,72,76);IF((A-A9)*(A-A9)<=Z*Z){EXIT;}}
  47. IF(Random(100)>W){n(A) A9=A;}ELSE{^}}NX=RandomSelect(0,3,6,8);}
  48. CASE(2){Print{B7};TR=2 b4.b4.b4
  49. TR=1 l(C) FOR(B=0; B<C; B++){FOR(G=0; G<G1;G++;){
  50. A = RandomSelect(57,59,63,66,69,71,75);IF((A-A9)*(A-A9)<=Z*Z){EXIT;}}
  51. IF(Ran
作者からのコメント
乱数を使って毎回違ったメロディを奏でます。音域が約2オクターブで狭いと感じたら3オクターブにできます。このページの下のほうに方法を書きました。
作曲者
自作
ライセンス
🌐パブリックドメイン商用利用 ○改変 ○改変も転載も自由
転載
許可
推奨音源
パソコン内蔵音源
ピコサクラ対応
未対応
ピコサクラバージョン
0.0.0
動画
なし
投稿日時
2023-03-15 19:38
更新日時
2023-04-12 11:52
お気に入り
しゅんみゅーりsetunasa
ダウンロード数
234
タグ
→この曲(id:2421)に問題がある場合こちらへ

感謝のコメント

森と泉2023/03/16
しゅんさん、気に入ってくれてありがとうございます。以前に、8音くらいのチャラチャラ鳴る風鈴を見たことがありますが、もっと音が出て、曲のような感じになるように考えて作りました。自動でコード進行を作りながら、音の変化を半音6個以内等に保ち、音長、音量を変えつつ、コードCで始まり、G7 Cで終わるようにしました。ついでにベースとドラムを入れました。
森と泉2023/03/17
みゅーりさん、気に入ってくれてありがとうございます。曲にはテーマが必要ですが、風鈴なのでありません(風まかせ)。
setunasa2023/03/18
素晴らしいですね。理論的に音楽を構築する、これはもはやAIと言っても過言ではないのでは
みゅーり2023/03/18
森と泉さん、こちらこそありがとうございます。お気に入り登録させて頂きました。
なるほど。そうだったのですね。爽快な音楽が奏でられていて良かったです。
風まかせいいと思います。
森と泉2023/03/19
演奏後は同じ曲が聴けません。演奏前にMIDI形式で保存すればMIDIを何回も聴くことができます。乱数(でたらめ)ですが何かのお役に立てばと思います。変数の値をいろいろ変えてみて下さい。setunasaさん、みゅーりさん、ありがとうございました。
森と泉2023/04/07
音域が約2オクターブで狭いと感じたら3オクターブにできます。
A = RandomSelectの値を上から順に以下のように変えてみて下さい。
A = RandomSelect(49,52,55,57,61,64,67,69,73,76,79,81);
A = RandomSelect(48,52,57,60,64,69,72,76,81);
A = RandomSelect(51,54,57,59,63,66,69,71,75,78,81,83);
A = RandomSelect(48,52,55,60,64,67,72,76,79);
A = RandomSelect(48,52,55,58,60,64,67,70,72,76,79,82);
A = RandomSelect(48,50,54,57,60,62,66,69,72,74,78,81);
A = RandomSelect(50,53,57,62,65,69,74,77,81);
A = RandomSelect(50,52,56,59,62,64,68,71,74,76,80,83);
A = RandomSelect(52,55,59,64,67,71,76,79,83);
A = RandomSelect(48,53,57,60,65,69,72,77,81);
A = RandomSelect(48,53,56,60,65,68,72,77,80);
A = RandomSelect(50,53,55,59,62,65,67,71,74,77,79,83);
なお、音域を広くしたら、G1とZの値も変更して下さい。
Int G1=8からInt G1=24へ
Int Z=6からInt Z=7へ
森と泉2023/04/12
パブリックドメインにしました。
この曲に「ありがとう」を伝えませんか?
ひとことの感想が、作った人にとって何よりの励みになります。
定型文のボタンもあるので、キーボードが苦手でも大丈夫です。