bank.sysex[getPatchStart(patchNum)+ 0	]=(byte)(0x01); bank.sysex[getPatchStart(patchNum)+ 1	]=(byte)(0x28); bank.sysex[getPatchStart(patchNum)+ 2	]=(byte)(0x4C); bank.sysex[getPatchStart(patchNum)+ 3	]=(byte)(0x4D); bank.sysex[getPatchStart(patchNum)+ 4	]=(byte)(0x20); bank.sysex[getPatchStart(patchNum)+ 5	]=(byte)(0x20); bank.sysex[getPatchStart(patchNum)+ 6	]=(byte)(0x38); bank.sysex[getPatchStart(patchNum)+ 7	]=(byte)(0x39); bank.sysex[getPatchStart(patchNum)+ 8	]=(byte)(0x35); bank.sysex[getPatchStart(patchNum)+ 9	]=(byte)(0x32); bank.sysex[getPatchStart(patchNum)+10	]=(byte)(0x50); bank.sysex[getPatchStart(patchNum)+11	]=(byte)(0x4D);
((Patch)bank).sysex[getPatchStart(patchNum)+ 0	]=(byte)(0x01); ((Patch)bank).sysex[getPatchStart(patchNum)+ 1	]=(byte)(0x28); ((Patch)bank).sysex[getPatchStart(patchNum)+ 2	]=(byte)(0x4C); ((Patch)bank).sysex[getPatchStart(patchNum)+ 3	]=(byte)(0x4D); ((Patch)bank).sysex[getPatchStart(patchNum)+ 4	]=(byte)(0x20); ((Patch)bank).sysex[getPatchStart(patchNum)+ 5	]=(byte)(0x20); ((Patch)bank).sysex[getPatchStart(patchNum)+ 6	]=(byte)(0x38); ((Patch)bank).sysex[getPatchStart(patchNum)+ 7	]=(byte)(0x39); ((Patch)bank).sysex[getPatchStart(patchNum)+ 8	]=(byte)(0x35); ((Patch)bank).sysex[getPatchStart(patchNum)+ 9	]=(byte)(0x32); ((Patch)bank).sysex[getPatchStart(patchNum)+10	]=(byte)(0x50); ((Patch)bank).sysex[getPatchStart(patchNum)+11	]=(byte)(0x4D);
	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		int value;		bank.sysex[getPatchStart(patchNum)+ 0	]=(byte)(0x01);	// Byte Count MSB		bank.sysex[getPatchStart(patchNum)+ 1	]=(byte)(0x28);	// Byte Count LSB		bank.sysex[getPatchStart(patchNum)+ 2	]=(byte)(0x4C);	// "L"		bank.sysex[getPatchStart(patchNum)+ 3	]=(byte)(0x4D);	// "M"		bank.sysex[getPatchStart(patchNum)+ 4	]=(byte)(0x20);	// " "		bank.sysex[getPatchStart(patchNum)+ 5	]=(byte)(0x20);	// " "		bank.sysex[getPatchStart(patchNum)+ 6	]=(byte)(0x38);	// "8"		bank.sysex[getPatchStart(patchNum)+ 7	]=(byte)(0x39);	// "9"		bank.sysex[getPatchStart(patchNum)+ 8	]=(byte)(0x35);	// "5"		bank.sysex[getPatchStart(patchNum)+ 9	]=(byte)(0x32);	// "2"		bank.sysex[getPatchStart(patchNum)+10	]=(byte)(0x50);	// "P"		bank.sysex[getPatchStart(patchNum)+11	]=(byte)(0x4D);	// "M"		for (int i=0; i<8;i++) {					// TG1-8 - Voice Channel Offset (0-7) | MIDI Receive Channel (0-16)			value = getByte(p,16+(2* 0)+(2*i))*32 +				getByte(p,16+(2* 8)+(2*i));						bank.sysex[getPatchStart(patchNum)+12+(2* 0)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2* 0)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}		for (int i=0; i<8;i++) {					// TG1-8 - Voice Number (0-255)			value = getByte(p,16+(2*16)+(2*i));						bank.sysex[getPatchStart(patchNum)+12+(2* 8)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2* 8)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}		for (int i=0; i<8;i++) {					// TG1-8 - Micro Tuning Table # (0-254)			value = getByte(p,16+(2*88)+(2*i));						bank.sysex[getPatchStart(patchNum)+12+(2*16)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2*16)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}		for (int i=0; i<8;i++) {					// TG1-8 - Output Volume (0-99)			value = getByte(p,16+(2*32)+(2*i));      			bank.sysex[getPatchStart(patchNum)+12+(2*24)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2*24)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}		for (int i=0; i<8;i++) {					// TG1-8 - Detune (0-14) | Key Assign Group (0-1) | Output Assign (0-3)			value = getByte(p,16+(2*24)+(2*i))*16 +				getByte(p,16+(2*80)+(2*i))*8  +				getByte(p,16+(2*40)+(2*i));      			bank.sysex[getPatchStart(patchNum)+12+(2*32)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2*32)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}		for (int i=0; i<8;i++) {					// TG1-8 - Note Limit Low (0-127)			value = getByte(p,16+(2*48)+(2*i));      			bank.sysex[getPatchStart(patchNum)+12+(2*40)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2*40)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}		for (int i=0; i<8;i++) {					// TG1-8 - Note Limit High (0-127)			value = getByte(p,16+(2*56)+(2*i));      			bank.sysex[getPatchStart(patchNum)+12+(2*48)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2*48)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}		for (int i=0; i<8;i++) {				// TG1-8 - EG forced Damp (0-1) | Note Shift (0-48)			value = getByte(p,16+(2*72)+(2*i))*64 +				getByte(p,16+(2*64)+(2*i));      			bank.sysex[getPatchStart(patchNum)+12+(2*56)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2*56)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}		for (int i=0; i<20;i++)	{				// Performance Name (ASCII)			value = getByte(p,16+(2*96)+(2*i));      			bank.sysex[getPatchStart(patchNum)+12+(2*64)+(2*i)  ]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexHigh(value));			bank.sysex[getPatchStart(patchNum)+12+(2*64)+(2*i)+1]=(byte)(DX7FamilyByteEncoding.Value2AsciiHexLow( value));		}			// Calculate checkSum of single bulk data		calculateChecksum(bank,getPatchStart(patchNum)+2,getPatchStart(patchNum)+179,getPatchStart(patchNum)+180);	}