;;ClCont.CAL ;; (Clean Redundant Controlers) ;; Written By 蛞蝓なめちゃん, 1998/12/24 ;; odasan@ma.catv.ne.jp ;; 機 能 : 重複している Controler の後ろの方を削除します。 ;; 使用法 : 対象範囲の音を選択して、本 program を実行します。 ;; とても時間がかかります。 ;; 現在何番のコントローラを処理中かが、ウィンドウ下のステータスバーに ;; 表示されます。 ;; 注 意 : クリップにまたがった範囲指定をすると、うまく動作しないことがあ ;; ります。トラックごとにクリップを結合してから実行しましょう。 ;; UNDO : (forEachEvent) をたくさん使っているので ;; コントローラの種類が多いと厄介です。 (do (int cont 0) (int value -1) (int min 128) (int max -1) (forEachEvent (if (== Event.Kind CONTROL) (do (if (< Control.Num min) (= min Control.Num) ) (if (> Control.Num max) (= max Control.Num) ) ) ) ) (= cont min) (while (<= cont max) (do (forEachEvent (if (&& (== Event.Kind CONTROL) (== Control.Num cont)) (if (== Control.Val value) (delete) (= value Control.Val) ) ) ) (++ cont) (message "Now Check cc#" cont ":" min "-" max) ) ) )