;;Choke.CAL ;; (Choing for Guitar) ;; Written By 蛞蝓なめちゃん, 1997/09/11 ;; odasan@ma.catv.ne.jp ;; 機 能 : ・読込んだ音をちょっと持ち上げてまた戻します。choking です。 ;; または、ちょっと音程を下げてまた戻します。Vibrate Arm です。 ;; 要するに pitch bend して戻します。 ;; ・指定した音の duration を調べて、 ;; その長さの p1 % の位置に bend val を書込み、 ;; p2 % の位置に bend 0 を書込みます。 ;; ・初期設定では、p1=25 % p2=50% で、 ;; val は +171 です。 ;; 使用法 : 対象範囲を選択して、本 program を実行するだけ。 ;; p1, p2, val の値を変更するときは、下記 program の該当個所を ;; 書換えてください。 ;; 注 意 : ・p1, p2 とも 指定できるのは 0 〜 100 の間です。 ;; ・val は、-8192 〜 +8191 の範囲で指定してください。 ;; ただし、pitch bend sensibility により、変化幅は変わります。 ;; ・和音に対してこれを実行すると、音の数だけ bend して ;; 音の数だけ bend 0 を書込みます。 ;; 動 作 : time base = 120 のとき、初期設定では、 ;; 4:1:000 ch=1 note=A3 vel=96 dur=2:000 を選択して実行すると、 ;; この音の後に、 ;; 4:1:060 ch=1 pitch bend +171 ;; 4:2:000 ch=1 pitch bend 0 ;; --- の 2 つのデータを加えます。 ;; UNDO : 編集メニューの「元に戻す」で、 ;; 「CAL(forEachEvent)」を取消せば、元に戻ります。 (do (int ch) (int dur) (dword time0) (dword time1) (int p1 25) ;; bend する位置 (%) (int p2 50) ;; bend を戻す位置 (%) (int val 171) ;; bend する値 (forEachEvent (if (== Event.Kind NOTE) (do (= time0 Event.Time) (= dur Note.Dur) (= ch Event.Chan) (= time1 (+ time0 (/ (* dur p1) 100))) (insert time1 ch WHEEL val) (= time1 (+ time0 (/ (* dur p2) 100))) (insert time1 ch WHEEL 0) ) ) ) )