/*
【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