CAL 解説

--- HOW TO CAL ---

まえがき

Cakewalk ProAudio/Professional のイベントフィルタはなかなか強力な 機能を持っておるのですが、実はそれでも選択しきれない場合が結構あったり、 はたまた Cakewalk の編集機能では対応しきれない場合もあったりしまして、 使い込むほどに不満が増えてまいります。 2拍めと4拍めだけ選択したいとか、 選択範囲の音の長さをすべて 1 tick 短くしたいとかですね。 CAL で望みの処理を記述しておけば、これが一発でできます。

もちろんプログラムですから、 考えて書いてテストするのに手間と時間がかかります。 1回限りの利用では全然意味がありません。 しかし、同じ処理を何度も操作するのであれば、 苦しみは最初の1回だけですみます。 使えば使うほどにそのありがたみが分かるのでございますよ。

文法は簡単ですが、まったくプログラム経験のない人には とっつきにくいかも知れません。 インターネットではさまざまな CAL が公開されていますが、 そこから目的の CAL を探すのは結構たいへんです。 あるかどうかも分かりません。 ないものは自分で作りませう。

CALのマニュアルは市販されておりませんで、 ProAudio/Professional の HELP に こっそりと書かれているだけです。 ProAudio/Professional をお持ちの方はご参照ください。 "CAL" の項では概要と Cakewalk からの呼び出し方 、文法の説明が、 また "リファレンス"の項には使える数値型と関数の説明が ございます。

で、このページは、いちいち HELPのページを めくってリファレンスを調べるのが面倒なので、 私的に一覧できるように整理したのが 始まりです。

ProAudio/Professional ユーザ 以外の方が CAL でどんなことができるのか、 自分に扱えそうかどうかを判断するための 材料としてもお使いいただけるのではないかと存じます。

なお、実用プログラムは蛞蝓式 CAL プログラム のページにございますので、ご参照ください。

なおなお、下記の記述は間違っているところがあるかも知れません。 あはは。


CAL の使い方

CALには、2つの利用法があります。
  1. Cakewalk上のユーザの操作を記録して、 同じ操作を一発で何度もできるようにする。 この記録は、Cakewalkが自動でCALプログラムとして 記述します。

  2. 面倒な手順をプログラムとして記述し、 同じ操作を一発で何度もできるようにする。
CALはテキストデータとして記録されますから、 あとから自由に切貼りができます。

操作を記録する

  1. 「ファイル|新規作成」から「CALスクリプト」を選ぶ。

  2. CALウィンドウが開き、記録・編集ができるようになる。 最初はこんなふうになっています。
  3. 上に3つアイコンが並んでいますが、 まん中の赤丸をクリックすると記録が始まります。 記録を終了するときは右側の四角をクリックします。 CALウィンドウがアクティブになっている状態で 「ファイル|保存」を選ぶと、拡張子 .CALで保存されます。

  4. たとえば、"D:¥MiDi\caravan.wrk" を読み込んで、 トラック6を選択し、1オクターブ トランスポーズすると、 このように記録されます。
    TrackSelect の2つめの引数が0から始まるトラック番号で、 5というのは実は6トラックのことなのです。
    EditTranspose40 の12が1オクターブ(12半音)ですね。 そのあとの 0 0 は「全音計算」「オーディオもトランスポーズ」の チェックが入っていないことを示しています。

  5. CALウィンドウは自由に文字入力ができますから、 ここで1からプログラムを記述することもできます。

  6. 左上の三角は、実行ボタンです。

プログラムを組む

  1. プログラムは、先ほどの CALウィンドウで書いてもよいし、 適当なテキストエディタを使って書くこともできます。

  2. ファイルを保存するときに .CAL という拡張子にしておけば よいのです。

  3. プログラムをまったく書いたことのない人には とっつきにくいかも知れませんが、 生まれたときからプログラミングができた人なんて おらんわけですから、できないはずがありません。
    やりたいことをどうすれば実現できるかという 手順をうまく考えることと、 データのとり得る値の可能性を網羅することが、 コツではないかと思います。
    LISP や C の経験者であれば、簡単に理解できると思います。

CAL の書き方

CAL の文法


データ型と変数

CAL で扱えるデータ型

CAL で扱う数値は、すべて整数型です。
型名 長さ 最小値 最大値
int16 bit-32,676 32,767
word16 bit0 65,535
long32 bit-2,147,483,648 +2,147,483,647
dword32 bit0 +4,294,967,296
string " "で囲まれたテキスト

予約語

変数名・定数名として予約されている語です。 他にもあるかも知れません。
    NIL  CAL  FALSE  TRUE  NOTHING  TIMEBASE  VERSION  Now  From  Thru  End
    NOTE  KEYAFT  CONTROL  PATCH  CHANAFT  WHEEL  SYSX  SYSXDATA  TEXT  LYRIC
    WAVE  MCI  EXPRESSION  HAIRPIN  CHORD  RPN  NRPN
    Event.Kind  Event.Chan  Note.Key  Note.Vel  Patch.Num  Patch.Bank
    Control.Num  Control.Val  KeyAft.Key  KeyAft.Val  ChanAft.Val  Wheel.Val
また下記の関数が用意されています。関数名を変数名に使うことはできますが、 混乱するので避けた方がよかろうと思います。
    if  do  switch  while  forEachEvent  =  <  >  <=  >=  ==  !=  &&  ||  +  -
    *  /  %  +=  -=  *=  /=  %=  random  ++  --  index  delete  insert  meas
    beat  tick  makeTime  SetCurrentTrack  GetCurrentTrack  int  word  long
    dword  string  undef  message  pause  format  getInt  getWord  getTime
    error  exit  beep  include  delay  sendMIDI  DLL  FileNew  FileSave
    FileSaveAs  FileOpen  FileMerge  FileExtract  EditCopy  EditCopy40  EditCut
    EditCut40  EditDelete40  EditPaste  EditPasteToTrack  EditPaste40
    EditQuantize  EditQuantize40  EditSlide  EditSlide40  EditTranspose
    EditTranspose40  EditLength  EditLength40  EditControlFill
    EditGrooveQuantize  EditGrooveQuantize40  EditRetrograde  EditRetrograde40
    EditVelocityScale  EditVelocityScale40  EditFitToTime  EditFitToTime40
    EditFitImprov  EditFitImprov40  EditInterpolate  ResetFilter  SetFilterKind
    SetFilterRange  Play  Record  Rewind  GotoSearch  GotoSearchNext  TrackName
    TrackActive  TrackArchive  TrackKey+  TrackVel+  TrackTime+  TrackPort
    TrackChannel  TrackBank  TrackPatch  TrackVolume  TrackPan  TrackSelect
    TrackClone  TrackArmAudio  TrackSolo  TrackRecordEnable  SettingsMetronome
    SettingsMidiThru  SettingsMidiOut  SettingsMidiIn  SettingsRecordFilter
    SettingsChannelTable  SettingsChannelTable70  MaxEvalStack  HeapInitSize
    CalSendMIDIRaw  RxEventMask

マーカー変数

CAL では、マーカーを示す次の変数が予約されており、 ユーザが利用することができます。 いずれもCakewalk の内部基準時間 --- つまりデータ冒頭を0としたときの絶対時間 --- で表現されます。 単位は tick です。
変数名 データ型 意 味
Fromdword始点マーカー (選択範囲の始点)
Nowdword現在マーカー (現在の注目点)
Thrudword終点マーカー (選択範囲の終点)
Enddword全トラックの最後のイベントのタイム

"forEachEvent" 式の内側では、参照のみ可能です。 新たな値を代入することはできません。
(> From Thru) または (< Thru From)はできません。 一方のマーカーが変更されると、もう1つのマーカーも自動的に調節されます。
始点/終点マーカーの変更は、"forEachEvent"が作用している イベントに影響を与えますが、現在マーカーを変更しても影響は与えません。

イベント・パラメータ変数

"forEachEvent" 式の内側では、次の変数の値を参照したり、書換えたり することができます。あ、読み出しだけしかできないのもあります。 Event.Kind の値は、定義されている名称(NOTEとかPATCHとかですね)を 使いませう。

・すべての種類のイベントに対する変数

変数名 データ型 値の範囲 意 味
Event.Chanint0〜15 イベントのMIDIチャンネル。
Event.Timedword イベントの始点タイム。
Event.Kindint 定数名 イベントの種類
0SYSX SysEx バンク。
1TEXT テキスト。
2LYRIC 歌詞。
3WAVE オーディオ。
4MCI MCI コマンド。
5EXPRESSION 強弱記号。
6HAIRPIN ヘアピン。
7CHORD コード。
8SYSXDATA SysEx データ。
9RPN RPN。
10NRPN NRPN。
144NOTE ノート。
160KEYAFT キーアフタータッチ。
176CONTROL コントローラ。
192PATCH パッチチェンジ。
208CHANAFT チャンネルアフター。
224WHEEL ピッチベンド。

・特定のイベントに対する変数

変数名 イベントの種類 最小値最大値 意 味
Note.KeyNOTE 0127 キーナンバー (音の高さ)。
Note.VelNOTE 0127 ベロシティ。
Note.DurNOTE 065535 音の長さ (tick)。
Patch.NumPATCH 0127 パッチナンバー (音色番号)。
Patch.BankPATCH -116383 バンクナンバー (-1 は無指定のとき)。
Control.NumCONTROL 0127 コントローラ番号。
Control.ValCONTROL 0127 コントローラの値。
KeyAft.KeyKEYAFT 0127 キーナンバー (音の高さ)。
KeyAft.ValKEYAFT 0127 値 (プレッシャー量)。
ChanAft.ValCHANAFT 0127 値 (プレッシャー量)。
Wheel.ValWHEEL -8192+8191 ピッチベンド値。

特定のイベントに対する変数は、イベントの種類を確認した上で、 そのイベントにふさわしい値を設定する必要があります。 "Note.Key" に256 とか代入しても無意味です。


定数

・TIMEBASE
定数名 意 味
TIMEBASEタイムベース値 四分音符あたりのtick数

Cakewalk で指定できるタイムベース値は下記の通りです。

    48, 72, 96, 120, 144, 168, 192, 216, 240, 360, 384, 480
・VERSION
定数名 意 味
VERSIONCALのバージョン バージョンは10倍した値が返される。

Cakewalkのバージョンではなく、CALのバージョンでおます。


CAL関数一覧

以下の例では、変数を var (variable)、値を val (value)、 関数を func (function) として記述しております。 また、[ ] はオプションで、指定しなくてもよいことを表しております。

変数宣言関数

HELPにはこのような呼び名はついておりませんが、 私が勝手に命名しました。きゃははは。

変数は、使用前に宣言が必要です。 宣言も「関数」の形をとります。 書式は下記の通りです。

    (型名 変数名 [初期値])
初期値を指定すれば、宣言と同時に初期化することができます。 初期値を指定しないときの変数の値は不定です。
    (例) (int var 127)
         (string mes "Hello, CAL!")
関数(型)名書式 戻り値 意 味
int(int var [val]) varの値 int型の変数としてvarを宣言し、 初期値としてvalを代入する。
word(word var [val]) varの値 word型の変数としてvarを宣言し、 初期値としてvalを代入する。
long(long var [val]) varの値 long型の変数としてvarを宣言し、 初期値としてvalを代入する。
dword(dword var [val]) varの値 dword型の変数としてvarを宣言し、 初期値としてvalを代入する。
string(string var [val]) varの値 string型の変数としてvarを宣言し、 初期値としてvalを代入する。 val は、" "で囲まれたテキスト。
undef(undef var) NIL 変数の型宣言を取り消す。

数学関数

関数 書式 戻り値意 味
+(+ op1 op2) op1とop2を加えた和加算
-(- op1 op2) op1からop2を引いた差減算
*(* op1 op2) op1とop2を掛けた積乗算
/(/ op1 op2) op1をop2で割った商除算
%(% op1 op2) op1をop2で割った剰余剰余算
++(++ var) varに1を加えた値インクリメント
--(-- var) varから1を引いた値デクリメント
random(random min max) mixからmaxまでの擬似乱数乱数発生
演算結果が、それぞれのデータ型の表現できる範囲を超えないよう、 注意しませう。

比較関数

関数 書式 戻り値意 味
<(< op1 op2) op1 < op2 のとき TRUE, それ以外は FALSEより小さい
>(> op1 op2) op1 > op2 のとき TRUE, それ以外は FALSEより大きい
<=(<= op1 op2) op1 <= op2 のとき TRUE, それ以外は FALSE以下
>=(>= op1 op2) op1 >= op2 のとき TRUE, それ以外は FALSE以上
==(== op1 op2) op1 と op2 が等しいとき TRUE, それ以外は FALSE等しい
!=(!= op1 op2) op1 と op2 が等しくないとき TRUE, それ以外は FALSE 等しくない
いずれも、条件が「真」のときに TRUE (0以外)を、「偽」のときに FALSE (0)を返します。TRUE は「0以外」ですが、 実際には 1 を返してきます。

ブール関数

関数 書式戻り値 意 味
&&(&& op1 op2) op1 と op2 のどちらも TRUE のときに TRUE, それ以外は FALSE論理積(AND)。
||(|| op1 op2) op1 と op2 のどちらかが TRUE のときに TRUE, それ以外は FALSE論理和(OR)。
いずれも、結果が「真」のときに TRUE (0以外)を、「偽」のときに FALSE (0)を返します。TRUE は「0以外」ですが、 実際には 1 を返してきます。

割当(代入)関数

関数 書式戻り値 意 味
=(= var exp) 代入後の var の値。 var に exp を代入する。
+=(+= var exp) 代入後の var の値。 (+ var exp) を varに代入する。
-=(-= var exp) 代入後の var の値。 (- var exp) を varに代入する。
*=(*= var exp) 代入後の var の値。 (* var exp) を varに代入する。
/=(/= var exp) 代入後の var の値。 (/ var exp) を varに代入する。
%=(%= var exp) 代入後の var の値。 (% var exp) を varに代入する。
割当演算では、演算と代入をひとつの命令で行えます。 下記の左右は同じ操作です。
割当演算 演算と割当
(+= var val) (= var (+ var val))
(-= var val) (= var (- var val))
(*= var val) (= var (* var val))
(/= var val) (= var (/ var val))
(%= var val) (= var (% var val))

バッファ関数

トラックバッファのイベントには、0から始まる一連のインデックス番号が ふられています。 イベントリストで連続しているように見えるイベントでも、 クリップが違えば、非連続の番号になっていることがあります。 イベント開始タイムの順番に処理をしたいときは、 連続した番号になるよう、トラック内のクリップを結合しておきます。
関数 書式戻り値 意 味
index(index) イベントのインデックス番号。 現在参照中のイベントのインデックスを調べる。
delete(delete) NIL 現在のイベントを削除し、 後続のイベントのインデックス番号を前に詰める。
insert (insert time chan kind [引数...]) NIL イベントを挿入し、 後続のイベントのインデックス番号を後ろにずらす。
time : イベントの開始タイム (dword)。
chan : MIDI チャンネル (0〜15)。
kind : イベントの種類 (次表参照)。
引数 : イベントの種類に応じた引数 (次表参照)。
insert関数では、挿入するイベントの種類によって、 引数の数や指定できる値の範囲が違います。 kind に指定するイベントの種類は NOTE や WHEEL など、 ディフォルトで定義済みの定数で指定します。

挿入データの種類 書式引数の意味
ノートデータ (insert time chan NOTE key velocity duration) key : キー番号。
velocity : ベロシティ値。
duration : 音の長さ (tick)。
コントローラ (insert time chan CONTROL cont-no value) cont-no : コントローラ番号。
value : 値。
キーアフター (insert time chan KEYAFT key amount) key : キー番号。
amount : アフタータッチ量。
チャンネルアフター (insert time chan CHANAFT amount) amount : アフタータッチ量。
パッチチェンジ (insert time chan PATCH patch-no [bank-no]) patch-no : パッチ番号。
bank-no : バンク番号。省略時は -1 (バンク指定なし)。
ピッチベンド (insert time chan WHEEL value) value : ピッチベンド値。
forEachEvent内で挿入されたイベントは、可視状態になりません。

ミュージック・タイム関数

Cakewalkでは、すべてのイベントを0から始まる基準時間で 管理しています。単位はtickです。 CALのイベントタイムは、この基準時間で指定します。 Cakewalk基準時間と、「小節:拍:ティック」形式との 相互変換を行なう関数が用意されております。 曲途中で拍子が変わっていても大丈夫です。
関数 書式戻り値 意 味
meas(meas time) 小節 time の属する小節。
beat(beat time) time の属する拍。
tick(tick time) ティック time の属するティック。
makeTime(makeTime measure beat tick) タイム 小節, 拍, ティック をタイムに変換する。
小節番号、拍番号は 1 から始まります。0を指定しないように。

出力関数

画面にメッセージを出力します。
関数 書式戻り値 意 味
message(message val [val...]) NIL ウィンドウ左下に、メッセージを表示する。
pause(pause val [val...]) NIL 新たな窓を開いてメッセージを表示し、停止する。
format(format val [val...]) val の文字列 val を文字列として返す。
messageもpauseも、引数の型はなんでもよく、 直接値を書き込んでもよいし、変数名でもよく、 たくさん並べて書くこともできます。

messageの場合は表示するだけですが、pauseの場合は 表示後に停止し、[OK] をクリックするか [ESC]以外のキーを押すと処理を再開し、 [キャンセル]をクリックするか [Esc]キーを押すとプログラムはそこで終了します。

formatは、画面への表示はありませんが、 文字列を返してくるので、戻り値を利用することができます。


入力関数

Cakewalkダイアログを表示し、ユーザに入力を促す関数です。
関数 書式戻り値 意 味
getInt(getInt var prompt min max) 入力された値 ユーザの入力をint型変数varに代入する。
getWord(getWord var prompt min max) 入力された値 ユーザの入力をword型変数varに代入する。
getTime(getTime var prompt min max) 入力された値 ユーザの入力をdword型変数varに代入する。
(例)
        :
    (int vel 100)
    (getInt vel "velocity ?" 0 127)
        :
上記のCALを実行すると、こんな画面が現れます。
int型変数velに、初期値として100を設定しておき、 getInt関数でユーザの入力を求めます。 prompt で、何を入力するかのガイドを表示することができます。 この場合、"velocity ?" とやって、ベロシティ値を求めていることを 示します。
窓には初期値の100が表示され、そのままOKをクリックすると 100が採用されます。 数値を変更するとその値がvelに代入されますが、 minとmaxで指定した範囲を超えるとエラーとなって、 再入力を促します。 ここでは、変数velのとり得る値の範囲を、0と127で 指定しています。
ユーザがキャンセルをクリックすると、 エラー・メッセージが出てCALプログラムがそこで終了します。 なお、getLong とか getString というような関数は ございません。

コントロール・フロー関数

条件分岐や繰り返しを制御する関数です。
関数 書式 意 味
do(do func1 [func2...]) ひとつの関数を指定すべきところに、 複数の関数を使いたいときに do 関数で囲みます。
if(if condition func1 [func2]) conditionを評価して、真のときにfunc1を、偽のときにfunc2を 実行します。真は0以外で、偽は0です。
while(while condition func) conditionを評価して、真のときに funcを繰り返し実行します。 1回めに conditionが偽であれば、funcはまったく実行されません。 真は0以外で、偽は0です。
switch(switch index case1 func1 [case2 func2]...) indexを評価して、case1... と比較し、合致すればその後の funcを実行します。合致するものがなければ何も実行されません。
forEachEvent (forEachEvent func) 指定範囲のすべてのイベントをひとつひとつ順番に調べるループです。
・do 関数

CALは、なぜか関数を並べただけではだめで、 全体を(do )で囲まねばなりません。
    (int a 0)
    (pause a)
とやると、OK を押しても繰り返し表示してきますし、
    (int a 0)
    (+= a 1)
    (pause a)
では、34 という怪しい値が表示されたりします。

全体を(do )で囲んで

    (do
        (int a 0)
        (pause a)
    )
のように指定すると、正しく動作します。

if関数のtrue, false、while関数やswitch関数の actionでは、複数の関数を複文のように並べることが多いですが、 そんなときに(do )で括ってしまいます。

・switch 関数

switch で、どの条件にも合致しないときのディフォルトの操作を 指定するときは、index そのものをcaseに指定します。

(例)

    (switch sw
        1  (+= dur 2)
        2  (-= dur 4)
        3  (*= dur 8)
        sw (= dur 120)
    )
上の例では、 swの値が1のときに durに2を加え、 swの値が2のときに durから4を引き、 swの値が3のときに durに8を掛け、 swの値がそれ以外のときには、durに120を代入します。
・forEachEvent関数

指定範囲内のすべてのイベントをチェックして、 さまざまな操作が可能です。
イベントパラメータ変数はそのとき評価している イベントに応じた値を保持します。

そのほか

関数 書式 意 味
include(include filename) その位置に指定した CALのファイルを挿入して実行します。 filename は拡張子 .CALを含めて記述し、 " "で囲みます。
DLL (DLL szLibName szProcedureName [arguments]) WindowsDLLの関数を呼び出します。戻り値は dword です。
sendMIDI (sendMIDI port chan kind data1 [data2]) MIDIイベントを送出します。
delay (delay ms) ms ミリ秒待ちます。
・DLL関数

DLL関数を間違った引数で呼び出した場合の エラー・チェック機能および予防措置はありません。
・sendMIDI関数

port 送出ポート。0〜15。-1 ですべてのポートに出力。
chan 送出チャネル。0〜15。-1 ですべてのチャネルに出力。
kind NOTE、CONTROLなどの定数。
data1 0〜127の値。出力メッセージに応じた値を指定する。
data2 0〜.127の値。NOTE、CONTROL、KEYAFT以外の場合は無視。

kindがSYSXの場合、指定できるのは最大200バイトで、 始めのF0と最後のF7バイトを含んではいけません。


Cakewalkコマンド対応CAL関数

CAL関数ファイル・メニュー

関数 書式対応コマンド コメント
FileNew(FileNew [template]) ファイル|新規作成  
FileOpen(FileOpen [pathname]) ファイル|開く  
FileSave(FileSave) ファイル|上書き保存  
FileSaveAs(FileSaveAs [pathname]) ファイル|名前をつけて保存  
FileMerge(FileMerge [pathname]) ファイル|マージ 旧バージョンとの互換用。
FileExtract(FileExtract [pathname]) ファイル|抽出 旧バージョンとの互換用。

templete には、拡張子なしでテンプレートファイル名を指定します。
pathname には、拡張子付きでファイル名を指定します。
いずれも、" "で囲みます。カレントパスに注意しませう。

ファイルの読み込み または 書き込みに失敗すると FALSE(0)を返します。


CAL関数編集メニュー

関数 書式 対応コマンド コメント
EditCopy40 (EditCopy40 [bEvents bTempos bMeters bMarkers]) 編集|コピー 
EditCut40 (EditCut40 [bEvents bTempos bMeters bMarkers bDelHole]) 編集|切り取り 
EditPaste40 (EditPaste40 [tToTime nToTrack bOneTrack nReps tRepLen bAsNewClips bEvents bTempos bMeters bMarkers]) 編集|貼り付け 
EditQuantize40 (EditQuantize40 [wResolution nPercent bTimes bDurations nSwingPct nWindow nOffset bNoteLyricAudioOnly]) 編集|クォンタイズ 
EditGrooveQuantize40 (EditGrooveQuantize40 [wRes nWindow nTimePct nDurPct nVelPct OutOfWindowMode szFile szPattern bNoteLyricAudioOnly]) 編集|グルーブクォンタイズ 
EditSlide40 (EditSlide40 [nAmount bUnitTicks]) 編集|スライドbUnitTicks==TRUE : nAmountはティック。
bUnitTicks==FALSE : nAmountは小節。
EditTranspose40 (EditTranspose40 [nAmount bDiatonic) 編集|トランスポーズ 
EditLength40 (EditLength40 [nPercent bStartTimes bDurations]) 編集|長さ 
EditRetrograde40 (EditRetrograde40) 編集|反転 
EditControlFill (EditControlFill [tFrom tThru nCtrl nChan nBeg nEnd]) 挿入|コントローラChan : 1〜16
nBeg : 0〜127
nEnd : 0〜127。
旧バージョンとの互換用
EditVelocityScale40 (EditVelocityScale40 [nBeg nEnd bUnitsPercent]) 編集|ベロシティスケール bUnitsPercen==TRUE : nBegとnEndはパーセンテージ。
bUnitsPercen==FALSE : nBegとnEndはベロシティ値。
EditFitImprov (EditFitImprov [nReferenceTrack]) 編集|タップトラックにフィット 
EditFitToTime (EditFitToTime [tFrom tThru tNewThru nMethod]) 編集|タイムにフィット 
EditInterpolate (EditInterpolate) 編集|書き換え書き換えの実行(?)
ResetFilter (ResetFilter nFilter bEverything) 編集|書き換えフィルタの用途設定。
nFilter==0 : 書換え以外。
nFilter==1 : 書換えの検索フィルタ
nFilter==2 : 書換えの置換フィルタ
SetFilterKind (SetFilterKind nFilter nKind bInclude) 編集|書き換えフィルタ設定。
nFilter==0 : 書換え以外。
nFilter==1 : 検索。
nFilter==2 : 置換。
nKind : 下記のいずれか1つ。
NOTE, KEYAFT, CONTROL, PATCH
CHANAFT, WHEEL, SYSX, TEXT
LYRIC, WAVE, MCI
bInclude : そのイベント種類を含むかどうか。
SetFilterRange (SetFilterRange nFilter nRange bInRange wMin wMax) 編集|書き換えフィルタ設定。
nFilter==0 : 書換え以外。
nFilter==1 : 検索。
nFilter==2 : 置換。
nRange==0 : ノート/キー
nRange==1 : ノート/ベロシティ
nRange==2 : ノート/音の長さ
nRange==3 : キーアフター/キー
nRange==4 : キーアフター/プレッシャー
nRange==5 : コントローラ/コントローラ番号
nRange==6 : コントローラ/値
nRange==7 : パッチ/パッチ番号
nRange==8 : チャンネルアフター/プレッシャー
nRange==9 : ピッチベンド/値
nRange==10 : チャンネル
nRange==11 : 拍
nRange==12 : ティック
nRange==13 : パッチ/バンク
bInRange==FALSE : exec がチェックされている。
bInRange==TRUE : exec がチェックされていない。
wMin : 範囲の最小値。
wMax : 範囲の最大値。
EditCopy (EditCopy [tFrom tThru bEvents bEvtFilt bTempos bMeters bMarkers]) 編集|コピーCAL3.0互換関数
EditCut (EditCut [tFrom tThru bEvents bEvtFilt bTempos bMeters bMarkers bDelHole]) 編集|切り取りCAL3.0互換関数
EditPaste (EditPaste [tTo wReps nHoleKind bEvents bTempos bMeters bMarkers]) 編集|貼り付けCAL3.0互換関数。 nHoleKindは無視される。
EditPasteToTrack (EditPasteToTrack [tTo wReps nHoleKind bEvents bTempos bMeters bMarkers nTrack]) 編集|貼り付けCAL3.0互換関数。 nHoleKindは無視される。nTrackから貼り付けらる。
EditQuantize (EditQuantize [tFrom tThru bEvtFilt wRes nPct bTimes bDurs]) 編集|クォンタイズCAL3.0互換関数。
EditGrooveQuantize (EditGrooveQuantize [tFrom tThru bEvtFilt wRes nWindow nTimePct nDurPct nVelPct OutOfWindowMode szFilePattern]) 編集|グルーブクォンタイズCAL3.0互換関数。
EditSlide (EditSlide [tFrom tThru bEvtFilt nAmount bUnitTicks]) 編集|スライドCAL3.0互換関数。
bUnitTicks==TRUE : nAmountはティック。
bUnitTicks==FALSE : nAmountは小節。
EditTranspose (EditTranspose [tFrom tThru bEvtFilt nAmount bDiatonic) 編集|トランスポーズCAL3.0互換関数。
bUnitTicks==TRUE : nAmountはティック。
bUnitTicks==FALSE : nAmountは小節。
EditLength (EditLength [tFrom tThru bEvtFilt nPercent bStartTimes bDurations]) 編集|長さCAL3.0互換関数。
EditRetrograde (EditRetrograde [tFrom tThru bEvtFilt]) 編集|反転CAL3.0互換関数。
EditVelocityScale (EditVelocityScale [tFrom tThru bEvtFilter nBeg nEnd bUnitsPercent]) 編集|ベロシティスケールCAL3.0互換関数。
bUnitsPercent==TRUE : nBegとnEndはパーセンテージ。
bUnitsPercent==FALSE : nBegとnEndはベロシティ値。

CAL関数ジャンプ・メニュー

関数 書式対応コマンド コメント
GotoSearch(GotoSearch [NoPrompt]) ジャンプ|検索  
GotoSearchNext(GotoSearchNext) ジャンプ|次を検索  

CAL関数トラック・メニュー

トラック番号(nTrack)は0から255までの数値です。

関数 書式対応コマンド コメント
TrackName(TrackName [szName [nTrack]]) トラック|プロパティ|名前  
TrackActive (TrackActive [nActive [nTrack]]) トラック|ミュート nActive==1 : 演奏
nActive==0 : ミュート
nActive==-1 : トグル
TrackArchive (TrackArchive [nArchive [nTrack]]) トラック|アーカイブ nArchive==1 : アーカイブ
nArchive==0 : 非アーカイブ
nArchive==-1 : トグル
TrackKey+ (TrackKey+ [nAmount [nTrack]]) トラック|プロパティ|キー+ nAmount 範囲は -127〜127。
TrackVel+ (TrackVel+ [nAmount [nTrack]]) トラック|プロパティ|ベロシティ+ nAmount 範囲は -127〜127。
TrackTime+ (TrackTime+ [lAmt [nTrack]]) トラック|プロパティ|タイム+  
TrackPort (TrackPort [nPort [nTrack]]) トラック|プロパティ|ポート nPort 範囲は 0〜15
TrackChan (TrackChan [nChan [nTrack]]) トラック|プロパティ|チャンネル nChan 範囲は 0〜15
TrackBank (TrackBank [nBank [nTrack]]) トラック|プロパティ|バンク nBank 範囲は -1(無指定)〜16384
TrackPatch (TrackPatch [nPatch [nTrack]]) トラック|プロパティ|パッチ nPatch 範囲は -1(無指定)〜127
TrackVolume (TrackVolume [nVolume [nTrack]]) トラック|プロパティ|ボリューム nVolume 範囲は -1(無指定)〜127
TrackPan (TrackPan [nPan [nTrack]]) トラック|プロパティ|パン nPan 範囲は -1(無指定)〜127
TrackSelect (TrackSelect nState nTrack) トラック CAL3.0互換関数。
nState==1 : 選択
nState==0 : 選択解除
nState==-1 : トグル
nTrack==-1 : すべてのトラック


CAL関数ツール・メニュー

関数 書式対応コマンド コメント
SettingsMetronome (SettingsMetronome [bPlay bRec bAcc nCount nPort nChan nKey nVel wDur bBeep]) ツール|プロジェクトオプション|メトロノーム  
SettingsMidiIn (SettingsMidiIn [n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14 n15 n16]) ツール|プロジェクトオプション|MIDI入力 n1〜n16はMIDIチャンネル。
0 : 非録音(非エコー)。
1 : 録音(エコー)。
SettingsMidiThru (SettingsMidiThru [nMode nPort nChan nKey nVel nLocalOnPort]) ツール|プロジェクトオプション|MIDI入力|Thruマッピング  
SettingsMidiOut (SettingsMidiOut [bTxMidiRt bSendCont bSendSPP nSPPDelay bCtrlZero bCtrlChase]) ツール|プロジェクトオプション|MIDI出力  
SettingsRecordFilter (SettingsRecordFilter [bNote bKeyAft bControl bPatch bChanAft bWheel]) ツール|グローバルオプション|MIDI  
SettingsChannelTable (SettingsChannelTable [bOn n1 n2 n3 n4 n5 n6 n7 n8 n9 n10 n11 n12 n13 n14 n15 n16])    

Back [Back]