お役立ち情報 > 拡張インクルードファイル > CyclicControlChange.h

CyclicControlChange.h

ノートオンに関係なくコントロールチェンジを変化させる関数セットです。

ダウンロード

リンクから、[保存]して下さい。

CyclicControlChange.h

ソース

 //------------------------------------------------------------------------------
 // CyclicControlChange.h
 //------------------------------------------------------------------------------
 // ノートオンに関係なくコントロールチェンジを変化させる関数のセット
 //------------------------------------------------------------------------------
 FUNCTION DivRound(INT Value, INT Div){
  RESULT = (Value * 10 / Div + 5) / 10;
 }
 //------------------------------------------------------------------------------
 // 関数本体
 //------------------------------------------------------------------------------
 //
 // 【書式】
 // CyclicControlChange({コントロールチェンジ[V,EP,P,p,p%,M,CHO]),効果時間(小節), 変化周期(),開始値,中間値1,中間値2,終端値)
 //
 // ex) パンポットを回す
 // TR(1)CH(1) Voice(30) CyclicControlChange({P},4,!8,63,127,63,0) c1^1^1^1
 //
 //------------------------------------------------------------------------------
 FUNCTION CyclicControlChange(STR ControlChange, INT NoteLength, INT Cycle, INT StartValue, INT IntermediateValue1, INT IntermediateValue2, INT EndValue){
  INT Div4 = Cycle / 4;
  STR Ret = "[" + DivRound(NoteLength * (!1), Cycle);
  Ret = Ret + ControlChange + ".T(" + StartValue + "," + IntermediateValue1 + "," + Div4 + ")r" + !(Div4);
  Ret = Ret + ControlChange + ".T(" + IntermediateValue1 + "," + IntermediateValue2 + "," + Div4 + ")r" + !(Div4);
  Ret = Ret + ControlChange + ".T(" + IntermediateValue2 + "," + EndValue + "," + Div4 + ")r" + !(Div4);
  Ret = Ret + ControlChange + ".T(" + EndValue + "," + StartValue + "," + Div4 + ")r" + !(Div4);
  Ret = Ret + "]";

  Sub{Ret};
 }
 //------------------------------------------------------------------------------
 // すぐに使える関数サンプル
 //------------------------------------------------------------------------------
 //
 // 【書式】
 // [各エフェクト名](効果時間(小節))
 //
 // ex) エフェクト hoge をかける
 // TR(1)CH(1) @(30) hoge(4) c1^1^1^1
 //
 //------------------------------------------------------------------------------
 // オートパン
 //------------------------------------------------------------------------------
 FUNCTION AutoPan2 (INT NoteLength = 1){CyclicControlChange({P},NoteLength,!2,63,127,63,0)}
 FUNCTION AutoPan4 (INT NoteLength = 1){CyclicControlChange({P},NoteLength,!4,63,127,63,0)}
 FUNCTION AutoPan8 (INT NoteLength = 1){CyclicControlChange({P},NoteLength,!8,63,127,63,0)}
 FUNCTION AutoPan8M(INT NoteLength = 1){CyclicControlChange({P},NoteLength,!8,63,103,63,24)}
 FUNCTION AutoPanL (INT NoteLength = 1){CyclicControlChange({P},NoteLength,!8,31,63,31,0)}
 FUNCTION AutoPanR (INT NoteLength = 1){CyclicControlChange({P},NoteLength,!8,95,127,95,63)}
 //------------------------------------------------------------------------------
 // トレモロ
 //------------------------------------------------------------------------------
 FUNCTION Tremolo4 (INT NoteLength = 1){CyclicControlChange({V},NoteLength,!4,127,127,99,99)}
 FUNCTION Tremolo8 (INT NoteLength = 1){CyclicControlChange({V},NoteLength,!8,127,127,99,99)}
 FUNCTION Tremolo16(INT NoteLength = 1){CyclicControlChange({V},NoteLength,!16,127,127,99,99)}
 FUNCTION TremoloEX(INT NoteLength = 1){CyclicControlChange({V},NoteLength,!8,99,107,127,107)}
 //------------------------------------------------------------------------------
 // 特殊
 // 2 つのチャネルを使用して、音色特性が時間変化していくように見せかける
 // ex)Overdriven ⇔ Distoriton の変化
 // TR(1)CH(1) @(30) TransformA(4) c1^1^1^1
 // TR(2)CH(2) @(31) TransformB(4) c1^1^1^1
 //------------------------------------------------------------------------------
 FUNCTION TransformA(INT NoteLength = 1){CyclicControlChange({EP},NoteLength,!1^1^1^1,127,87,47,87)}
 FUNCTION TransformB(INT NoteLength = 1){CyclicControlChange({EP},NoteLength,!1^1^1^1,47,87,127,87)}
 //------------------------------------------------------------------------------
 // フランジャー(原音 1 、遅延波 1 で 計 2 チャネル使用。ベンド使用不可)
 // ex)
 // TR(1)CH(1) @(31) c1^1^1^1
 // TR(2)CH(2) @(31) Flanger(4) c1^1^1^1
 //------------------------------------------------------------------------------
 FUNCTION Flanger(INT NoteLength = 1, INT Ratio = 1){CyclicControlChange({p%},NoteLength,!(Ratio),0,767,0,-767)}
 //------------------------------------------------------------------------------
 // リセット命令
 //------------------------------------------------------------------------------
 FUNCTION ResetEffect(INT Pan = 63, INT Vol = 127, Exp = 127){P(Pan) V(Vol) EP(Exp) p%(0)}
 //------------------------------------------------------------------------------

コメント

名前:
コメント:

タグ:

+ タグ編集
  • タグ:
最終更新:2013年06月09日 17:27