;; RandomShift.CAL ;; ;; Written By 蛞蝓なめちゃん, 1998/12/24 ;; odasan@ma.catv.ne.jp ;; 機 能 : ・指定した範囲のイベントの開始タイムを、ランダムに移動します。 ;; 使用法 : ・対象範囲を選択して、本 program を実行します。 ;; ・"max shift ticks ?" というメッセージに対し、 ;; 移動させる最大値を指定します。 ;; ・前のイベントとの tick 差が小さい場合には、その間隔を保ったまま ;; 移動させることができます。初期値は 8 tick で、 ;; 間隔が 8 tick 以下のときはその間隔が保たれます。 ;; この値を変更するときは、下記の (long s 8) の '8'を書換えて保存 ;; し直してから実行してください。 ;; s を '-1' に設定すると、同一 tick 上にあるイベントもランダムに ;; シフトします。 ;; 注 意 : ・移動は後ろ方向のみです。前にシフトさせたい場合や、 ;; 前後にシフトさせたい場合は、Cakewalk の「編集」メニューから ;; 指定範囲を「スライド」させてから実行しましょう。 ;; UNDO : 編集メニューの「元に戻す」で、 ;; 「CAL(forEachEvent)」を取消せば、元に戻ります。 (do (int max) (int shift) (long s 8) ;; 直前の Event との tick 差がこの値以下の場合は ;; 直前の Event と同じ値だけ移動する。 (dword time0 0) (getInt max "max shift ticks ?" 0 32767) (forEachEvent (do (if (< s (- Event.Time time0)) ;; 超 : 新しい shift 値を設定 (= shift (random 0 max)) ) (= time0 Event.Time) (+= Event.Time shift) ) ) )