【第2章】 Museコーディングの手引き

■より高度な記述

  1. 演奏パターンの部品化

    マクロは繰返し記号への対応という使い方以外にも“演奏パターンの部品化”という活用もできます。曲の後半に旋律やリズムのデータを部品化し、それをマクロとして定義しておきます。そして、実際の演奏は曲の前半で展開マクロで行います。しかし、Museでは定義マクロも演奏対象になるため、このままでは後半の部品定義部分まで演奏されてしまいます。そこで、前半部と後半部の間に曲を終了させるコマンド*STOP""を記述しておきます。この様な記述にすると曲全体の進行構造がよくわかり、編曲がしやすくなります。なお、*STOP""以降で演奏対象にならない部分は、文法エラーを検出しません。以下は、前節の曲を部品化した形式で書き直した例です。

    
    ★クラリネットをこわしちゃった(マクロを部品として利用)
    %%280 \-                     ;←%を重ねている理由は補足を参照のこと
    @K V080 P49 S0 T0 Q00 R40 W0
    @M V120 P70 S0 T0 Q10 R60 W0
    @N V120 P72 S0 T0 Q20 R60 W0
    #K0 o6 v80
    #M0 o4 v80
    #N0 o4 v120
    
    *TEXT"部品形式で書き直しました(今演奏しているのは部品1です)"
    ${Part1}
    
    *TEXT"ここで、部品2に入ります"
    ${Part2}
    #K0 ┃'F'2_┃
    #M0 ┃f1   ┃
    #N0 ┃f1   ┃
    
    *TEXT"部品1に戻りました"
    ${Part1}
    
    *TEXT"再度、部品2を演奏します"
    ${Part2}
    #K0 ┃'F'2_┃
    #M0 ┃f1   ┃
    #N0 ┃f1   ┃
    
    *TEXT"次は、部品3です"
    ${Part3}
    
    *TEXT"またしても、部品2に戻りました"
    ${Part2}
    
    *TEXT"最後に、コーダの部品4"
    ${Part4}
    
    ${Drum}       ; ←●前節で定義してあるドラムセットを再利用しています
    
    _2
    *TEXT"以上です"
    
    *STOP"" ;==========⇒●ここで演奏終了(以下は実体のデータ)
    
    ■部品1
    $Part1{
        #K0┃'F'1&┃'F' ┃'F'&   ┃'F'2._4┃
           ┃'F'1&┃'F' ┃'F'&   ┃'F'2._4┃
        #M0┃f4fff┃fffs┃l2.s4  ┃f2d4_  ┃
           ┃f4fff┃fffs┃l2.s4  ┃f2d4_  ┃
        #N0┃f4fff┃fffs┃l2.s4  ┃f2d4_  ┃
           ┃l4lll┃lllc┃<d2.>c4┃l2f4_  ┃
    }
    
    ■部品2
    $Part2{
        #K0┃'F'1        ┃'D7>>'    ┃'Gm7'&     ┃'Gm7'2_         ┃    
           ┃'C7>>'1&    ┃'C7>>'    ┃'F'&       ┃'F'2_           ┃
           ┃'F'1&       ┃'F'4_2.   ┃'F'1&      ┃'F'1            ┃
           ┃'F'1&       ┃'F'       ┃'D7>>'     ┃'Gm'4'D7>>''Gm'2┃
           ┃'C7>>'1&    ┃'C7>>'&   ┃'C7>>'     ┃
        #M0┃l2l4.//l8// ┃f+4rmf+   ┃s2s4.//s8//┃s2_             ┃
           ┃s4//ss4.//f8┃m4drm     ┃f2f4.//f8//┃f2_             ┃
           ┃l2.s4       ┃f4___     ┃l2.s4      ┃f4__<d>         ┃
           ┃l4l8ll4<d>  ┃l4l8ll4<d>┃<rd>cl     ┃slcc            ┃
           ┃s4s8ss4c    ┃s4s8ss4c  ┃<d>cls     ┃
        #N0┃<d2d4.//d8//┃r4d>cl    ┃c2c4.//c8//┃c2_             ┃
           ┃c4//cc4.//c8┃<d4>cls   ┃l2l4.//l8//┃l2_             ┃
           ┃<d2.>c4     ┃l4___     ┃<d2.>c4    ┃l4__<d>         ┃
           ┃l4l8ll4<d>  ┃l4l8ll4<d>┃<rd>cl     ┃slcc            ┃
           ┃s4s8ss4c    ┃s4s8ss4c  ┃<d>cls     ┃
    }
    
    ■部品3
    $Part3{
        #K0┃'F'1&┃'F'    ┃'F'&   ┃'F' ┃
           ┃'F'1&┃'F'    ┃'F'&   ┃'F' ┃
           ┃'F'1&┃'F'    ┃'F'&   ┃'F' ┃
        #M0┃f4fff┃ffff   ┃ffff   ┃fffs┃
           ┃l2.s4┃f2d    ┃f4fff  ┃ffff┃
           ┃f4fff┃fffs   ┃l2.s4  ┃f2d ┃
        #N0┃f4fff┃ffff   ┃ffff   ┃fffs┃
           ┃l2.s4┃f2d    ┃l4lll  ┃llll┃
           ┃l4lll┃lllc   ┃<d2.>c4┃l2f ┃
    }
    
    ■部品4
    $Part4{
        #K0┃'F'4_'C7>>'_┃'F'__2┃
        #M0┃f4//_<d>_   ┃<f>__2┃
        #N0┃f4//_<d>_   ┃<f>__2┃
    }
    再現表記の活用で紹介した「リズムパターンの分離」とゼロ音長を利用して、リズムのマクロ化を実現することもできます。*STOP""以降で、再現表記,だけで発音する和音やコードのないリズムだけの定義をしておき、マクロを展開する際にゼロ音長で、発音する和音やコードを指定するという方法です。
    ┌─→'Cm'0  ${Rhythm}    ;Cマイナーのコードをリズムパターンで演奏
    ├─→[dms]0 ${Rhythm}    ;ドミソの和音をリズムパターンで演奏
    │
    │    *STOP""
    │
    └──$Rhythm{,4,4,8,8,4} ;リズムパターンの定義