
// Standard defines shared by most of the libary files. All patterns
// here assume that TIME is set to 4.

// All volumes are 90. If you need different volumes use
// one of (or combination) of Volume and Accent. Or redefine
// the sequence.

if NE  $_TIME 4
	Print Warning: Including pattern defs for TIME-4, but TIME is $_TIME !
Endif


Begin Drum Define

	// All drum notes use single MIDI tick (duration==0)

    D1       1 0 90          // Hit on 1
    D2       D1 Shift 1      // Hit on 2
    D3       D1 Shift 2      // Hit on 3
    D4       D1 Shift 3      // Hit on 4
    D12      D1; D2          // Hits on 1 and 2
    D13      D1 * 2          // Hits on 1 and 3
    D14      D1; D4          // Hits on 1 and 4
    D23      D12 Shift 1     // Hits on 2 and 3
    D24      D13 Shift 1     // Hits on 2 and 4
    D34      D23 Shift 1     // Hits on 3 and 4
    D123     D1; D23         // Hits on 1, 2 and 3
    D124     D1; D24         // Hits on 1, 2 and 4
    D134     D1; D34         // Hits on 1, 3 and 4
    D234     D123 Shift 1    // Hits on 2, 3 and 4
    D1234    D1 * 4          // hits on 1,2,3 & 4
    D8       D1 * 8          // 8 hits
    D16      D1 * 16         // 16ths ... a roll?
    Droll    D1 * 32         // 32nds ... certainly a roll

	Triple6  D1 * 6          // 6 8th note triplets

	// For latin we often need clave. This defines the 2 and 3 patterns

	Clave2   D23
	Clave3   D14; D2 Shift .5

	// These give 2, 4 or 8 hits on beat 1; use shift to expand to beat 2,3,4

	2S       1 0 90; 1.5 0 90
	4S       2S; 2S Shift .25
	8S       4S; 4S Shift .125

End

// Define runs to use in scales. Whole notes to 32nds.

Begin Scale Define
    Scale        1 1 90
    Scale2       Scale * 2
    Scale4       Scale * 4
    Scale8       Scale * 8
    Scale16      Scale * 16
    Scale32      Scale * 32
End


Begin Bass Define
    B1      1 4 1 90               // Root on 1
    B3      1 4 5 90               // 5th on 1
    B13     B1 ; 3 4 5 90          // Root on 1, 5th on 3
    B11     B1 ; B1 Shift 2        // Root on 1 and 3
    B1234   B13; B13 Shift 1       // Root, 5, Root, 5

    // These are used as sustained strings on root, 3rd, 5th

    Sus1   1 1 1 90 * 4
    Sus3   1 1 3 90 * 4
    Sus5   1 1 5 90 * 4
End

// Define arpeggios just like scale runs. You can use DIRECTION
// and RSKIP to vary the patterns.

Begin Arpeggio Define
    A1       1 1 90
    A2       A1 * 2
    A4       A1 * 4
    A6       A1 * 6
    A8       A1 * 8
    A16      A1 * 16
End

Begin Chord Define
    C1     1 4 90			// quarter on 1
    C2     C1 Shift 1       // quarter on 2
    C3     C1 Shift 2       // quarter on 3
    C4     C1 Shift 3       // quarter on 4
    C12    C1; C2           // quarters on 1 and 2
    C13    C1 ; C3          // quarters on 1 and 3
    C14    C1 ; C4          // quarters on 1 and 4
    C23    C12 Shift 1      // quarters on 2 and 3
    C24    C13 Shift 1      // quarters on 2 and 4
    C34    C23 Shift 1      // quarters on 3 and 4
    C123   C12; C3          // quarters on 1, 2 and 3
    C124   C12; C4          // quarters on 1, 2 and 4
    C134   C1; C34          // quarters on 1, 3 and 4
    C234   C23; C4          // quarters on 2, 3 and 4
    C1234  1 1 90 * 4       // quarters on 1, 2, 3 and 4
    C8     C1234 * 2        // 8 eights

    L1     1 1 90           // Whole note
    L2     L1 * 2           // 2 half notes

	Triple3  L1 * 3         // 3 1/4 triplets
	Triple6  L1 * 6         // 6 8th triplets
End


Begin Walk Define
    W1234     1 1 90 * 4           // Walk on 1, 2, 3 and 4
    W13       1 4 90 ; 3 4 90      // 1 and 3
    W8        W1234 * 2            // Eights
End

///////// Swing patterns

StackValue $_SwingMode
SwingMode On

Begin Drum Define
	Swing8 1 0 90 * 8
End

Begin Arpeggio Define
	Swing8   1 1  90 * 8
End

SwingMode $_StackValue
