bank.sysex[getPatchStart(patchNum)+ 33]=(byte)((p.sysex[6+ 40]));
((Patch)bank).sysex[getPatchStart(patchNum)+ 33]=(byte)((((Patch)p).sysex[6+ 40]));
	public void putPatch(Patch bank,Patch p,int patchNum)		//puts a patch into the bank, converting it as needed	{		if (!canHoldPatch(p)) {			DX7FamilyStrings.dxShowError(toString(), "This type of patch does not fit in to this type of bank.");			return;		}		// Transform Voice Data to Bulk Dump Packed Format				//    ***** OPERATOR 6 *****		bank.sysex[getPatchStart(patchNum)+  0]=(byte)((p.sysex[6+  0]));			// EG Rate  1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+  1]=(byte)((p.sysex[6+  1]));			// EG Rate  2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+  2]=(byte)((p.sysex[6+  2]));			// EG Rate  3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+  3]=(byte)((p.sysex[6+  3]));			// EG Rate  4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+  4]=(byte)((p.sysex[6+  4]));			// EG Level 1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+  5]=(byte)((p.sysex[6+  5]));			// EG Level 2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+  6]=(byte)((p.sysex[6+  6]));			// EG Level 3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+  7]=(byte)((p.sysex[6+  7]));			// EG Level 4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+  8]=(byte)((p.sysex[6+  8]));			// Kbd Level Scale Break Point (0-99)		bank.sysex[getPatchStart(patchNum)+  9]=(byte)((p.sysex[6+  9]));			// Kbd Level Scale Left Depth .(0-99)		bank.sysex[getPatchStart(patchNum)+ 10]=(byte)((p.sysex[6+ 10]));			// Kbd Level Scale Right Depth (0-99)		bank.sysex[getPatchStart(patchNum)+ 11]=(byte)((p.sysex[6+ 12]*4+p.sysex[6+ 11]));	// Kbd Level Scale Right Curve .(0-3)													// | Left Curve ...............(0-3)		bank.sysex[getPatchStart(patchNum)+ 12]=(byte)((p.sysex[6+ 20]*8+p.sysex[6+ 13]));	// Osc Detune .................(0-14)													// | Kbd Rate Scaling .........(0-7)		bank.sysex[getPatchStart(patchNum)+ 13]=(byte)((p.sysex[6+ 15]*4+p.sysex[6+ 14]));	// Key Velocity Sensitivity ....(0-7)													// | Mod Sensitivity Amplitude (0-3)		bank.sysex[getPatchStart(patchNum)+ 14]=(byte)((p.sysex[6+ 16]));			// Operator Output Level ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 15]=(byte)((p.sysex[6+ 18]*2+p.sysex[6+ 17]));	// Osc Frequency Coarse .......(0-31)													// | Osc Mode .................(0-1)		bank.sysex[getPatchStart(patchNum)+ 16]=(byte)((p.sysex[6+ 19]));			// Osc Frequency Fine .........(0-99)		//    ***** OPERATOR 5 *****		bank.sysex[getPatchStart(patchNum)+ 17]=(byte)((p.sysex[6+ 21]));			// EG Rate  1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 18]=(byte)((p.sysex[6+ 22]));			// EG Rate  2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 19]=(byte)((p.sysex[6+ 23]));			// EG Rate  3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 20]=(byte)((p.sysex[6+ 24]));			// EG Rate  4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 21]=(byte)((p.sysex[6+ 25]));			// EG Level 1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 22]=(byte)((p.sysex[6+ 26]));			// EG Level 2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 23]=(byte)((p.sysex[6+ 27]));			// EG Level 3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 24]=(byte)((p.sysex[6+ 28]));			// EG Level 4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 25]=(byte)((p.sysex[6+ 29]));			// Kbd Level Scale Break Point (0-99)		bank.sysex[getPatchStart(patchNum)+ 26]=(byte)((p.sysex[6+ 30]));			// Kbd Level Scale Left Depth .(0-99)		bank.sysex[getPatchStart(patchNum)+ 27]=(byte)((p.sysex[6+ 31]));			// Kbd Level Scale Right Depth (0-99)		bank.sysex[getPatchStart(patchNum)+ 28]=(byte)((p.sysex[6+ 33]*4+p.sysex[6+ 32]));	// Kbd Level Scale Right Curve .(0-3)													// | Left Curve ...............(0-3)		bank.sysex[getPatchStart(patchNum)+ 29]=(byte)((p.sysex[6+ 41]*8+p.sysex[6+ 34]));	// Osc Detune .................(0-14)													// | Kbd Rate Scaling .........(0-7)		bank.sysex[getPatchStart(patchNum)+ 30]=(byte)((p.sysex[6+ 36]*4+p.sysex[6+ 35]));	// Key Velocity Sensitivity ....(0-7)													// | Mod Sensitivity Amplitude (0-3)		bank.sysex[getPatchStart(patchNum)+ 31]=(byte)((p.sysex[6+ 37]));			// Operator Output Level ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 32]=(byte)((p.sysex[6+ 39]*2+p.sysex[6+ 38]));	// Osc Frequency Coarse .......(0-31)													// | Osc Mode .................(0-1)		bank.sysex[getPatchStart(patchNum)+ 33]=(byte)((p.sysex[6+ 40]));			// Osc Frequency Fine .........(0-99)		//    ***** OPERATOR 4 *****		bank.sysex[getPatchStart(patchNum)+ 34]=(byte)((p.sysex[6+ 42]));			// EG Rate  1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 35]=(byte)((p.sysex[6+ 43]));			// EG Rate  2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 36]=(byte)((p.sysex[6+ 44]));			// EG Rate  3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 37]=(byte)((p.sysex[6+ 45]));			// EG Rate  4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 38]=(byte)((p.sysex[6+ 46]));			// EG Level 1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 39]=(byte)((p.sysex[6+ 47]));			// EG Level 2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 40]=(byte)((p.sysex[6+ 48]));			// EG Level 3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 41]=(byte)((p.sysex[6+ 49]));			// EG Level 4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 42]=(byte)((p.sysex[6+ 50]));			// Kbd Level Scale Break Point (0-99)		bank.sysex[getPatchStart(patchNum)+ 43]=(byte)((p.sysex[6+ 51]));			// Kbd Level Scale Left Depth .(0-99)		bank.sysex[getPatchStart(patchNum)+ 44]=(byte)((p.sysex[6+ 52]));			// Kbd Level Scale Right Depth (0-99)		bank.sysex[getPatchStart(patchNum)+ 45]=(byte)((p.sysex[6+ 54]*4+p.sysex[6+ 53]));	// Kbd Level Scale Right Curve .(0-3)													// | Left Curve ...............(0-3)		bank.sysex[getPatchStart(patchNum)+ 46]=(byte)((p.sysex[6+ 62]*8+p.sysex[6+ 55]));	// Osc Detune .................(0-14)													// | Kbd Rate Scaling .........(0-7)		bank.sysex[getPatchStart(patchNum)+ 47]=(byte)((p.sysex[6+ 57]*4+p.sysex[6+ 56]));	// Key Velocity Sensitivity ....(0-7)													// | Mod Sensitivity Amplitude (0-3)		bank.sysex[getPatchStart(patchNum)+ 48]=(byte)((p.sysex[6+ 58]));			// Operator Output Level ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 49]=(byte)((p.sysex[6+ 60]*2+p.sysex[6+ 59]));	// Osc Frequency Coarse .......(0-31)													// | Osc Mode .................(0-1)		bank.sysex[getPatchStart(patchNum)+ 50]=(byte)((p.sysex[6+ 61]));			// Osc Frequency Fine .........(0-99)		//    ***** OPERATOR 3 *****		bank.sysex[getPatchStart(patchNum)+ 51]=(byte)((p.sysex[6+ 63]));			// EG Rate  1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 52]=(byte)((p.sysex[6+ 64]));			// EG Rate  2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 53]=(byte)((p.sysex[6+ 65]));			// EG Rate  3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 54]=(byte)((p.sysex[6+ 66]));			// EG Rate  4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 55]=(byte)((p.sysex[6+ 67]));			// EG Level 1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 56]=(byte)((p.sysex[6+ 68]));			// EG Level 2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 57]=(byte)((p.sysex[6+ 69]));			// EG Level 3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 58]=(byte)((p.sysex[6+ 70]));			// EG Level 4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 59]=(byte)((p.sysex[6+ 71]));			// Kbd Level Scale Break Point (0-99)		bank.sysex[getPatchStart(patchNum)+ 60]=(byte)((p.sysex[6+ 72]));			// Kbd Level Scale Left Depth .(0-99)		bank.sysex[getPatchStart(patchNum)+ 61]=(byte)((p.sysex[6+ 73]));			// Kbd Level Scale Right Depth (0-99)		bank.sysex[getPatchStart(patchNum)+ 62]=(byte)((p.sysex[6+ 75]*4+p.sysex[6+ 74]));	// Kbd Level Scale Right Curve .(0-3)													// | Left Curve ...............(0-3)		bank.sysex[getPatchStart(patchNum)+ 63]=(byte)((p.sysex[6+ 83]*8+p.sysex[6+ 76]));	// Osc Detune .................(0-14)													// | Kbd Rate Scaling .........(0-7)		bank.sysex[getPatchStart(patchNum)+ 64]=(byte)((p.sysex[6+ 78]*4+p.sysex[6+ 77]));	// Key Velocity Sensitivity ....(0-7)													// | Mod Sensitivity Amplitude (0-3)		bank.sysex[getPatchStart(patchNum)+ 65]=(byte)((p.sysex[6+ 79]));			// Operator Output Level ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 66]=(byte)((p.sysex[6+ 81]*2+p.sysex[6+ 80]));	// Osc Frequency Coarse .......(0-31)													// | Osc Mode .................(0-1)		bank.sysex[getPatchStart(patchNum)+ 67]=(byte)((p.sysex[6+ 82]));			// Osc Frequency Fine .........(0-99)		//    ***** OPERATOR 2 *****		bank.sysex[getPatchStart(patchNum)+ 68]=(byte)((p.sysex[6+ 84]));			// EG Rate  1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 69]=(byte)((p.sysex[6+ 85]));			// EG Rate  2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 70]=(byte)((p.sysex[6+ 86]));			// EG Rate  3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 71]=(byte)((p.sysex[6+ 87]));			// EG Rate  4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 72]=(byte)((p.sysex[6+ 88]));			// EG Level 1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 73]=(byte)((p.sysex[6+ 89]));			// EG Level 2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 74]=(byte)((p.sysex[6+ 90]));			// EG Level 3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 75]=(byte)((p.sysex[6+ 91]));			// EG Level 4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 76]=(byte)((p.sysex[6+ 92]));			// Kbd Level Scale Break Point (0-99)		bank.sysex[getPatchStart(patchNum)+ 77]=(byte)((p.sysex[6+ 93]));			// Kbd Level Scale Left Depth .(0-99)		bank.sysex[getPatchStart(patchNum)+ 78]=(byte)((p.sysex[6+ 94]));			// Kbd Level Scale Right Depth (0-99)		bank.sysex[getPatchStart(patchNum)+ 79]=(byte)((p.sysex[6+ 96]*4+p.sysex[6+ 95]));	// Kbd Level Scale Right Curve .(0-3)													// | Left Curve ...............(0-3)		bank.sysex[getPatchStart(patchNum)+ 80]=(byte)((p.sysex[6+104]*8+p.sysex[6+ 97]));	// Osc Detune .................(0-14)													// | Kbd Rate Scaling .........(0-7)		bank.sysex[getPatchStart(patchNum)+ 81]=(byte)((p.sysex[6+ 99]*4+p.sysex[6+ 98]));	// Key Velocity Sensitivity ....(0-7)													// | Mod Sensitivity Amplitude (0-3)		bank.sysex[getPatchStart(patchNum)+ 82]=(byte)((p.sysex[6+100]));			// Operator Output Level ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 83]=(byte)((p.sysex[6+102]*2+p.sysex[6+101]));	// Osc Frequency Coarse .......(0-31)													// | Osc Mode .................(0-1)		bank.sysex[getPatchStart(patchNum)+ 84]=(byte)((p.sysex[6+103]));			// Osc Frequency Fine .........(0-99)			//    ***** OPERATOR 1 *****		bank.sysex[getPatchStart(patchNum)+ 85]=(byte)((p.sysex[6+105]));			// EG Rate  1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 86]=(byte)((p.sysex[6+106]));			// EG Rate  2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 87]=(byte)((p.sysex[6+107]));			// EG Rate  3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 88]=(byte)((p.sysex[6+108]));			// EG Rate  4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 89]=(byte)((p.sysex[6+109]));			// EG Level 1 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 90]=(byte)((p.sysex[6+110]));			// EG Level 2 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 91]=(byte)((p.sysex[6+111]));			// EG Level 3 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 92]=(byte)((p.sysex[6+112]));			// EG Level 4 .................(0-99)		bank.sysex[getPatchStart(patchNum)+ 93]=(byte)((p.sysex[6+113]));			// Kbd Level Scale Break Point (0-99)		bank.sysex[getPatchStart(patchNum)+ 94]=(byte)((p.sysex[6+114]));			// Kbd Level Scale Left Depth .(0-99)		bank.sysex[getPatchStart(patchNum)+ 95]=(byte)((p.sysex[6+115]));			// Kbd Level Scale Right Depth (0-99)		bank.sysex[getPatchStart(patchNum)+ 96]=(byte)((p.sysex[6+117]*4+p.sysex[6+116]));	// Kbd Level Scale Right Curve .(0-3)													// | Left Curve ...............(0-3)		bank.sysex[getPatchStart(patchNum)+ 97]=(byte)((p.sysex[6+125]*8+p.sysex[6+118]));	// Osc Detune .................(0-14)													// | Kbd Rate Scaling .........(0-7)		bank.sysex[getPatchStart(patchNum)+ 98]=(byte)((p.sysex[6+120]*4+p.sysex[6+119]));	// Key Velocity Sensitivity ....(0-7)													// | Mod Sensitivity Amplitude (0-3)		bank.sysex[getPatchStart(patchNum)+ 99]=(byte)((p.sysex[6+121]));			// Operator Output Level ......(0-99)		bank.sysex[getPatchStart(patchNum)+100]=(byte)((p.sysex[6+123]*2+p.sysex[6+122]));	// Osc Frequency Coarse .......(0-31)													// | Osc Mode .................(0-1)		bank.sysex[getPatchStart(patchNum)+101]=(byte)((p.sysex[6+124]));			// Osc Frequency Fine .........(0-99)		//    ***** other Parameters *****		bank.sysex[getPatchStart(patchNum)+102]=(byte)((p.sysex[6+126]));			// Pitch EG Rate 1 ............(0-99)		bank.sysex[getPatchStart(patchNum)+103]=(byte)((p.sysex[6+127]));			// Pitch EG Rate 2 ............(0-99)		bank.sysex[getPatchStart(patchNum)+104]=(byte)((p.sysex[6+128]));			// Pitch EG Rate 3 ............(0-99)		bank.sysex[getPatchStart(patchNum)+105]=(byte)((p.sysex[6+129]));			// Pitch EG Rate 4 ............(0-99)		bank.sysex[getPatchStart(patchNum)+106]=(byte)((p.sysex[6+130]));			// Pitch EG Level 1 ...........(0-99)		bank.sysex[getPatchStart(patchNum)+107]=(byte)((p.sysex[6+131]));			// Pitch EG Level 2 ...........(0-99)		bank.sysex[getPatchStart(patchNum)+108]=(byte)((p.sysex[6+132]));			// Pitch EG Level 3 ...........(0-99)		bank.sysex[getPatchStart(patchNum)+109]=(byte)((p.sysex[6+133]));			// Pitch EG Level 4 ...........(0-99)		bank.sysex[getPatchStart(patchNum)+110]=(byte)((p.sysex[6+134]));			// Algorithmic Select .........(0-31)		bank.sysex[getPatchStart(patchNum)+111]=(byte)((p.sysex[6+136]*8+p.sysex[6+135]));	// Oscillator Sync .............(0-1)| Feedback (0-7)		bank.sysex[getPatchStart(patchNum)+112]=(byte)((p.sysex[6+137]));			// LFO Speed ..................(0-99)		bank.sysex[getPatchStart(patchNum)+113]=(byte)((p.sysex[6+138]));			// LFO Delay ..................(0-99)		bank.sysex[getPatchStart(patchNum)+114]=(byte)((p.sysex[6+139]));			// LFO PMD ....................(0-99)		bank.sysex[getPatchStart(patchNum)+115]=(byte)((p.sysex[6+140]));			// LFO AMD ....................(0-99)		bank.sysex[getPatchStart(patchNum)+116]=(byte)((p.sysex[6+143]*16+p.sysex[6+142]*2+p.sysex[6+141]));													// LFO Mod Sensitivity Pitch ...(0-7)													// | LFO Wave (0-5)| LFO Sync (0-1)		bank.sysex[getPatchStart(patchNum)+117]=(byte)((p.sysex[6+144]));			// Transpose ..................(0-48)		bank.sysex[getPatchStart(patchNum)+118]=(byte)((p.sysex[6+145]));			// Voice name  1 ...............ASCII		bank.sysex[getPatchStart(patchNum)+119]=(byte)((p.sysex[6+146]));			// Voice name  2 ...............ASCII		bank.sysex[getPatchStart(patchNum)+120]=(byte)((p.sysex[6+147]));			// Voice name  3 ...............ASCII		bank.sysex[getPatchStart(patchNum)+121]=(byte)((p.sysex[6+148]));			// Voice name  4 ...............ASCII		bank.sysex[getPatchStart(patchNum)+122]=(byte)((p.sysex[6+149]));			// Voice name  5 ...............ASCII		bank.sysex[getPatchStart(patchNum)+123]=(byte)((p.sysex[6+150]));			// Voice name  6 ...............ASCII		bank.sysex[getPatchStart(patchNum)+124]=(byte)((p.sysex[6+151]));			// Voice name  7 ...............ASCII		bank.sysex[getPatchStart(patchNum)+125]=(byte)((p.sysex[6+152]));			// Voice name  8 ...............ASCII		bank.sysex[getPatchStart(patchNum)+126]=(byte)((p.sysex[6+153]));			// Voice name  9 ...............ASCII		bank.sysex[getPatchStart(patchNum)+127]=(byte)((p.sysex[6+154]));			// Voice name 10 ...............ASCII		calculateChecksum(bank);	}