
// 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

    // Useful for triplet patterns ... this gives 3 hits on beat 1. Shift to preference

    3S       1 0 90; 1.33 0 80; 1.66 0 70
    
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   B11; B3 Shift 1; B3 Shift 3    // Root, 5, Root, 5

    // A little run up. Plays root, 3rd, 4th and 4th (next bar play a 5th)
    B1to4   1 4 1 80; 2 4 2 85; 3 4 3 90; 4 4 4 100
    // A run down, 5th, 4rd, 3rd, 2nd (next bar play a root)
    B5to2   1 4 5 90; 2 4 4 85; 3 4 3 80; 4 4 2 75

    // Just a long note
    Sus1   1 1 1 90 
    Sus3   1 1 3 90 
    Sus5   1 1 5 90 
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
    W12       1 4 90; 2 4 90       // 1 and 2
    W13       1 4 90 ; 3 4 90      // 1 and 3
    W124      1 4 90; 2 4 80; 4 4 90  // 1,2 and 4
    W134      1 4 90; 3 5 80; 4 4 90  // 1,3 and 4
    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
