bank.sysex[getPatchStart(patchNum)+  0]=(byte)((p.sysex[6+  0]+ p.sysex[6+  1]* 2+ p.sysex[6+  2]* 4+ p.sysex[6+  3]* 8+ p.sysex[6+  4]*16+ p.sysex[6+  5]*32)); bank.sysex[getPatchStart(patchNum)+  1]=(byte)((p.sysex[6+  6]+ p.sysex[6+  7]* 8)); bank.sysex[getPatchStart(patchNum)+  2]=(byte)((p.sysex[6+  8]+ p.sysex[6+  9]* 8)); bank.sysex[getPatchStart(patchNum)+  3]=(byte)((p.sysex[6+ 10]+ p.sysex[6+ 11]* 8)); bank.sysex[getPatchStart(patchNum)+  4]=(byte)((p.sysex[6+ 12]+ p.sysex[6+ 13]* 4+ p.sysex[6+ 14]* 8+ p.sysex[6+ 19]*16)); bank.sysex[getPatchStart(patchNum)+  5]=(byte)((p.sysex[6+ 15]+ p.sysex[6+ 16]* 4)); bank.sysex[getPatchStart(patchNum)+  6]=(byte)((p.sysex[6+ 17]+ p.sysex[6+ 18]*16)); bank.sysex[getPatchStart(patchNum)+  7]=(byte)((p.sysex[6+ 20]+ p.sysex[6+ 21]* 2)); bank.sysex[getPatchStart(patchNum)+  8]=(byte)((p.sysex[6+ 22])); bank.sysex[getPatchStart(patchNum)+  9]=(byte)((p.sysex[6+ 23])); bank.sysex[getPatchStart(patchNum)+ 10]=(byte)((p.sysex[6+ 24])); bank.sysex[getPatchStart(patchNum)+ 11]=(byte)((p.sysex[6+ 25])); bank.sysex[getPatchStart(patchNum)+ 12]=(byte)((p.sysex[6+ 26])); bank.sysex[getPatchStart(patchNum)+ 13]=(byte)((p.sysex[6+ 27])); bank.sysex[getPatchStart(patchNum)+ 14]=(byte)((p.sysex[6+ 28])); bank.sysex[getPatchStart(patchNum)+ 15]=(byte)((p.sysex[6+ 29])); bank.sysex[getPatchStart(patchNum)+ 16]=(byte)((p.sysex[6+ 30])); bank.sysex[getPatchStart(patchNum)+ 17]=(byte)((p.sysex[6+ 31])); bank.sysex[getPatchStart(patchNum)+ 18]=(byte)((p.sysex[6+ 32])); bank.sysex[getPatchStart(patchNum)+ 19]=(byte)((p.sysex[6+ 33])); bank.sysex[getPatchStart(patchNum)+ 20]=(byte)((p.sysex[6+ 34])); bank.sysex[getPatchStart(patchNum)+ 21]=(byte)((p.sysex[6+ 35])); bank.sysex[getPatchStart(patchNum)+ 22]=(byte)((p.sysex[6+ 36])); bank.sysex[getPatchStart(patchNum)+ 23]=(byte)((p.sysex[6+ 37])); bank.sysex[getPatchStart(patchNum)+ 24]=(byte)((p.sysex[6+ 38]));
((Patch)bank).sysex[getPatchStart(patchNum)+  0]=(byte)((((Patch)p).sysex[6+  0]+ ((Patch)p).sysex[6+  1]* 2+ ((Patch)p).sysex[6+  2]* 4+ ((Patch)p).sysex[6+  3]* 8+ ((Patch)p).sysex[6+  4]*16+ ((Patch)p).sysex[6+  5]*32)); ((Patch)bank).sysex[getPatchStart(patchNum)+  1]=(byte)((((Patch)p).sysex[6+  6]+ ((Patch)p).sysex[6+  7]* 8)); ((Patch)bank).sysex[getPatchStart(patchNum)+  2]=(byte)((((Patch)p).sysex[6+  8]+ ((Patch)p).sysex[6+  9]* 8)); ((Patch)bank).sysex[getPatchStart(patchNum)+  3]=(byte)((((Patch)p).sysex[6+ 10]+ ((Patch)p).sysex[6+ 11]* 8)); ((Patch)bank).sysex[getPatchStart(patchNum)+  4]=(byte)((((Patch)p).sysex[6+ 12]+ ((Patch)p).sysex[6+ 13]* 4+ ((Patch)p).sysex[6+ 14]* 8+ ((Patch)p).sysex[6+ 19]*16)); ((Patch)bank).sysex[getPatchStart(patchNum)+  5]=(byte)((((Patch)p).sysex[6+ 15]+ ((Patch)p).sysex[6+ 16]* 4)); ((Patch)bank).sysex[getPatchStart(patchNum)+  6]=(byte)((((Patch)p).sysex[6+ 17]+ ((Patch)p).sysex[6+ 18]*16)); ((Patch)bank).sysex[getPatchStart(patchNum)+  7]=(byte)((((Patch)p).sysex[6+ 20]+ ((Patch)p).sysex[6+ 21]* 2)); ((Patch)bank).sysex[getPatchStart(patchNum)+  8]=(byte)((((Patch)p).sysex[6+ 22])); ((Patch)bank).sysex[getPatchStart(patchNum)+  9]=(byte)((((Patch)p).sysex[6+ 23])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 10]=(byte)((((Patch)p).sysex[6+ 24])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 11]=(byte)((((Patch)p).sysex[6+ 25])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 12]=(byte)((((Patch)p).sysex[6+ 26])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 13]=(byte)((((Patch)p).sysex[6+ 27])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 14]=(byte)((((Patch)p).sysex[6+ 28])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 15]=(byte)((((Patch)p).sysex[6+ 29])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 16]=(byte)((((Patch)p).sysex[6+ 30])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 17]=(byte)((((Patch)p).sysex[6+ 31])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 18]=(byte)((((Patch)p).sysex[6+ 32])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 19]=(byte)((((Patch)p).sysex[6+ 33])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 20]=(byte)((((Patch)p).sysex[6+ 34])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 21]=(byte)((((Patch)p).sysex[6+ 35])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 22]=(byte)((((Patch)p).sysex[6+ 36])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 23]=(byte)((((Patch)p).sysex[6+ 37])); ((Patch)bank).sysex[getPatchStart(patchNum)+ 24]=(byte)((((Patch)p).sysex[6+ 38]));
	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		bank.sysex[getPatchStart(patchNum)+  0]=(byte)((p.sysex[6+  0]+			// OP6 Scaling Mode normal/fractional...(0- 1)								p.sysex[6+  1]* 2+		// OP5 Scaling Mode normal/fractional...(0- 1)								p.sysex[6+  2]* 4+		// OP4 Scaling Mode normal/fractional...(0- 1)								p.sysex[6+  3]* 8+		// OP3 Scaling Mode normal/fractional...(0- 1)								p.sysex[6+  4]*16+		// OP2 Scaling Mode normal/fractional...(0- 1)								p.sysex[6+  5]*32));		// OP1 Scaling Mode normal/fractional...(0- 1)		bank.sysex[getPatchStart(patchNum)+  1]=(byte)((p.sysex[6+  6]+			// OP6 amplitude modulation sensitivity (0- 7)								p.sysex[6+  7]* 8));		// OP5 amplitude modulation sensitivity (0- 7)		bank.sysex[getPatchStart(patchNum)+  2]=(byte)((p.sysex[6+  8]+			// OP4 amplitude modulation sensitivity (0- 7)								p.sysex[6+  9]* 8));		// OP3 amplitude modulation sensitivity (0- 7)		bank.sysex[getPatchStart(patchNum)+  3]=(byte)((p.sysex[6+ 10]+			// OP2 amplitude modulation sensitivity (0- 7)								p.sysex[6+ 11]* 8));		// OP1 amplitude modulation sensitivity (0- 7)		bank.sysex[getPatchStart(patchNum)+  4]=(byte)((p.sysex[6+ 12]+			// Pitch EG Range ......................(0- 3)								p.sysex[6+ 13]* 4+		// LFO key trigger (delay) .............(0- 1)								p.sysex[6+ 14]* 8+		// Pitch EG by velocity switch .........(0- 1)								p.sysex[6+ 19]*16));		// Random Pitch Depth ..................(0- 7)		bank.sysex[getPatchStart(patchNum)+  5]=(byte)((p.sysex[6+ 15]+			// bit1:Poly/Mono, bit0: Unison off/on .(0- 3)								p.sysex[6+ 16]* 4));		// Pitch Bend Range ....................(0-12)		bank.sysex[getPatchStart(patchNum)+  6]=(byte)((p.sysex[6+ 17]+			// Pitch Bend Step .....................(0-12)								p.sysex[6+ 18]*16));		// Pitch Bend Mode .....................(0- 3)		bank.sysex[getPatchStart(patchNum)+  7]=(byte)((p.sysex[6+ 20]+			// Portamento Mode .....................(0- 1)								p.sysex[6+ 21]* 2));		// Portamento Step .....................(0-12)		bank.sysex[getPatchStart(patchNum)+  8]=(byte)((p.sysex[6+ 22]));		// Portamento Time .....................(0-99)		bank.sysex[getPatchStart(patchNum)+  9]=(byte)((p.sysex[6+ 23]));		// Modulation Wheel Pitch Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 10]=(byte)((p.sysex[6+ 24]));		// Modulation Wheel Ampl. Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 11]=(byte)((p.sysex[6+ 25]));		// Modulation Wheel EG Bias Range ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 12]=(byte)((p.sysex[6+ 26]));		// Foot Control 1   Pitch Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 13]=(byte)((p.sysex[6+ 27]));		// Foot Control 1   Ampl. Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 14]=(byte)((p.sysex[6+ 28]));		// Foot Control 1   EG Bias Range ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 15]=(byte)((p.sysex[6+ 29]));		// Foot Control 1   Volume Range .......(0-99)		bank.sysex[getPatchStart(patchNum)+ 16]=(byte)((p.sysex[6+ 30]));		// Breath Control   Pitch Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 17]=(byte)((p.sysex[6+ 31]));		// Breath Control   Ampl. Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 18]=(byte)((p.sysex[6+ 32]));		// Breath Control   EG Bias Range ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 19]=(byte)((p.sysex[6+ 33]));		// Breath Control   Pitch Bias Range ...(0-100)		bank.sysex[getPatchStart(patchNum)+ 20]=(byte)((p.sysex[6+ 34]));		// After Touch	   Pitch Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 21]=(byte)((p.sysex[6+ 35]));		// After Touch	   Ampl. Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 22]=(byte)((p.sysex[6+ 36]));		// After Touch	   EG Bias Range ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 23]=(byte)((p.sysex[6+ 37]));		// After Touch	   Pitch Bias Range ...(0-100)		bank.sysex[getPatchStart(patchNum)+ 24]=(byte)((p.sysex[6+ 38]));		// Pitch EG Rate Scaling  ..............(0- 7)		       		//bank.sysex[getPatchStart(patchNum)+ 25]=(byte)();				// !!! RESERVED !!!		bank.sysex[getPatchStart(patchNum)+ 26]=(byte)((p.sysex[6+ 39]));		// Foot Control 2   Pitch Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 27]=(byte)((p.sysex[6+ 40]));		// Foot Control 2   Ampl. Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 28]=(byte)((p.sysex[6+ 41]));		// Foot Control 2   EG Bias Range ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 29]=(byte)((p.sysex[6+ 42]));		// Foot Control 2   Volume Range .......(0-99)		bank.sysex[getPatchStart(patchNum)+ 30]=(byte)((p.sysex[6+ 43]));		// MIDI IN Control  Pitch Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 31]=(byte)((p.sysex[6+ 44]));		// MIDI IN Control  Ampl. Mod Range ....(0-99)		bank.sysex[getPatchStart(patchNum)+ 32]=(byte)((p.sysex[6+ 45]));		// MIDI IN Control  EG Bias Range ......(0-99)		bank.sysex[getPatchStart(patchNum)+ 33]=(byte)((p.sysex[6+ 46]));		// MIDI IN Control  Volume Range .......(0-99)		bank.sysex[getPatchStart(patchNum)+ 34]=(byte)((p.sysex[6+ 47]+			// Unison detune depth .................(0- 7)								p.sysex[6+ 48]* 8));		// Foot Control 1 use as CS1 switch ....(0- 1)			calculateChecksum(bank);	}