/* 【cutcode.h】 Unison3.hの修正版です。 名称は変更している為やり方がフェアではありませんが、Ver.2.0.0としてリリースすることにしました。 【修正履歴】 Ver.2.0.0(2020.3 更新)=>ファイル名を変更し、全体的に修正をしました。 Ver.1.2.1(2019.4 更新)=>軽微な修正をしました。 Ver.1.2.0(2016.3 更新)=>軽微な調整をしました。 Ver.1.1.0(2013.8 更新)=>サクラ標準のもの(unison.h)以外の部分を"+から-"に変更しました。 Ver.1.0.0(2013.4 更新)=>Unison2.hのパワーアップ版です。 【概要】 本定義ファイルは"先にメインメロディーを作ってからコードを後付け"する方の為のツールです。 最初からコードで打ち込まれている方にはお薦めできません。 尚、コード名は打ち込み時に手間とならない様に略称(なるべく4文字以内)とさせております。 書き方は綺麗ではありませんので予めご容赦ください。 【なんちゃって解説】 ・サクラmmlでは、変数や関数の名前は大文字から始まります。 ・本定義ファイルで使用する関数は以下の通りです。 Function 関数名(引数の型 変数名=初期値, 引数の型 変数名=初期値...){ Sub{(mml)} } ここでは以下の処理が必要となります。 ①音階で返す(c,d,e,f,g,a,b,+,-)・・・Str name(=Value) ②音階を計算する(1度,2度...)・・・Int name(=Value) ③同時に音を鳴らす(コード)・・・Sub{(mml)} ※SubはタイムポインタをSubの前に戻すコマンドです。 更に、重ねる音を法則に従ってずらしていくので、音階をコントロールする為のKeyコマンドも使います。 これらを合わせると、コードを自動で鳴らしてもらうには(書き方はさておき…)、 Function P5(Str S, Int Val){ Sub{Key(Val) S; Key(Val-5)}S; } という形になります。 使う音の数の分、タイムポインタを戻していかないといけない為、音数が多くなるほどSubの使用数が多くなります。 【その他】 本定義ファイルはご自由にお使いいただいて問題御座いません。 著作権は放棄していませんので、本ファイルの自作発言や有償配布等はご遠慮下さい。 無償で配布する場合は、作者にご一報いただけると幸いです。 作者:屍翠龍司(かばねすいりゅう つかさ) HP:https://kabanesuiryutsukaSa.web.fc2.com/ */ //Key初期化用 Function KZ(Str S){ Key(0) S; } //2音コード //Perfect 5th(0,7) Function P5(Str S, Int Val){ Sub{Key(Val) S; Key(Val-7)} S; } //3音コード //Maj(0,4,7) Function Maj(Str S, Int Val){ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-7)} S; } //min(0,3,7) Function Min(Str S, Int Val){ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-7)} S; } //Sus4(0,3,7) Function Su4(Str S, Int Val){ Sub{ Sub{Key(Val) S; Key(Val-5)} S; Key(Val-7)} S; } //Sus2(0,2,7) Function Su2(Str S, Int Val){ Sub{ Sub{Key(Val) S; Key(Val-5)} S; Key(Val-7)} S; } //Dim(0,3,6) Function Dim(Str S, Int Val){ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-6)} S; } //Aug(0,4,8) Function Aug(Str S, Int Val){ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-8)} S; } //4音コード //7th(0,4,7,10) Function Th7(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-6)} S; Key(Val-10)} S; } //Maj7(0,4,7,11) Function Ma7(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-7)} S; Key(Val-11)} S; } //min7(0,3,7,10) Function Mi7(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-7)} S; Key(Val-10)} S; } //min Maj7(0,3,7,11) Function MM7(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-8)} S; Key(Val-11)} S; } //Dim7(0,3,6,9) Function Di7(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-6)} S; Key(Val-9)} S; } //6(0,4,7,9) Function Th6(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-2)} S; Key(Val-5)} S; Key(Val-9)} S; } //min6(0,3,7,9) Function Mi6(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-2)} S; Key(Val-6)} S; Key(Val-9)} S; } //add9(0,2,4,7) Function Ad9(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-5)} S; Key(Val-7)} S; } //min add9(0,2,3,7) Function Ma9(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-5)} S; Key(Val-7)} S; } //6 SuS4(0,5,7,9) Function S46(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-2)} S; Key(Val-4)} S; Key(Val-9)} S; } //7th Sus4(0,5,7,10) Function S47(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-5)} S; Key(Val-10)} S; } //Maj7th SuS4(0,5,7,11) Function M7S(Str S, Int Val){ Sub{ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-6)} S; Key(Val-11)} S; } //5音コード //9(0,2,4,7,10) Function Th9(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-6)} S; Key(Val-8)} S; Key(Val-10)} S; } //min9(0,2,3,7,10) Function Mi9(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-7)} S; Key(Val-8)} S; Key(Val-10)} S; } //Maj9(0,2,4,7,11) Function Mj9(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-7)} S; Key(Val-9)} S; Key(Val-11)} S; } //min Maj9(0,2,3,7,11) Function MM9(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-8)} S; Key(Val-9)} S; Key(Val-11)} S; } //min 6 add9(0,2,3,7,9) Function M69(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-2)} S; Key(Val-6)} S; Key(Val-7)} S; Key(Val-9)} S; } //7th add9(0,4,5,7,10) Function A97(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-5)} S; Key(Val-6)} S; Key(Val-10)} S; } //9 SuS4(0,2,5,7,10) Function S49(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-5)} S; Key(Val-6)} S; Key(Val-10)} S; } //Maj9 SuS4(0,2,5,7,11) Function M9S(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-5)} S; Key(Val-8)} S; Key(Val-10)} S; } //6音コード //11(0,2,4,5,7,10) Function T11(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-5)} S; Key(Val-6)} S; Key(Val-8)} S; Key(Val-10)} S; } //min11(0,2,3,5,7,10) Function M11(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-3)} S; Key(Val-5)} S; Key(Val-7)} S; Key(Val-8)} S; Key(Val-10)} S; } //Maj11(0,2,4,5,7,11) Function Mj11(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-6)} S; Key(Val-7)} S; Key(Val-9)} S; Key(Val-11)} S; } //min Maj11(0,2,3,5,7,11) Function MM11(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-4)} S; Key(Val-6)} S; Key(Val-8)} S; Key(Val-9)} S; Key(Val-11)} S; } //13(0,2,4,7,9,10) Function T13(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-1)} S; Key(Val-3)} S; Key(Val-6)} S; Key(Val-8)} S; Key(Val-10)} S; } //min13(0,2,3,7,9,10) Function Mi13(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-1)} S; Key(Val-3)} S; Key(Val-7)} S; Key(Val-8)} S; Key(Val-10)} S; } //Maj13(0,2,4,7,9,11) Function Ma13(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-2)} S; Key(Val-4)} S; Key(Val-7)} S; Key(Val-9)} S; Key(Val-11)} S; } //min Maj13(0,2,3,7,9,11) Function MM13(Str S, Int Val){ Sub{ Sub{ Sub{ Sub{ Sub{Key(Val) S; Key(Val-2)} S; Key(Val-4)} S; Key(Val-8)} S; Key(Val-9)} S; Key(Val-11)} S; } //おまけ //OctaVe(0,12) Function Oct(Str S, Int Val){ Sub{Key(Val) S; Key(Val-12)} S; } //Perfect 5th & OctaVe(0,7,12) Function P5O(Str S, Int Val){ Sub{ Sub{Key(Val) S; Key(Val-5)} S; Key(Val-12)} S; } //End