Subversion Repositories svn.mios

Rev

Rev 555 | Rev 666 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 555 Rev 628
Line 21... Line 21...
21
package org.midibox.sidlibr;
21
package org.midibox.sidlibr;
22
22
23
import javax.sound.midi.MidiMessage;
23
import javax.sound.midi.MidiMessage;
24
import javax.sound.midi.Receiver;
24
import javax.sound.midi.Receiver;
25
import javax.sound.midi.SysexMessage;
25
import javax.sound.midi.SysexMessage;
-
 
26
26
import org.midibox.sidedit.SIDSysexInfo;
27
import org.midibox.sidedit.SIDSysexInfo;
27
28
28
public class Patch implements Receiver {
29
public class Patch implements Receiver {
29
    public static Object LEAD = new Object();
30
    public static Object LEAD = new Object();
30
    public static Object BASSLINE = new Object();
31
    public static Object BASSLINE = new Object();
Line 32... Line 33...
32
    public static Object MULTI = new Object();
33
    public static Object MULTI = new Object();
33
    private static int delay = 10;              //Delay in ms between Sysex Strings
34
    private static int delay = 10; // Delay in ms between Sysex Strings
34
    protected int[] patch = new int[512];
35
    protected int[] patch = new int[512];
35
    private int WOPT = 0;  
36
    private int WOPT = 0;
36
    protected Receiver receiver;
37
    protected Receiver receiver;
37
-
 
38
38
39
        // TK: for quick & dirty initialisation
39
    // TK: for quick & dirty initialisation
-
 
40
    // presets are based on
40
        // presets are based on $MIOS_PATH/apps/synthesizers/midibox_sid_v2/src/sid_preset_*.inc
41
    // $MIOS_PATH/apps/synthesizers/midibox_sid_v2/src/sid_preset_*.inc
41
        final int[] defaultLeadPatch = new int[] {
42
    final int[] defaultLeadPatch = new int[] { 0x4C, 0x65, 0x61, 0x64, 0x20,
42
        0x4C, 0x65, 0x61, 0x64, 0x20, 0x50, 0x61, 0x74,  0x63, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
43
            0x50, 0x61, 0x74, 0x63, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
43
        0x00,   0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
44
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
44
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
45
            0x00, 0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x80, 0x00,
45
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
46
            0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x80, 0x00, 0xff,
46
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
47
            0x00, 0x00, 0x80, 0x00, 0xff, 0x50, 0x00, 0x80, 0x00, 0xff, 0x00,
47
        0x50, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
48
            0x00, 0x80, 0x00, 0xff, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
48
        0x00, 0x80,
-
 
49
        0x00, 0x80,
-
 
50
        0x00, 0x80,
-
 
51
        0x00, 0x80,
-
 
52
        0x00, 0x80,
-
 
53
        0x00, 0x80,
-
 
54
        0x00, 0x80,
-
 
55
        0x00, 0x80,
49
            0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00,
56
        0x00,  0x00, 0x7f, 0x00,
50
            0x7f, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02,
57
        0x10,  0x00, 0x02, 0x00, 0x00, 0x00,
51
            0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00,
58
        0x10,  0x00, 0x02, 0x00, 0x00, 0x00,
52
            0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00, 0x00, 0x14, 0x00,
59
        0x00, 0x04, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
53
            0xf0, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f,
60
        0x00, 0x14, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
54
            0x05, 0x00, 0x00, 0x14, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x40,
61
        0x00, 0x14, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
55
            0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00, 0x00, 0x04, 0x00, 0xf0,
62
        0x00, 0x04, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
56
            0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05,
63
        0x00, 0x14, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
57
            0x00, 0x00, 0x14, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80,
64
        0x00, 0x14, 0x00, 0xf0, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
58
            0x02, 0x00, 0x00, 0x1f, 0x05, 0x00, 0x00, 0x14, 0x00, 0xf0, 0x00,
65
        0x01, 0x80, 0x00, 0x00, 0x00,  0x01, 0x80, 0x00, 0x00, 0x00,
59
            0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
66
        0x01, 0x80, 0x00, 0x00, 0x00,  0x01, 0x80, 0x00, 0x00, 0x00,
60
            0x01, 0x80, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x01,
67
        0x01, 0x80, 0x00, 0x00, 0x00,  0x01, 0x80, 0x00, 0x00, 0x00,
61
            0x80, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x01, 0x80,
68
        0,0,
-
 
69
        0x00, 0xc0, 0x00, 0x30, 0xff, 0x00, 0x00, 0xff, 0x30, 0x40, 0x20, 0x00, 0x00, 0x80, 0x80, 0x80,
62
            0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0, 0, 0x00, 0xc0,
70
        0x00, 0x40, 0x00, 0x50, 0xff, 0x00, 0x00, 0xff, 0x50, 0x10, 0x30, 0x00, 0x00, 0x80, 0x80, 0x80,
63
            0x00, 0x30, 0xff, 0x00, 0x00, 0xff, 0x30, 0x40, 0x20, 0x00, 0x00,
71
        0x01, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
64
            0x80, 0x80, 0x80, 0x00, 0x40, 0x00, 0x50, 0xff, 0x00, 0x00, 0xff,
72
        0x02, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
65
            0x50, 0x10, 0x30, 0x00, 0x00, 0x80, 0x80, 0x80, 0x01, 0x00, 0x03,
73
        0x03, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
66
            0xc0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0xc0, 0x00, 0x00,
74
        0x04, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
67
            0x00, 0x00, 0x03, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04,
75
        0x05, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
68
            0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0xc0,
76
        0x06, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
69
            0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00,
77
        0x07, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
70
            0x00, 0x07, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
78
        0x08, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
71
            0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x0f, 0x3f, 0x03,
79
        0xff, 0x00, 0x0f,   0x3f, 0x03, 0x00,
72
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80
        0x00, 0x00, 0x00,   0x00, 0x00, 0x00,
73
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
81
        0x00, 0x00, 0x00,   0x00, 0x00, 0x00,
74
            0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
82
        0x00, 0x00, 0x00,   0x00, 0x00, 0x00,
75
            0x00, 0x00, 0x00, 0x00, 0, 0, 0xcb, 0x00, 0x00, 0x1f, 0x80, 0xcb,
83
        0x00, 0x00, 0x00,   0x00, 0x00, 0x00,
76
            0x00, 0x20, 0x3f, 0xa0, 0xcb, 0x00, 0x40, 0x5f, 0xc0, 0xcb, 0x00,
84
        0x00, 0x00, 0xf0,   0x00, 0x00, 0x00,
77
            0x60, 0x7f, 0xe0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
85
        0x00, 0x00, 0x00,   0x00, 0x00, 0x00,
78
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
86
        0,0,
-
 
87
        0xcb, 0x00, 0x00, 0x1f, 0x80,   0xcb, 0x00, 0x20, 0x3f, 0xa0,
79
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
88
        0xcb, 0x00, 0x40, 0x5f, 0xc0,   0xcb, 0x00, 0x60, 0x7f, 0xe0,
80
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
89
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
81
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
90
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
82
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
91
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
83
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
92
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
84
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
93
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
85
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
94
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
86
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
95
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
87
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
96
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
88
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, };
97
    };
-
 
98
89
99
        final int[] defaultBasslinePatch = new int[] {
90
    final int[] defaultBasslinePatch = new int[] { 0x42, 0x61, 0x73, 0x73,
100
        0x42, 0x61, 0x73, 0x73, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x50, 0x61, 0x74, 0x63, 0x68, 0x20, 0x20,
91
            0x6C, 0x69, 0x6E, 0x65, 0x20, 0x50, 0x61, 0x74, 0x63, 0x68, 0x20,
101
        0x01,   0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
92
            0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00,
102
        0x61, 0x00, 0x08, 0x00, 0xff,   0x65, 0x00, 0xff, 0x00, 0xff,
93
            0x08, 0x00, 0xff, 0x65, 0x00, 0xff, 0x00, 0xff, 0x69, 0x00, 0x60,
103
        0x69, 0x00, 0x60, 0x00, 0xff,   0x6d, 0x00, 0x30, 0x00, 0xff,
94
            0x00, 0xff, 0x6d, 0x00, 0x30, 0x00, 0xff, 0x71, 0x00, 0x20, 0x00,
104
        0x71, 0x00, 0x20, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
95
            0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x51, 0x00, 0x80, 0x00, 0xff,
105
        0x51, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
96
            0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80,
106
        0x00, 0x80,
97
            0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
107
        0x00, 0x80,
98
            0x00, 0x7f, 0x00, 0x17, 0x08, 0x00, 0xf0, 0x00, 0x00, 0x17, 0x08,
108
        0x00, 0x80,
99
            0x00, 0xf0, 0x00, 0x00, 0x01, 0x04, 0x00, 0xc0, 0x00, 0x09, 0x10,
109
        0x00, 0x80,
100
            0x00, 0x28, 0x80, 0x02, 0x28, 0x00, 0x1f, 0x05, 0x00, 0x07, 0x00,
110
        0x00, 0x80,
101
            0x00, 0x00, 0x03, 0x80, 0x06, 0x00, 0x00, 0x80, 0x80, 0x03, 0x80,
111
        0x00, 0x80,
102
            0x16, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0xa0, 0x04, 0x38,
112
        0x00, 0x80,
103
            0x20, 0x10, 0x80, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x28, 0x00, 0x00,
113
        0x00, 0x80,
104
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
114
        0x00,  0x00, 0x7f, 0x00,
105
            0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
115
        0x17,  0x08, 0x00, 0xf0, 0x00, 0x00,
106
            0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0xc0,
116
        0x17,  0x08, 0x00, 0xf0, 0x00, 0x00,
107
            0x00, 0x09, 0x10, 0x00, 0x28, 0x80, 0x02, 0x28, 0x00, 0x1f, 0x05,
117
        0x01, 0x04, 0x00, 0xc0, 0x00, 0x09, 0x10, 0x00, 0x28, 0x80, 0x02, 0x28, 0x00, 0x1f, 0x05, 0x00,
108
            0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x80, 0x06, 0x00, 0x00, 0x80,
118
        0x07, 0x00, 0x00, 0x00, 0x03, 0x80, 0x06, 0x00, 0x00, 0x80, 0x80, 0x03, 0x80, 0x16, 0x00, 0x00,
109
            0x80, 0x03, 0x80, 0x16, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80,
119
        0x80, 0x80, 0x00, 0x80, 0x80, 0xa0, 0x04, 0x38, 0x20, 0x10, 0x80, 0x03, 0x00, 0x0f, 0x00, 0x00,
110
            0xa0, 0x04, 0x38, 0x20, 0x10, 0x80, 0x03, 0x08, 0x0f, 0x00, 0x00,
120
        0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
111
            0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
121
        0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
112
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
122
        0x01, 0x02, 0x00, 0xc0, 0x00, 0x09, 0x10, 0x00, 0x28, 0x80, 0x02, 0x28, 0x00, 0x1f, 0x05, 0x00,
113
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
123
        0x07, 0x00, 0x00, 0x00, 0x03, 0x80, 0x06, 0x00, 0x00, 0x80, 0x80, 0x03, 0x80, 0x16, 0x00, 0x00,
114
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
124
        0x80, 0x80, 0x00, 0x80, 0x80, 0xa0, 0x04, 0x38, 0x20, 0x10, 0x80, 0x03, 0x08, 0x0f, 0x00, 0x00,
115
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
125
        0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
126
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
117
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
127
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
118
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
128
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
119
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
129
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
120
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
130
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
121
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
131
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
122
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
132
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
123
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
133
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
124
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
134
        0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
125
            0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x40,
-
 
126
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-
 
127
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
-
 
128
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
135
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
129
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
136
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
130
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
137
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
131
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
138
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
132
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
139
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
133
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
140
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
134
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
141
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
135
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
142
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
136
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
143
    };
137
            0x40, 0x40, };
144
138
-
 
139
    final int[] defaultDrumPatch = new int[] { 0x44, 0x72, 0x75, 0x6D, 0x20,
-
 
140
            0x4B, 0x69, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-
 
141
            0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
-
 
142
            0x00, 0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x80, 0x00,
-
 
143
            0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x80, 0x00, 0xff,
-
 
144
            0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x00,
-
 
145
            0x00, 0x80, 0x00, 0xff, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
-
 
146
            0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x03, 0x08,
-
 
147
            0x7f, 0x0f, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02,
-
 
148
            0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80,
-
 
149
            0x00, 0x00, 0x00, 0x01, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00,
-
 
150
            0x00, 0x00, 0x02, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-
 
151
            0x00, 0x03, 0x09, 0xc9, 0xff, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
-
 
152
            0x04, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x05,
-
 
153
            0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x06, 0x09,
-
 
154
            0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x07, 0x09, 0xc9,
-
 
155
            0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x08, 0x09, 0xc9, 0x80,
-
 
156
            0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x09, 0x09, 0xc9, 0x80, 0x80,
-
 
157
            0x80, 0x80, 0x00, 0x00, 0x00, 0x0a, 0x09, 0xc9, 0x80, 0x80, 0x80,
-
 
158
            0x80, 0x00, 0x00, 0x00, 0x0b, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80,
-
 
159
            0x00, 0x00, 0x00, 0x0c, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00,
-
 
160
            0x00, 0x00, 0x0d, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
-
 
161
            0x00, 0x0e, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
-
 
162
            0x0f, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x11, 0x00,
-
 
163
            0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
164
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
165
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11,
-
 
166
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
167
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
168
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00,
-
 
169
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
170
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
171
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00,
-
 
172
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
173
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
174
            0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00,
-
 
175
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
176
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
177
            0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00,
-
 
178
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
179
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
180
            0x00, 0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
181
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
182
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
183
            0x00, 0x00, 0x11, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
184
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
185
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-
 
186
            0x00, };
145
187
146
        final int[] defaultDrumPatch = new int[] {
188
    final int[] defaultMultiPatch = new int[] { 0x4D, 0x75, 0x6C, 0x74, 0x69,
147
        0x44, 0x72, 0x75, 0x6D, 0x20, 0x4B, 0x69, 0x74, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
-
 
148
        0x02,   0x00,    0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
189
            0x20, 0x50, 0x61, 0x74, 0x63, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20,
149
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
190
            0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
150
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
191
            0x00, 0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x80, 0x00,
151
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
192
            0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x80, 0x00, 0xff,
152
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
193
            0x00, 0x00, 0x80, 0x00, 0xff, 0x00, 0x00, 0x80, 0x00, 0xff, 0x00,
153
        0x00, 0x80,
-
 
154
        0x00, 0x80,
-
 
155
        0x00, 0x80,
-
 
156
        0x00, 0x80,
-
 
157
        0x00, 0x80,
-
 
158
        0x00, 0x80,
-
 
159
        0x00, 0x80,
-
 
160
        0x00, 0x80,
-
 
161
        0x03,  0x08, 0x7f, 0x0f,
-
 
162
        0x10,  0x00, 0x02, 0x00, 0x00, 0x00,
-
 
163
        0x10,  0x00, 0x02, 0x00, 0x00, 0x00,
-
 
164
        0x00, 0x00, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
194
            0x00, 0x80, 0x00, 0xff, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00,
165
        0x00, 0x01, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
195
            0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00,
166
        0x00, 0x02, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
196
            0x7f, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02,
167
        0x00, 0x03, 0x09, 0xc9, 0xff, 0x80, 0x80, 0x80, 0x00, 0x00,
197
            0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00,
168
        0x00, 0x04, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
198
            0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00, 0x08, 0x00, 0x00,
169
        0x00, 0x05, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
199
            0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16,
170
        0x00, 0x06, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
200
            0x00, 0x00, 0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40,
171
        0x00, 0x07, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
201
            0x20, 0x80, 0xc7, 0x00, 0x00, 0x0f, 0xd0, 0x00, 0x04, 0x00, 0xfa,
172
        0x00, 0x08, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
202
            0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05,
173
        0x00, 0x09, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
203
            0x00, 0x08, 0x00, 0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0,
174
        0x00, 0x0a, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
204
            0x80, 0x01, 0x80, 0x16, 0x00, 0x00, 0x90, 0x80, 0x00, 0x80, 0x80,
175
        0x00, 0x0b, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
205
            0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7, 0x00, 0x10, 0x1f, 0xd0,
176
        0x00, 0x0c, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
206
            0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02,
177
        0x00, 0x0d, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
207
            0x00, 0x00, 0x1f, 0x05, 0x00, 0x08, 0x00, 0x00, 0x79, 0x01, 0x80,
178
        0x00, 0x0e, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
208
            0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00, 0x90,
179
        0x00, 0x0f, 0x09, 0xc9, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
209
            0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7,
180
        0x11,0x00, 0x11,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
181
        0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
182
        0x11,0x00, 0x11,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
183
        0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
184
        0x11,0x00, 0x11,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
185
        0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
186
        0x11,0x00, 0x11,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
187
        0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
188
        0x11,0x00, 0x11,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
189
        0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
190
        0x11,0x00, 0x11,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
191
        0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
192
        0x11,0x00, 0x11,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
193
        0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
194
        0x11,0x00, 0x11,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
195
        0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00, 0x00,0x00,
-
 
196
    };
-
 
197
-
 
198
-
 
199
        final int[] defaultMultiPatch = new int[] {
-
 
200
        0x4D, 0x75, 0x6C, 0x74, 0x69, 0x20, 0x50, 0x61, 0x74, 0x63, 0x68, 0x20, 0x20, 0x20, 0x20, 0x20,
-
 
201
        0x03,   0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
210
            0x00, 0x20, 0x2f, 0xd0, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00,
202
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
211
            0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00, 0x08, 0x00,
203
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
212
            0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80,
204
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
213
            0x16, 0x00, 0x00, 0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30,
205
        0x00, 0x00, 0x80, 0x00, 0xff,   0x00, 0x00, 0x80, 0x00, 0xff,
214
            0x40, 0x20, 0x80, 0xc7, 0x00, 0x30, 0x3f, 0xd0, 0x00, 0x04, 0x00,
206
        0x00, 0x80,
-
 
207
        0x00, 0x80,
-
 
208
        0x00, 0x80,
-
 
209
        0x00, 0x80,
-
 
210
        0x00, 0x80,
-
 
211
        0x00, 0x80,
-
 
212
        0x00, 0x80,
-
 
213
        0x00, 0x80,
-
 
214
        0x00,  0x00, 0x7f, 0x00,
-
 
215
        0x10,  0x00, 0x02, 0x00, 0x00, 0x00,
-
 
216
        0x10,  0x00, 0x02, 0x00, 0x00, 0x00,
-
 
217
        0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
215
            0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f,
218
        0x08, 0x00, 0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00,
216
            0x05, 0x00, 0x08, 0x00, 0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00,
219
        0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7, 0x00, 0x00, 0x0f, 0xd0,
-
 
220
        0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
-
 
221
        0x08, 0x00, 0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00,
217
            0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00, 0x90, 0x80, 0x00, 0x80,
222
        0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7, 0x00, 0x10, 0x1f, 0xd0,
218
            0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7, 0x00, 0x40, 0x4f,
223
        0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
-
 
224
        0x08, 0x00, 0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00,
219
            0xd0, 0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80,
225
        0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7, 0x00, 0x20, 0x2f, 0xd0,
-
 
226
        0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
220
            0x02, 0x00, 0x00, 0x1f, 0x05, 0x00, 0x08, 0x00, 0x00, 0x79, 0x01,
227
        0x08, 0x00, 0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00,
221
            0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00,
228
        0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7, 0x00, 0x30, 0x3f, 0xd0,
222
            0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80,
229
        0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
223
            0xc7, 0x00, 0x50, 0x5f, 0xd0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
230
        0x08, 0x00, 0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00,
-
 
231
        0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7, 0x00, 0x40, 0x4f, 0xd0,
224
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
232
        0x00, 0x04, 0x00, 0xfa, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, 0x02, 0x00, 0x00, 0x1f, 0x05, 0x00,
225
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
233
        0x08, 0x00, 0x00, 0x79, 0x01, 0x80, 0x06, 0x00, 0x00, 0xc0, 0x80, 0x01, 0x80, 0x16, 0x00, 0x00,
-
 
234
        0x90, 0x80, 0x00, 0x80, 0x80, 0x80, 0x30, 0x30, 0x40, 0x20, 0x80, 0xc7, 0x00, 0x50, 0x5f, 0xd0,
226
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
235
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
227
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
236
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
228
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
237
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
229
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
238
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
230
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
239
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
231
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
240
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
232
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
241
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
233
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
242
        0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
234
            0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
243
    };
235
            0x40, };
244
236
245
    public Patch(Receiver receiver) {
237
    public Patch(Receiver receiver) {
246
        this.receiver  = receiver;
238
        this.receiver = receiver;
247
        initPatch();
239
        initPatch();
248
    }
240
    }
Line 250... Line 242...
250
    private void initPatch() {
242
    private void initPatch() {
251
        // TK: initialize patch depending on engine
243
        // TK: initialize patch depending on engine
252
        int e = getParameter(16, 0, 2);
244
        int e = getParameter(16, 0, 2);
253
        int i;
245
        int i;
254
246
-
 
247
        // (quick & dirty initialisation - presets are based on
255
        // (quick & dirty initialisation - presets are based on $MIOS_PATH/apps/synthesizers/midibox_sid_v2/src/sid_preset_*.inc)
248
        // $MIOS_PATH/apps/synthesizers/midibox_sid_v2/src/sid_preset_*.inc)
256
        // Btw.: I've no idea, why the two nibbles of defaultLeadPatch[] bytes are swapped - please enlight me ;)
249
        // Btw.: I've no idea, why the two nibbles of defaultLeadPatch[] bytes
-
 
250
        // are swapped - please enlight me ;)
257
        switch( e ) {
251
        switch (e) {
258
            case 0:
252
        case 0:
-
 
253
            for (i = 0; i < 512; ++i) {
259
            for(i=0; i<512; ++i) { patch[i] = ((defaultLeadPatch[i]&0x0f)<<4) | ((defaultLeadPatch[i]&0xf0)>>4); }
254
                patch[i] = ((defaultLeadPatch[i] & 0x0f) << 4)
-
 
255
                        | ((defaultLeadPatch[i] & 0xf0) >> 4);
-
 
256
            }
260
            setPatchName("Lead Patch      ");
257
            setPatchName("Lead Patch      ");
261
            break;
258
            break;
262
            case 1:
259
        case 1:
-
 
260
            for (i = 0; i < 512; ++i) {
263
            for(i=0; i<512; ++i) { patch[i] = ((defaultBasslinePatch[i]&0x0f)<<4) | ((defaultBasslinePatch[i]&0xf0)>>4); }
261
                patch[i] = ((defaultBasslinePatch[i] & 0x0f) << 4)
-
 
262
                        | ((defaultBasslinePatch[i] & 0xf0) >> 4);
-
 
263
            }
264
            setPatchName("Bassline Patch  ");
264
            setPatchName("Bassline Patch  ");
265
            break;
265
            break;
266
            case 2:
266
        case 2:
-
 
267
            for (i = 0; i < 512; ++i) {
267
            for(i=0; i<512; ++i) { patch[i] = ((defaultDrumPatch[i]&0x0f)<<4) | ((defaultDrumPatch[i]&0xf0)>>4); }
268
                patch[i] = ((defaultDrumPatch[i] & 0x0f) << 4)
-
 
269
                        | ((defaultDrumPatch[i] & 0xf0) >> 4);
-
 
270
            }
268
            setPatchName("Drum Kit        ");
271
            setPatchName("Drum Kit        ");
269
            break;
272
            break;
270
            case 3:
273
        case 3:
-
 
274
            for (i = 0; i < 512; ++i) {
271
            for(i=0; i<512; ++i) { patch[i] = ((defaultMultiPatch[i]&0x0f)<<4) | ((defaultMultiPatch[i]&0xf0)>>4); }
275
                patch[i] = ((defaultMultiPatch[i] & 0x0f) << 4)
-
 
276
                        | ((defaultMultiPatch[i] & 0xf0) >> 4);
-
 
277
            }
272
            setPatchName("Multi Patch     ");
278
            setPatchName("Multi Patch     ");
273
            break;
279
            break;
274
        }
280
        }
275
    }
281
    }
276
   
282
Line 291... Line 297...
291
   
297
292
    public Object getEngine() {
298
    public Object getEngine() {
293
        int e = getParameter(16, 0, 2);
299
        int e = getParameter(16, 0, 2);
294
        Object engine = new Object();
300
        Object engine = new Object();
295
        switch (e) {
301
        switch (e) {
-
 
302
        case 0:
296
            case 0:  engine = LEAD; break;
303
            engine = LEAD;
-
 
304
            break;
-
 
305
        case 1:
297
            case 1:  engine = BASSLINE; break;
306
            engine = BASSLINE;
-
 
307
            break;
-
 
308
        case 2:
298
            case 2:  engine = DRUM; break;
309
            engine = DRUM;
-
 
310
            break;
-
 
311
        case 3:
299
            case 3:  engine = MULTI; break;
312
            engine = MULTI;
-
 
313
            break;
-
 
314
        default:
300
            default: System.out.println("Unknown engine!");break;
315
            System.out.println("Unknown engine!");
-
 
316
            break;
301
        }
317
        }
302
        return engine; 
318
        return engine;
303
    }
319
    }
304
   
320
305
    public String getEngineStr() {
321
    public String getEngineStr() {
306
        int e = getParameter(16, 0, 2);
322
        int e = getParameter(16, 0, 2);
307
        String engine = "";
323
        String engine = "";
308
        switch (e) {
324
        switch (e) {
-
 
325
        case 0:
309
            case 0:  engine = "LEAD"; break;
326
            engine = "LEAD";
-
 
327
            break;
-
 
328
        case 1:
310
            case 1:  engine = "BASSLINE"; break;
329
            engine = "BASSLINE";
-
 
330
            break;
-
 
331
        case 2:
311
            case 2:  engine = "DRUM"; break;
332
            engine = "DRUM";
-
 
333
            break;
-
 
334
        case 3:
312
            case 3:  engine = "MULTI"; break;
335
            engine = "MULTI";
-
 
336
            break;
-
 
337
        default:
313
            default: System.out.println("Unknown engine!");break;
338
            System.out.println("Unknown engine!");
-
 
339
            break;
314
        }
340
        }
315
        return engine; 
341
        return engine;
316
    }
342
    }
317
   
343
318
    public String getSysexString() {
344
    public String getSysexString() {
Line 341... Line 367...
341
            checksum = checksum + Integer.parseInt(s1,16);
367
            checksum = checksum + Integer.parseInt(s1, 16);
342
            checksum = checksum + Integer.parseInt(s2,16);
368
            checksum = checksum + Integer.parseInt(s2, 16);
343
            int temp = Integer.parseInt(s1+s2,16);
369
            int temp = Integer.parseInt(s1 + s2, 16);
344
            patch[i] = temp;
370
            patch[i] = temp;
345
        }
371
        }
346
        int chk = Integer.parseInt(d.substring((4*512)+dsi, (4*512)+dsi+2),16);
372
        int chk = Integer.parseInt(d.substring((4 * 512) + dsi, (4 * 512) + dsi
-
 
373
                + 2), 16);
347
        if (chk != (-checksum & 0x7F)) {
374
        if (chk != (-checksum & 0x7F)) {
348
            status = "checksum error";
375
            status = "checksum error";
349
        }
-
 
350
        else {
376
        } else {
351
            status = "succesful";      
377
            status = "succesful";
352
        }
378
        }
353
        return status;     
379
        return status;
354
    }
380
    }
355
   
381
Line 378... Line 404...
378
   
404
379
    public int getParameter(int address, int start_bit, int resolution) {
405
    public int getParameter(int address, int start_bit, int resolution) {
380
        int value = 0;
406
        int value = 0;
381
        int absres = Math.abs(resolution);
407
        int absres = Math.abs(resolution);
382
       
408
383
        // resolution < 8 bit: gets value of bit length 'resolution' starting on the start_bit
409
        // resolution < 8 bit: gets value of bit length 'resolution' starting on
-
 
410
        // the start_bit
384
        if (absres < 8) {
411
        if (absres < 8) {
385
            int bitmask = 0;
412
            int bitmask = 0;
386
            for(int j=0; j < absres; j++) {                                 // Iterate over all bits
413
            for (int j = 0; j < absres; j++) { // Iterate over all bits
387
                bitmask = bitmask | (int) Math.pow(2,(start_bit + j));     
414
                bitmask = bitmask | (int) Math.pow(2, (start_bit + j));
388
            }              
415
            }
Line 415... Line 442...
415
        }
442
        }
416
       
443
417
        return value;
444
        return value;
418
    }
445
    }
419
       
446
420
   
-
 
421
    public void setParameter(int address, int value, int start_bit, int resolution, boolean forward) {
447
    public void setParameter(int address, int value, int start_bit,
-
 
448
            int resolution, boolean forward) {
422
        int absres = Math.abs(resolution);
449
        int absres = Math.abs(resolution);
423
       
450
424
        // Shift all bipolar values up to make them fit into a positive integer
451
        // Shift all bipolar values up to make them fit into a positive integer
425
        if (resolution < 0) {
452
        if (resolution < 0) {
426
            int midimin = -((int) Math.ceil((Math.pow(2,absres)-1)/2));
453
            int midimin = -((int) Math.ceil((Math.pow(2, absres) - 1) / 2));
427
            value = value - midimin;           
454
            value = value - midimin;
428
        }
455
        }
429
       
456
430
        // resolution < 8 bit: sets value of bit length 'resolution' starting on the start_bit
457
        // resolution < 8 bit: sets value of bit length 'resolution' starting on
-
 
458
        // the start_bit
431
        if (absres < 8) {              
459
        if (absres < 8) {
432
            int temp = nibbleSwap(patch[address]);              // Retrieve data
460
            int temp = nibbleSwap(patch[address]); // Retrieve data
433
           
461
434
            for(int j=0; j < absres; j++) {                     // Iterate over all bits
462
            for (int j = 0; j < absres; j++) { // Iterate over all bits
435
                int this_bit = start_bit + j;
463
                int this_bit = start_bit + j;
436
                int bitmask0 = (int) Math.pow(2,j);                 // Bitmask for checking if current bit needs to change
464
                int bitmask0 = (int) Math.pow(2, j); // Bitmask for checking if
-
 
465
                // current bit needs to
-
 
466
                // change
437
                int bitmask1 = (int) Math.pow(2,(this_bit));        // Bitmask for turning bits on
467
                int bitmask1 = (int) Math.pow(2, (this_bit)); // Bitmask for
-
 
468
                // turning bits
-
 
469
                // on
438
                int bitmask2 = (~bitmask1) & 0xFF;                  // Bitmask for turning bits off
470
                int bitmask2 = (~bitmask1) & 0xFF; // Bitmask for turning bits
-
 
471
                // off
439
                if ((value & bitmask0) == 0) {                                 
472
                if ((value & bitmask0) == 0) {
440
                    temp = (temp & bitmask2) & 0xFF;                // Turn bit off
473
                    temp = (temp & bitmask2) & 0xFF; // Turn bit off
441
                }
474
                }
442
                if ((value & bitmask0) != 0) {                                         
475
                if ((value & bitmask0) != 0) {
443
                    temp = (temp | bitmask1) & 0xFF;                // Turn bit on  
476
                    temp = (temp | bitmask1) & 0xFF; // Turn bit on
Line 503... Line 536...
503
    public void sysexSend(int addr, int value, int bytes) {
536
    public void sysexSend(int addr, int value, int bytes) {
504
        SysexMessage sysexMessage = new SysexMessage();
537
        SysexMessage sysexMessage = new SysexMessage();
505
        try {
538
        try {
506
            String strMessage = SIDSysexInfo.editPatchParameterSysex;
539
            String strMessage = SIDSysexInfo.editPatchParameterSysex;
507
            strMessage = strMessage.replace("<device>", "00");
540
            strMessage = strMessage.replace("<device>", "00");
508
            strMessage = strMessage.replace("<wopt>", "0" + Integer.toHexString(WOPT));
541
            strMessage = strMessage.replace("<wopt>", "0"
-
 
542
                    + Integer.toHexString(WOPT));
509
            strMessage = strMessage.replace("<address>", calcAddr(addr));
543
            strMessage = strMessage.replace("<address>", calcAddr(addr));
510
            strMessage = strMessage.replace("<value>", calcValue(value,bytes));
544
            strMessage = strMessage.replace("<value>", calcValue(value, bytes));
511
           
545
512
            int nLengthInBytes = strMessage.length() / 2;
546
            int nLengthInBytes = strMessage.length() / 2;
513
            byte[]  abMessage = new byte[nLengthInBytes];
547
            byte[] abMessage = new byte[nLengthInBytes];
514
            for (int i = 0; i < nLengthInBytes; i++)
548
            for (int i = 0; i < nLengthInBytes; i++) {
515
            {
-
 
516
                abMessage[i] = (byte) Integer.parseInt(strMessage.substring(i * 2, i * 2 + 2), 16);            
549
                abMessage[i] = (byte) Integer.parseInt(strMessage.substring(
-
 
550
                        i * 2, i * 2 + 2), 16);
517
            }
551
            }
518
           
552
519
            System.out.println(strMessage);
553
            System.out.println(strMessage);
520
            sysexMessage.setMessage(abMessage, abMessage.length);  
554
            sysexMessage.setMessage(abMessage, abMessage.length);
521
        } catch (Exception e) {        
555
        } catch (Exception e) {
Line 544... Line 578...
544
        if (byt==1) {
578
        if (byt == 1) {
545
            String s0 = "0";
579
            String s0 = "0";
546
            String s1 = Integer.toHexString(val & 0x0F);       
580
            String s1 = Integer.toHexString(val & 0x0F);
547
            String s2 = Integer.toHexString((val & 0xF0)>>4);
581
            String s2 = Integer.toHexString((val & 0xF0) >> 4);
548
            s =(s0+s1+s0+s2);
582
            s = (s0 + s1 + s0 + s2);
549
        }
-
 
550
        else if (byt==2) {
583
        } else if (byt == 2) {
551
            String s0 = "0";
584
            String s0 = "0";
552
            String s1 = Integer.toHexString(val & 0x000F);     
585
            String s1 = Integer.toHexString(val & 0x000F);
553
            String s2 = Integer.toHexString((val & 0x00F0)>>4);
586
            String s2 = Integer.toHexString((val & 0x00F0) >> 4);
554
            String s3 = Integer.toHexString((val & 0x0F00)>>8);
587
            String s3 = Integer.toHexString((val & 0x0F00) >> 8);
555
            String s4 = Integer.toHexString((val & 0xF000)>>12);
588
            String s4 = Integer.toHexString((val & 0xF000) >> 12);
Line 573... Line 606...
573
        Patch p = new Patch(receiver);
606
        Patch p = new Patch(receiver);
574
        p.setPatch(patch.clone());
607
        p.setPatch(patch.clone());
575
        return p;
608
        return p;
576
    }  
609
    }
577
}
610
}
578
-
 
579
-
 
580
-
 
581
-