//------------------------------------------------------------------------------ // ドラムマクロ //------------------------------------------------------------------------------ // 引数付きマクロを使った変則MML。 // 以下のような特徴を持つ。 // // -ドラム演奏の俯瞰性を高める // -手軽に強弱をつける // -Time,Sub,r0などの面倒な記述を避ける // // ◆基本記述 // // [ドラムマクロ名]で演奏楽器を指定、[ドラムマクロ制御文字]で譜面を記述する。 // // #ドラムマクロ名({ドラムマクロ制御文字}) // ※ドラムマクロ名については、[ドラムマクロ一覧]を参照 // // ■ドラムマクロ制御文字 // // ドラムマクロ制御文字は、Velocityを制御する。 // Velocity制御には相対指定を用いるので、元のVelocityが変化することは無い。 // // 弱<--------通 常------>強 // a b c d e f * g h i j k (通常打) // A B C D E F + G H I J K (2 連打) // _ (休符) // // ※アルファベットで制御するのは、Velocityである点に注意する。 // 通常のMMLのように、音程を制御するわけではない。 // // ◆Expressionの操作 // // [EP制御文字]でExpressionを操作する。 // // #EP_CONTROL({EP制御文字}) // // ■EP制御文字 // EP制御文字は、Expressionを制御する。 // // . Expression を半分のところで切る // < Expression の立ち上りを弱くする // > Expression の立ち下りを弱くする // ^ Expression の立ち上りと立ち下りを弱く (中間を強く) する // v Expression の立ち上りと立ち下りを強く (中間を弱く) する // // ◆記述例 // // 以下の例は、キックとスネアによる演奏を行い、Velocityによる緩急と // Expressionの立ち上がり操作によるゴーストノートを発生させる。 // // Include(DrumMacro.h) // TR(10)CH(10) l16 // Time(3:1:0) // #EP_CONTROL({____ ____ ____ __<_ ____ ___< _^__ ____}) // #SNARE1 ({____ *___ ____ f_d_ ____ *__d _e__ *___}) // #KICK2 ({e_d_ *_d_ e_d_ *_*_ e_d_ *_e_ e_d_ *_e_}) // //------------------------------------------------------------------------------ $_{r} #VELOC_LIST = { $a{v_(-70) #?1 } $b{v_(-60) #?1 } $c{v_(-50) #?1 } $d{v_(-40) #?1 } $e{v_(-30) #?1 } $f{v_(-20) #?1 } $*{v_( 0) #?1 } $g{v_( 10) #?1 } $h{v_( 20) #?1 } $i{v_( 30) #?1 } $j{v_( 40) #?1 } $k{v_( 50) #?1 } $A{v_(-70) [#?1 !(MML(l) / 2)] } $B{v_(-60) [#?1 !(MML(l) / 2)] } $C{v_(-50) [#?1 !(MML(l) / 2)] } $D{v_(-40) [#?1 !(MML(l) / 2)] } $E{v_(-30) [#?1 !(MML(l) / 2)] } $F{v_(-20) [#?1 !(MML(l) / 2)] } $+{v_( 0) [#?1 !(MML(l) / 2)] } $G{v_( 10) [#?1 !(MML(l) / 2)] } $H{v_( 20) [#?1 !(MML(l) / 2)] } $I{v_( 30) [#?1 !(MML(l) / 2)] } $J{v_( 40) [#?1 !(MML(l) / 2)] } $K{v_( 50) [#?1 !(MML(l) / 2)] } } //- ドラムマクロ一覧 ----------------------------------------------------------- #CONSERT_SNARE = {#VELOC_LIST({n24,}) Rhythm{{#?1}} v_(0)} #SNARE_ROLL = {#VELOC_LIST({n25,}) Rhythm{{#?1}} v_(0)} #FINGER_SNAP = {#VELOC_LIST({n26,}) Rhythm{{#?1}} v_(0)} #HIGH_Q = {#VELOC_LIST({n27,}) Rhythm{{#?1}} v_(0)} #SLAP = {#VELOC_LIST({n28,}) Rhythm{{#?1}} v_(0)} #SCRATCH_PUSH = {#VELOC_LIST({n29,}) Rhythm{{#?1}} v_(0)} #SCRATCH_PULL = {#VELOC_LIST({n30,}) Rhythm{{#?1}} v_(0)} #STICKS = {#VELOC_LIST({n31,}) Rhythm{{#?1}} v_(0)} #SQURARE_CLICK = {#VELOC_LIST({n32,}) Rhythm{{#?1}} v_(0)} #METRONOME_CLICK = {#VELOC_LIST({n33,}) Rhythm{{#?1}} v_(0)} #METRONOME_BELL = {#VELOC_LIST({n34,}) Rhythm{{#?1}} v_(0)} #KICK2 = {#VELOC_LIST({n35,}) Rhythm{{#?1}} v_(0)} #KICK1 = {#VELOC_LIST({n36,}) Rhythm{{#?1}} v_(0)} #SIDE_STICK = {#VELOC_LIST({n37,}) Rhythm{{#?1}} v_(0)} #SNARE1 = {#VELOC_LIST({n38,}) Rhythm{{#?1}} v_(0)} #HAND_CLAP = {#VELOC_LIST({n39,}) Rhythm{{#?1}} v_(0)} #SNARE2 = {#VELOC_LIST({n40,}) Rhythm{{#?1}} v_(0)} #LOW_TOM2 = {#VELOC_LIST({n41,}) Rhythm{{#?1}} v_(0)} #CLOSED_HI_HAT = {#VELOC_LIST({n42,}) Rhythm{{#?1}} v_(0)} #LOW_TOM1 = {#VELOC_LIST({n43,}) Rhythm{{#?1}} v_(0)} #PEDAL_HI_HAT = {#VELOC_LIST({n44,}) Rhythm{{#?1}} v_(0)} #MID_TOM2 = {#VELOC_LIST({n45,}) Rhythm{{#?1}} v_(0)} #OPEN_HI_HAT = {#VELOC_LIST({n46,}) Rhythm{{#?1}} v_(0)} #MID_TOM1 = {#VELOC_LIST({n47,}) Rhythm{{#?1}} v_(0)} #HIGH_TOM2 = {#VELOC_LIST({n48,}) Rhythm{{#?1}} v_(0)} #CRASH1 = {#VELOC_LIST({n49,}) Rhythm{{#?1}} v_(0)} #HIGH_TOM1 = {#VELOC_LIST({n50,}) Rhythm{{#?1}} v_(0)} #RIDE_CYMBAL1 = {#VELOC_LIST({n51,}) Rhythm{{#?1}} v_(0)} #CHINESE_CYMBAL = {#VELOC_LIST({n52,}) Rhythm{{#?1}} v_(0)} #RIDE_BELL = {#VELOC_LIST({n53,}) Rhythm{{#?1}} v_(0)} #TAMBOURINE = {#VELOC_LIST({n54,}) Rhythm{{#?1}} v_(0)} #SPLASH = {#VELOC_LIST({n55,}) Rhythm{{#?1}} v_(0)} #COWBELL = {#VELOC_LIST({n56,}) Rhythm{{#?1}} v_(0)} #CRASH2 = {#VELOC_LIST({n57,}) Rhythm{{#?1}} v_(0)} #VIBRA_SLAP = {#VELOC_LIST({n58,}) Rhythm{{#?1}} v_(0)} #RIDE_CYMBAL2 = {#VELOC_LIST({n59,}) Rhythm{{#?1}} v_(0)} #HIGH_BONGO = {#VELOC_LIST({n60,}) Rhythm{{#?1}} v_(0)} #LOW_BONGO = {#VELOC_LIST({n61,}) Rhythm{{#?1}} v_(0)} #MUTE_HIGH_CONGA = {#VELOC_LIST({n62,}) Rhythm{{#?1}} v_(0)} #OPEN_HIGH_CONGA = {#VELOC_LIST({n63,}) Rhythm{{#?1}} v_(0)} #LOW_CONGA = {#VELOC_LIST({n64,}) Rhythm{{#?1}} v_(0)} #HIGH_TIMBALE = {#VELOC_LIST({n65,}) Rhythm{{#?1}} v_(0)} #LOW_TIMBALE = {#VELOC_LIST({n66,}) Rhythm{{#?1}} v_(0)} #HIGH_AGOGO = {#VELOC_LIST({n67,}) Rhythm{{#?1}} v_(0)} #LOW_AGOGO = {#VELOC_LIST({n68,}) Rhythm{{#?1}} v_(0)} #CABASA = {#VELOC_LIST({n69,}) Rhythm{{#?1}} v_(0)} #MARACAS = {#VELOC_LIST({n70,}) Rhythm{{#?1}} v_(0)} #SHORT_HI_WHISTLE= {#VELOC_LIST({n71,}) Rhythm{{#?1}} v_(0)} #LONG_LOW_WHISTLE= {#VELOC_LIST({n72,}) Rhythm{{#?1}} v_(0)} #SHORT_GUIRO = {#VELOC_LIST({n73,}) Rhythm{{#?1}} v_(0)} #LONG_GUIRO = {#VELOC_LIST({n74,}) Rhythm{{#?1}} v_(0)} #CLAVES = {#VELOC_LIST({n75,}) Rhythm{{#?1}} v_(0)} #HIGH_WOOD_BLOCK = {#VELOC_LIST({n76,}) Rhythm{{#?1}} v_(0)} #LOW_WOOD_BLOCK = {#VELOC_LIST({n77,}) Rhythm{{#?1}} v_(0)} #MUTE_CUICA = {#VELOC_LIST({n78,}) Rhythm{{#?1}} v_(0)} #OPEN_CUICA = {#VELOC_LIST({n79,}) Rhythm{{#?1}} v_(0)} #MUTE_TRIANGLE = {#VELOC_LIST({n80,}) Rhythm{{#?1}} v_(0)} #OPEN_TRIANGLE = {#VELOC_LIST({n81,}) Rhythm{{#?1}} v_(0)} #SHAKER = {#VELOC_LIST({n82,}) Rhythm{{#?1}} v_(0)} #JINGLE_BELL = {#VELOC_LIST({n83,}) Rhythm{{#?1}} v_(0)} #BELL_TREE = {#VELOC_LIST({n84,}) Rhythm{{#?1}} v_(0)} #CASTANETS = {#VELOC_LIST({n85,}) Rhythm{{#?1}} v_(0)} #MUTE_SURDO = {#VELOC_LIST({n86,}) Rhythm{{#?1}} v_(0)} #OPEN_SURDO = {#VELOC_LIST({n87,}) Rhythm{{#?1}} v_(0)} //------------------------------------------------------------------------------ #EP_CONTROL = { $.{EP.WE((127,127,!1),( 0, 0,!1)) r? EP(127)} $<{EP.WE(( 71,127,!1),(127,127,!1)) r? EP(127)} $>{EP.WE((127,127,!1),(127, 71,!1)) r? EP(127)} $^{EP.WE(( 79,127,!1),(127, 79,!1)) r? EP(127)} $v{EP.WE((127, 79,!1),( 79,127,!1)) r? EP(127)} Rhythm{{#?1}} } //------------------------------------------------------------------------------