;;Merihari.cal ;; Written By 蛞蝓なめちゃん, 1997/09/10 ;; odasan@ma.catv.ne.jp ;; 機 能 : ・拍位置によって、velocity を変えます。 ;; ・元の音の velocity だけを書換えています。 ;; 使用法 : ・対象範囲を選択して、本 program を実行。 ;; それぞれの値は、 下記 program のパラメータを ;; 書換えて指定しまーす。 ;; 注 意 : ・シンコペーションは、手動で設定せにゃならんです。 ;; ・8 拍子までに対応していますが、たとえば3拍子の曲なら ;; beat 4 〜 8 を設定しても無視します。 ;; UNDO : できます。編集メニューから「やり直し」で、 ;; 「CAL(forEachEvent)」を元に戻します。 (do ;; ↓ ここの値を適宜書換えて使います。 (int velo1 112) ;; beat 1 --- 1 拍めのベロシティ (現在 112) (int velo2 104) ;; beat 2 --- 2 拍めのベロシティ (現在 104) (int velo3 108) ;; beat 3 --- 3 拍めのベロシティ (現在 108) (int velo4 104) ;; beat 4 --- 4 拍めのベロシティ (現在 104) (int velo5 0) ;; beat 5 --- 5 拍めのベロシティ (現在 0) (int velo6 0) ;; beat 6 --- 6 拍めのベロシティ (現在 0) (int velo7 0) ;; beat 7 --- 7 拍めのベロシティ (現在 0) (int velo8 0) ;; beat 8 --- 8 拍めのベロシティ (現在 0) (int velo9 100) ;; beat n.5 - 1 拍の半分の位置全部 (現在 100) (int velo0 96) ;; else ----- 上記以外の位置 (現在 96) (int b) (int t) (int h) (= h (/ TIMEBASE 2)) (forEachEvent (if (== Event.Kind NOTE) (do (= b (beat Event.Time)) (= t (tick Event.Time)) (if (!= t 0) (if (== t h) (= Note.Vel velo9) (= Note.Vel velo0) ) (switch b 1 (= Note.Vel velo1) 2 (= Note.Vel velo2) 3 (= Note.Vel velo3) 4 (= Note.Vel velo4) 5 (= Note.Vel velo5) 6 (= Note.Vel velo6) 7 (= Note.Vel velo7) 8 (= Note.Vel velo8) ) ) ) ) ) )