;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Stroke.CAL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;ギターのコードストロークのようにコードの発音タイミングをずらします。 ;<使用法> ;はじめのダイアログで”Down”を選択すると低音から高音へ ;”Up”を選択すると高音から低音へと音をずらします。 ;またここで”8beat””16beat”を選択すると広範囲のコードについて ;一括してオモテはDownで、ウラはUpで表現することができます。 ;2つめのダイアログでは各音を何ティックずつずらすかを指定します。 ; ;<注意> ;カレントトラックはCALを実行するトラックに合わせておいて下さい。 ;同トラックでしたら複数のコードについて同時に使用できますが ;複数のトラックには同時に使用できません。 ; ;1999/3/8 Takayuki Hara ;e-mail : t90349@mail.ecc.u-tokyo.ac.jp ;URL : http://user.ecc.u-tokyo.ac.jp/~t90349/ ;※ノートの長さが極端に短いものは、デュレーションを変更しないようにしました。 by 椎太 (do (int st 1) (int down 1) (int tk 0) (int del 5) (long t -1) (int n 1) (int d 0) (int kt 128) (int k1 128) (int k2 128) (int k3 128) (int k4 128) (int k5 128) (int k6 128) (int vt 128) (int v1 128) (int v2 128) (int v3 128) (int v4 128) (int v5 128) (int v6 128) (int MinDel 80);この値以下のデュレーションは変更しません。打ち込みスタイルに合わせて調整してください。 ;デフォルトはタイムベース960の値で、960以外の場合はそれに応じて計算されます。 (/= MinDel (/ 960 TIMEBASE)) (getInt st "1; Down 2; Up 3; 8beat 4; 16beat" 1 4) (getInt del "How many ticks is each note separated?" 0 480) (switch st 1 (= down 1) 2 (= down 0) );switch (forEachEvent (if (== Event.Kind NOTE);if1 (if (|| (== t Event.Time) (== t -1));if2 (do (switch n 1 (do (= k1 Note.Key) (= v1 Note.Vel) (= d Note.Dur) (= n 2)) 2 (do (= k2 Note.Key) (= v2 Note.Vel) (= n 3)) 3 (do (= k3 Note.Key) (= v3 Note.Vel) (= n 4)) 4 (do (= k4 Note.Key) (= v4 Note.Vel) (= n 5)) 5 (do (= k5 Note.Key) (= v5 Note.Vel) (= n 6)) 6 (do (= k6 Note.Key) (= v6 Note.Vel) (= n 7)) );switch (= t Event.Time) (delete) );do (do ;else (= kt k1) (= vt v1) (if (< k2 k1) (do (= k1 k2) (= k2 kt) (= v1 v2) (= v2 vt) (= kt k1) (= vt v1))) (if (< k3 k1) (do (= k1 k3) (= k3 kt) (= v1 v3) (= v3 vt) (= kt k1) (= vt v1))) (if (< k4 k1) (do (= k1 k4) (= k4 kt) (= v1 v4) (= v4 vt) (= kt k1) (= vt v1))) (if (< k5 k1) (do (= k1 k5) (= k5 kt) (= v1 v5) (= v5 vt) (= kt k1) (= vt v1))) (if (< k6 k1) (do (= k1 k6) (= k6 kt) (= v1 v6) (= v6 vt) (= kt k1) (= vt v1))) (= kt k2) (= vt v2) (if (< k3 k2) (do (= k2 k3) (= k3 kt) (= v2 v3) (= v3 vt) (= kt k2) (= vt v2))) (if (< k4 k2) (do (= k2 k4) (= k4 kt) (= v2 v4) (= v4 vt) (= kt k2) (= vt v2))) (if (< k5 k2) (do (= k2 k5) (= k5 kt) (= v2 v5) (= v5 vt) (= kt k2) (= vt v2))) (if (< k6 k2) (do (= k2 k6) (= k6 kt) (= v2 v6) (= v6 vt) (= kt k2) (= vt v2))) (= kt k3) (= vt v3) (if (< k4 k3) (do (= k3 k4) (= k4 kt) (= v3 v4) (= v4 vt) (= kt k3) (= vt v3))) (if (< k5 k3) (do (= k3 k5) (= k5 kt) (= v3 v5) (= v5 vt) (= kt k3) (= vt v3))) (if (< k6 k3) (do (= k3 k6) (= k6 kt) (= v3 v6) (= v6 vt) (= kt k3) (= vt v3))) (= kt k4) (= vt v4) (if (< k5 k4) (do (= k4 k5) (= k5 kt) (= v4 v5) (= v5 vt) (= kt k4) (= vt v4))) (if (< k6 k4) (do (= k4 k6) (= k6 kt) (= v4 v6) (= v6 vt) (= kt k4) (= vt v4))) (= kt k5) (= vt v5) (if (< k6 k5) (do (= k5 k6) (= k6 kt) (= v5 v6) (= v6 vt) (= kt k5) (= vt v5))) (switch st 3 (do (= tk (/ (tick t) (/ TIMEBASE 4))) (if (|| (== tk 0) (== tk 3)) (= down 1) (= down 0) ) ) 4 (do (= tk (/ (tick t) (/ TIMEBASE 8))) (if (|| (|| (== tk 0) (== tk 3)) (|| (== tk 4) (== tk 7)));if4 (= down 1) (= down 0) ) ) );switch (if (== down 1) (do (if (> n 1) (insert t Event.Chan NOTE k1 v1 d)) (if (> n 2) (if (> d MinDel) (insert (+ t del) Event.Chan NOTE k2 v2 (- d del)) (insert (+ t del) Event.Chan NOTE k2 v2 d) ) ) (if (> n 3) (if (> d MinDel) (insert (+ t (* del 2)) Event.Chan NOTE k3 v3 (- d (* del 2))) (insert (+ t (* del 2)) Event.Chan NOTE k3 v3 d) ) ) (if (> n 4) (if (> d MinDel) (insert (+ t (* del 3)) Event.Chan NOTE k4 v4 (- d (* del 3))) (insert (+ t (* del 3)) Event.Chan NOTE k4 v4 d) ) ) (if (> n 5) (if (> d MinDel) (insert (+ t (* del 4)) Event.Chan NOTE k5 v5 (- d (* del 4))) (insert (+ t (* del 4)) Event.Chan NOTE k5 v5 d) ) ) (if (> n 6) (if (> d MinDel) (insert (+ t (* del 5)) Event.Chan NOTE k6 v6 (- d (* del 5))) (insert (+ t (* del 5)) Event.Chan NOTE k6 v6 d) ) ) ) (do (if (> n 1) (if (> d MinDel) (insert (+ t (* del (- n 2))) Event.Chan NOTE k1 v1 (- d (* del (- n 2)))) (insert (+ t (* del (- n 2))) Event.Chan NOTE k1 v1 d) ) ) (if (> n 2) (if (> d MinDel) (insert (+ t (* del (- n 3))) Event.Chan NOTE k2 v2 (- d (* del (- n 3)))) (insert (+ t (* del (- n 3))) Event.Chan NOTE k2 v2 d) ) ) (if (> n 3) (if (> d MinDel) (insert (+ t (* del (- n 4))) Event.Chan NOTE k3 v3 (- d (* del (- n 4)))) (insert (+ t (* del (- n 4))) Event.Chan NOTE k3 v3 d) ) ) (if (> n 4) (if (> d MinDel) (insert (+ t (* del (- n 5))) Event.Chan NOTE k4 v4 (- d (* del (- n 5)))) (insert (+ t (* del (- n 5))) Event.Chan NOTE k4 v4 d) ) ) (if (> n 5) (if (> d MinDel) (insert (+ t (* del (- n 6))) Event.Chan NOTE k5 v5 (- d (* del (- n 6)))) (insert (+ t (* del (- n 6))) Event.Chan NOTE k5 v5 d) ) ) (if (> n 6) (if (> d MinDel) (insert (+ t (* del (- n 7))) Event.Chan NOTE k6 v6 (- d (* del (- n 7)))) (insert (+ t (* del (- n 7))) Event.Chan NOTE k6 v6 d) ) ) ) ) (= k1 Note.Key) (= v1 Note.Vel) (= d Note.Dur) (= n 2) (= k2 128) (= k3 128) (= k4 128) (= k5 128) (= k6 128) (= t Event.Time) (delete) );do else );if2 ) ;if1 );for (do (= kt k1) (= vt v1) (if (< k2 k1) (do (= k1 k2) (= k2 kt) (= v1 v2) (= v2 vt) (= kt k1) (= vt v1))) (if (< k3 k1) (do (= k1 k3) (= k3 kt) (= v1 v3) (= v3 vt) (= kt k1) (= vt v1))) (if (< k4 k1) (do (= k1 k4) (= k4 kt) (= v1 v4) (= v4 vt) (= kt k1) (= vt v1))) (if (< k5 k1) (do (= k1 k5) (= k5 kt) (= v1 v5) (= v5 vt) (= kt k1) (= vt v1))) (if (< k6 k1) (do (= k1 k6) (= k6 kt) (= v1 v6) (= v6 vt) (= kt k1) (= vt v1))) (= kt k2) (= vt v2) (if (< k3 k2) (do (= k2 k3) (= k3 kt) (= v2 v3) (= v3 vt) (= kt k2) (= vt v2))) (if (< k4 k2) (do (= k2 k4) (= k4 kt) (= v2 v4) (= v4 vt) (= kt k2) (= vt v2))) (if (< k5 k2) (do (= k2 k5) (= k5 kt) (= v2 v5) (= v5 vt) (= kt k2) (= vt v2))) (if (< k6 k2) (do (= k2 k6) (= k6 kt) (= v2 v6) (= v6 vt) (= kt k2) (= vt v2))) (= kt k3) (= vt v3) (if (< k4 k3) (do (= k3 k4) (= k4 kt) (= v3 v4) (= v4 vt) (= kt k3) (= vt v3))) (if (< k5 k3) (do (= k3 k5) (= k5 kt) (= v3 v5) (= v5 vt) (= kt k3) (= vt v3))) (if (< k6 k3) (do (= k3 k6) (= k6 kt) (= v3 v6) (= v6 vt) (= kt k3) (= vt v3))) (= kt k4) (= vt v4) (if (< k5 k4) (do (= k4 k5) (= k5 kt) (= v4 v5) (= v5 vt) (= kt k4) (= vt v4))) (if (< k6 k4) (do (= k4 k6) (= k6 kt) (= v4 v6) (= v6 vt) (= kt k4) (= vt v4))) (= kt k5) (= vt v5) (if (< k6 k5) (do (= k5 k6) (= k6 kt) (= v5 v6) (= v6 vt) (= kt k5) (= vt v5))) (switch st 3 (do (= tk (/ (tick t) (/ TIMEBASE 4))) (if (|| (== tk 0) (== tk 3)) (= down 1) (= down 0) ) ) 4 (do (= tk (/ (tick t) (/ TIMEBASE 8))) (if (|| (|| (== tk 0) (== tk 3)) (|| (== tk 4) (== tk 7)));if4 (= down 1) (= down 0) ) ) );switch (if (== down 1) (do (if (> n 1) (insert t Event.Chan NOTE k1 v1 d)) (if (> n 2) (if (> d MinDel) (insert (+ t del) Event.Chan NOTE k2 v2 (- d del)) (insert (+ t del) Event.Chan NOTE k2 v2 d) ) ) (if (> n 3) (if (> d MinDel) (insert (+ t (* del 2)) Event.Chan NOTE k3 v3 (- d (* del 2))) (insert (+ t (* del 2)) Event.Chan NOTE k3 v3 d) ) ) (if (> n 4) (if (> d MinDel) (insert (+ t (* del 3)) Event.Chan NOTE k4 v4 (- d (* del 3))) (insert (+ t (* del 3)) Event.Chan NOTE k4 v4 d) ) ) (if (> n 5) (if (> d MinDel) (insert (+ t (* del 4)) Event.Chan NOTE k5 v5 (- d (* del 4))) (insert (+ t (* del 4)) Event.Chan NOTE k5 v5 d) ) ) (if (> n 6) (if (> d MinDel) (insert (+ t (* del 5)) Event.Chan NOTE k6 v6 (- d (* del 5))) (insert (+ t (* del 5)) Event.Chan NOTE k6 v6 d) ) ) ) (do (if (> n 1) (if (> d MinDel) (insert (+ t (* del (- n 2))) Event.Chan NOTE k1 v1 (- d (* del (- n 2)))) (insert (+ t (* del (- n 2))) Event.Chan NOTE k1 v1 d) ) ) (if (> n 2) (if (> d MinDel) (insert (+ t (* del (- n 3))) Event.Chan NOTE k2 v2 (- d (* del (- n 3)))) (insert (+ t (* del (- n 3))) Event.Chan NOTE k2 v2 d) ) ) (if (> n 3) (if (> d MinDel) (insert (+ t (* del (- n 4))) Event.Chan NOTE k3 v3 (- d (* del (- n 4)))) (insert (+ t (* del (- n 4))) Event.Chan NOTE k3 v3 d) ) ) (if (> n 4) (if (> d MinDel) (insert (+ t (* del (- n 5))) Event.Chan NOTE k4 v4 (- d (* del (- n 5)))) (insert (+ t (* del (- n 5))) Event.Chan NOTE k4 v4 d) ) ) (if (> n 5) (if (> d MinDel) (insert (+ t (* del (- n 6))) Event.Chan NOTE k5 v5 (- d (* del (- n 6)))) (insert (+ t (* del (- n 6))) Event.Chan NOTE k5 v5 d) ) ) (if (> n 6) (if (> d MinDel) (insert (+ t (* del (- n 7))) Event.Chan NOTE k6 v6 (- d (* del (- n 7)))) (insert (+ t (* del (- n 7))) Event.Chan NOTE k6 v6 d) ) ) ) ) (= k1 Note.Key) (= v1 Note.Vel) (= n 2) (= k2 128) (= k3 128) (= k4 128) (= k5 128) (= k6 128) (= t Event.Time) );do );end