diff --git a/MDX_PerfConv.lps b/MDX_PerfConv.lps
index c187bae..2e31c24 100644
--- a/MDX_PerfConv.lps
+++ b/MDX_PerfConv.lps
@@ -74,7 +74,7 @@
-
+
@@ -83,47 +83,45 @@
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
+
+
+
+
+
+
+
+
@@ -137,7 +135,7 @@
-
+
@@ -145,7 +143,7 @@
-
+
@@ -153,7 +151,7 @@
-
+
@@ -161,27 +159,28 @@
-
+
-
+
-
+
+
-
-
+
+
@@ -190,7 +189,7 @@
-
+
@@ -212,9 +211,9 @@
-
-
-
+
+
+
@@ -222,7 +221,7 @@
-
+
@@ -230,7 +229,7 @@
-
+
@@ -239,14 +238,14 @@
-
+
-
+
-
+
@@ -254,7 +253,7 @@
-
+
@@ -262,7 +261,7 @@
-
+
@@ -270,150 +269,150 @@
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
diff --git a/MDX_PerfConv.res b/MDX_PerfConv.res
index 973fea5..5fa0600 100644
Binary files a/MDX_PerfConv.res and b/MDX_PerfConv.res differ
diff --git a/units/untDX7Voice.pas b/units/untDX7Voice.pas
index 645245e..8bf7923 100644
--- a/units/untDX7Voice.pas
+++ b/units/untDX7Voice.pas
@@ -29,9 +29,9 @@
interface
uses
- Classes, SysUtils, untUtils, untParConst
- {$IFNDEF CMDLINE} , HlpHashFactory {$ENDIF}
- ;
+ Classes, SysUtils, Math, untUtils, untParConst
+ {$IFNDEF CMDLINE} , HlpHashFactory {$ENDIF} ;
+
type
TDX7_VMEM_Dump = array [0..127] of byte;
TDX7_VCED_Dump = array [0..155] of byte;
@@ -185,8 +185,8 @@ interface
LFO_AMP_MOD_DEPTH: byte; // 0-99
LFO_SYNC: byte; // 0-1
LFO_WAVEFORM: byte; // 0-5, (data sheet claims 9-4 ?!?)
- // 0:TR, 1:SD, 2:SU,
- // 3:SQ, 4:SI, 5:SH
+ // 0:TR, 1:SD, 2:SU,
+ // 3:SQ, 4:SI, 5:SH
PITCH_MOD_SENSITIVITY: byte; // 0-7
TRANSPOSE: byte; // 0-48 12 = C2
VOICE_NAME_CHAR_1: byte; // ASCII
@@ -200,7 +200,7 @@ interface
VOICE_NAME_CHAR_9: byte; // ASCII
VOICE_NAME_CHAR_10: byte; // ASCII
OPERATOR_ON_OFF: byte; // bit6 = 0 / bit 5: OP1 / .. .
- // ... / bit 0: OP6
+ // ... / bit 0: OP6
);
end;
@@ -345,10 +345,8 @@ TDX7VoiceContainer = class(TPersistent)
FDX7_VCED_Params: TDX7_VCED_Params;
FDX7_VMEM_Params: TDX7_VMEM_Params;
public
- function Load_VMEM_FromStream(var aStream: TMemoryStream;
- Position: integer): boolean;
- function Load_VCED_FromStream(var aStream: TMemoryStream;
- Position: integer): boolean;
+ function Load_VMEM_FromStream(var aStream: TMemoryStream; Position: integer): boolean;
+ function Load_VCED_FromStream(var aStream: TMemoryStream; Position: integer): boolean;
procedure InitVoice; //set defaults
function GetVoiceName: string;
procedure SetVoiceName(aName: string);
@@ -369,6 +367,7 @@ TDX7VoiceContainer = class(TPersistent)
function CheckMinMax(var slReport: TStringList): boolean;
function HasNullInName: boolean;
procedure Normalize;
+ procedure Mk2ToMk1(aPEGR, aAMS1, aAMS2, aAMS3, aAMS4, aAMS5, aAMS6: byte);
end;
function VCEDtoVMEM(aPar: TDX7_VCED_Params): TDX7_VMEM_Params;
@@ -741,8 +740,7 @@ function VMEMtoVCED(aPar: TDX7_VMEM_Params): TDX7_VCED_Params;
Result := t;
end;
-function TDX7VoiceContainer.Load_VMEM_FromStream(var aStream: TMemoryStream;
- Position: integer): boolean;
+function TDX7VoiceContainer.Load_VMEM_FromStream(var aStream: TMemoryStream; Position: integer): boolean;
var
i: integer;
begin
@@ -763,8 +761,7 @@ function TDX7VoiceContainer.Load_VMEM_FromStream(var aStream: TMemoryStream;
end;
end;
-function TDX7VoiceContainer.Load_VCED_FromStream(var aStream: TMemoryStream;
- Position: integer): boolean;
+function TDX7VoiceContainer.Load_VCED_FromStream(var aStream: TMemoryStream; Position: integer): boolean;
var
i: integer;
begin
@@ -948,6 +945,7 @@ function TDX7VoiceContainer.CalculateHash: string;
Result := THashFactory.TCrypto.CreateSHA2_256().ComputeStream(aStream).ToString();
aStream.Free;
end;
+
{$ENDIF}
function TDX7VoiceContainer.GetChecksumPart: integer;
@@ -995,8 +993,7 @@ function TDX7VoiceContainer.GetVCEDChecksum: byte;
tmpStream.Free;
end;
-procedure TDX7VoiceContainer.SysExVoiceToStream(aCh: integer;
- var aStream: TMemoryStream);
+procedure TDX7VoiceContainer.SysExVoiceToStream(aCh: integer; var aStream: TMemoryStream);
var
FCh: byte;
begin
@@ -1029,4 +1026,62 @@ function TDX7VoiceContainer.HasNullInName: boolean;
(FDX7_VMEM_Params.VOICE_NAME_CHAR_10 = 0) then Result := True;
end;
+procedure TDX7VoiceContainer.Mk2ToMk1(aPEGR, aAMS1, aAMS2, aAMS3, aAMS4, aAMS5, aAMS6: byte);
+const
+ ams: array[0..7] of byte = (0,1,2,3,3,3,3,3);
+var
+ peg: integer;
+ //pegr: byte;
+ pegr: single;
+begin
+ // Pitch EG Level correction
+ {//DXConvert
+ case aPEGR of
+ 0: pegr := 50; //8 octaves
+ 1: pegr := 32; //4 octaves
+ 2: pegr := 16; //1 octave
+ 3: pegr := 8; //0.5 octave
+ end; }
+ case aPEGR of
+ 0: pegr := 50;
+ 1: pegr := 25;
+ 2: pegr := 6.25;
+ 3: pegr := 3.125;
+ end;
+ {//DXConvert
+ peg := FDX7_VCED_Params.PITCH_EG_LEVEL_1;
+ FDX7_VCED_Params.PITCH_EG_LEVEL_1 := byte((peg - 50) * pegr div 50) + 50;
+
+ peg := FDX7_VCED_Params.PITCH_EG_LEVEL_2;
+ FDX7_VCED_Params.PITCH_EG_LEVEL_2 := byte((peg - 50) * pegr div 50) + 50;
+
+ peg := FDX7_VCED_Params.PITCH_EG_LEVEL_3;
+ FDX7_VCED_Params.PITCH_EG_LEVEL_3 := byte((peg - 50) * pegr div 50) + 50;
+
+ peg := FDX7_VCED_Params.PITCH_EG_LEVEL_4;
+ FDX7_VCED_Params.PITCH_EG_LEVEL_4 := byte((peg - 50) * pegr div 50) + 50; }
+
+ peg := FDX7_VCED_Params.PITCH_EG_LEVEL_1;
+ FDX7_VCED_Params.PITCH_EG_LEVEL_1 := byte(floor((peg - 50) * pegr/50) + 50);
+
+ peg := FDX7_VCED_Params.PITCH_EG_LEVEL_2;
+ FDX7_VCED_Params.PITCH_EG_LEVEL_2 := byte(floor((peg - 50) * pegr/50) + 50);
+
+ peg := FDX7_VCED_Params.PITCH_EG_LEVEL_3;
+ FDX7_VCED_Params.PITCH_EG_LEVEL_3 := byte(floor((peg - 50) * pegr/50) + 50);
+
+ peg := FDX7_VCED_Params.PITCH_EG_LEVEL_4;
+ FDX7_VCED_Params.PITCH_EG_LEVEL_4 := byte(floor((peg - 50) * pegr/50) + 50);
+
+ // Amplitude Modulation Sensitivity correction
+ if aAMS1 <> 0 then FDX7_VCED_Params.OP1_AMP_MOD_SENSITIVITY := ams[aAMS1];
+ if aAMS2 <> 0 then FDX7_VCED_Params.OP2_AMP_MOD_SENSITIVITY := ams[aAMS2];
+ if aAMS3 <> 0 then FDX7_VCED_Params.OP3_AMP_MOD_SENSITIVITY := ams[aAMS3];
+ if aAMS4 <> 0 then FDX7_VCED_Params.OP4_AMP_MOD_SENSITIVITY := ams[aAMS4];
+ if aAMS5 <> 0 then FDX7_VCED_Params.OP5_AMP_MOD_SENSITIVITY := ams[aAMS5];
+ if aAMS6 <> 0 then FDX7_VCED_Params.OP6_AMP_MOD_SENSITIVITY := ams[aAMS6];
+
+ FDX7_VMEM_Params := VCEDtoVMEM(FDX7_VCED_Params);
+end;
+
end.
diff --git a/units/untMDXPerformance.pas b/units/untMDXPerformance.pas
index 70324db..651f906 100644
--- a/units/untMDXPerformance.pas
+++ b/units/untMDXPerformance.pas
@@ -405,9 +405,9 @@ procedure TMDXPerformanceContainer.LoadPerformanceFromFile(aName: string);
FMDX_Params.TG[iCount].SupplData.BreathControlTarget :=
ini.ReadInteger('BreathControlTarget' + sCount, 0);
FMDX_Params.TG[iCount].SupplData.AftertouchRange :=
- ini.ReadInteger('AfterTouchRange' + sCount, 99);
+ ini.ReadInteger('AftertouchRange' + sCount, 99);
FMDX_Params.TG[iCount].SupplData.AftertouchTarget :=
- ini.ReadInteger('AfterTouchTarget' + sCount, 0);
+ ini.ReadInteger('AftertouchTarget' + sCount, 0);
end;
//Effects
@@ -516,9 +516,9 @@ procedure TMDXPerformanceContainer.SavePerformanceToFile(aName: string;
FMDX_Params.TG[iCount].SupplData.BreathControlRange);
ini.WriteInteger('BreathControlTarget' + sCount,
FMDX_Params.TG[iCount].SupplData.BreathControlTarget);
- ini.WriteInteger('AfterTouchRange' + sCount,
+ ini.WriteInteger('AftertouchRange' + sCount,
FMDX_Params.TG[iCount].SupplData.AftertouchRange);
- ini.WriteInteger('AfterTouchTarget' + sCount,
+ ini.WriteInteger('AftertouchTarget' + sCount,
FMDX_Params.TG[iCount].SupplData.AftertouchTarget);
end;
diff --git a/untConverter.pas b/untConverter.pas
index 80c10bb..30315e7 100644
--- a/untConverter.pas
+++ b/untConverter.pas
@@ -100,7 +100,7 @@ function LoadDX7IIACEDPCEDtoPCEDx(isVoiceA: boolean; aACED: TDX7IISupplementCont
if isVoiceA then
sup.NoteLimitHigh := pced.SplitPoint
else
- sup.NoteLimitLow := pced.SplitPoint - 1;
+ sup.NoteLimitLow := pced.SplitPoint + 1;
end;
if (pced.PerformanceLayerMode = 1) and (pced.DualDetune <> 0) then
@@ -108,12 +108,16 @@ function LoadDX7IIACEDPCEDtoPCEDx(isVoiceA: boolean; aACED: TDX7IISupplementCont
if isVoiceA then
begin
sup.DetuneSGN := 0;
- sup.DetuneVAL := Floor(pced.DualDetune * 3.572);
+ {DX77II - value 7 = 25c
+ MiniDexed - value 12,375 = 25c}
+ //sup.DetuneVAL := Floor(pced.DualDetune * 3.572);
+ sup.DetuneVAL := Floor(pced.DualDetune * 1.768);
end
else
begin
sup.DetuneSGN := 1;
- sup.DetuneVAL := Floor(pced.DualDetune * 3.572);
+ //sup.DetuneVAL := Floor(pced.DualDetune * 3.572);
+ sup.DetuneVAL := Floor(pced.DualDetune * 1.768);
end;
end;
Result := sup;
@@ -180,11 +184,12 @@ function LoadTX7PCEDtoPCEDx(aPCED: TTX7FunctionContainer): TMDX_PCEDx_Params;
GetDefinedValues(MDX, fInit, sup.params);
sup.NoteShift := par.A_PerfKeyShift;
if par.G_KeyAssignMode = 2 then
- sup.NoteLimitHigh := par.G_SplitPoint - 1;
+ sup.NoteLimitHigh := par.G_SplitPoint;
if (par.G_KeyAssignMode = 1) and (par.G_DualModeDetune <> 0) then
begin
sup.DetuneSGN := 0;
- sup.DetuneVAL := Floor(par.G_DualModeDetune * 1.786);
+ //sup.DetuneVAL := Floor(par.G_DualModeDetune * 1.786);
+ sup.DetuneVAL := Floor(par.G_DualModeDetune * 0.886);
end;
sup.PitchBendRange := par.A_PitchBendRange;
sup.PitchBendStep := par.A_PitchBendStep;
@@ -213,11 +218,12 @@ function LoadDX5PCEDtoPCEDx(aPCED: TTX7FunctionContainer): TMDX_PCEDx_Params;
GetDefinedValues(MDX, fInit, sup.params);
sup.NoteShift := par.A_PerfKeyShift;
if par.G_KeyAssignMode = 2 then
- sup.NoteLimitLow := par.G_SplitPoint;
+ sup.NoteLimitLow := par.G_SplitPoint + 1;
if (par.G_KeyAssignMode = 1) and (par.G_DualModeDetune <> 0) then
begin
sup.DetuneSGN := 1;
- sup.DetuneVAL := Floor(par.G_DualModeDetune * 1.786);
+ //sup.DetuneVAL := Floor(par.G_DualModeDetune * 1.786);
+ sup.DetuneVAL := Floor(par.G_DualModeDetune * 0.886);
end;
sup.PitchBendRange := par.B_PitchBendRange;
sup.PitchBendStep := par.B_PitchBendStep;
@@ -529,6 +535,9 @@ procedure ConvertDX7IItoMDX(ABank: string; ANumber: integer);
i, j: integer;
sName: string;
sPath: string;
+
+ perg, ams1, ams2, ams3, ams4, ams5, ams6: byte;
+
begin
msSearchPosition := 0;
msFoundPosition := 0;
@@ -580,6 +589,14 @@ procedure ConvertDX7IItoMDX(ABank: string; ANumber: integer);
DX7.GetVoice(i * 8 + j, DX7_VCED);
DX7II.GetSupplement(i * 8 + j, DX7II_ACED);
+ perg := DX7II_ACED.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
MDX.LoadVoiceToTG(j, DX7_VCED.Get_VCED_Params);
MDX_TG.Set_PCEDx_Params(LoadDX7IIACEDtoPCEDx(DX7II_ACED));
MDX.LoadPCEDxToTG(j, MDX_TG.Get_PCEDx_Params);
@@ -820,6 +837,9 @@ procedure ConvertDX7IItoMDX(ABankA, ABankB, APerf: string; ANumber: integer); ov
i: integer;
sName: string;
sPath: string;
+
+ perg, ams1, ams2, ams3, ams4, ams5, ams6: byte;
+
begin
msFoundPosition := 0;
@@ -945,12 +965,28 @@ procedure ConvertDX7IItoMDX(ABankA, ABankB, APerf: string; ANumber: integer); ov
WriteLn('1: Bank A, Voice ' + IntToStr(iVoiceA));
DXA.GetVoice(iVoiceA, DX7_VCED_A);
DXAs.GetSupplement(iVoiceA, DX7II_ACED_A);
+ perg := DX7II_ACED_A.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_A.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_A.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_A.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_A.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_A.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_A.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_A.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end
else
begin
WriteLn('1: Bank B, Voice ' + IntToStr(iVoiceA - 32));
DXB.GetVoice(iVoiceA - 32, DX7_VCED_A);
DXBs.GetSupplement(iVoiceA - 32, DX7II_ACED_A);
+ perg := DX7II_ACED_A.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_A.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_A.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_A.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_A.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_A.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_A.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_A.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
MDX.LoadVoiceToTG(1, DX7_VCED_A.Get_VCED_Params);
MDX_TG1.Set_PCEDx_Params(LoadDX7IIACEDPCEDtoPCEDx(True, DX7II_ACED_A, DX7II_PCED));
@@ -974,12 +1010,28 @@ procedure ConvertDX7IItoMDX(ABankA, ABankB, APerf: string; ANumber: integer); ov
WriteLn('2: Bank A, Voice ' + IntToStr(iVoiceB));
DXA.GetVoice(iVoiceB, DX7_VCED_B);
DXAs.GetSupplement(iVoiceB, DX7II_ACED_B);
+ perg := DX7II_ACED_B.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_B.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_B.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_B.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_B.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_B.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_B.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_B.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end
else
begin
WriteLn('2: Bank B, Voice ' + IntToStr(iVoiceB - 32));
DXB.GetVoice(iVoiceB - 32, DX7_VCED_B);
DXBs.GetSupplement(iVoiceB - 32, DX7II_ACED_B);
+ perg := DX7II_ACED_B.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_B.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_B.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_B.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_B.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_B.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_B.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_B.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
MDX.LoadVoiceToTG(2, DX7_VCED_B.Get_VCED_Params);
MDX_TG2.Set_PCEDx_Params(LoadDX7IIACEDPCEDtoPCEDx(False,
@@ -1057,6 +1109,9 @@ procedure ConvertTX802ToMDX(ABankA1, ABankA2, ABankB1, ABankB2, APerf: string; A
i, j, t: integer;
sName: string;
sPath: string;
+
+ perg, ams1, ams2, ams3, ams4, ams5, ams6: byte;
+
begin
msFoundPosition := 0;
@@ -1228,6 +1283,14 @@ procedure ConvertTX802ToMDX(ABankA1, ABankA2, ABankB1, ABankB2, APerf: string; A
iVoice[j] := iVoice[j] - 127;
DXA1.GetVoice(iVoice[j], DX7_VCED);
DXA1s.GetSupplement(iVoice[j], DX7II_ACED);
+ perg := DX7II_ACED.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
MDX.LoadVoiceToTG(j, DX7_VCED.Get_VCED_Params);
MDX_TG.Set_PCEDx_Params(LoadTX802toPCEDx(DX7II_ACED, TX802_PCED, j));
MDX.LoadPCEDxToTG(j, MDX_TG.Get_PCEDx_Params);
@@ -1241,6 +1304,14 @@ procedure ConvertTX802ToMDX(ABankA1, ABankA2, ABankB1, ABankB2, APerf: string; A
iVoice[j] := iVoice[j] - 159;
DXA2.GetVoice(iVoice[j], DX7_VCED);
DXA2s.GetSupplement(iVoice[j], DX7II_ACED);
+ perg := DX7II_ACED.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
MDX.LoadVoiceToTG(j, DX7_VCED.Get_VCED_Params);
MDX_TG.Set_PCEDx_Params(LoadTX802toPCEDx(DX7II_ACED, TX802_PCED, j));
MDX.LoadPCEDxToTG(j, MDX_TG.Get_PCEDx_Params);
@@ -1254,6 +1325,14 @@ procedure ConvertTX802ToMDX(ABankA1, ABankA2, ABankB1, ABankB2, APerf: string; A
iVoice[j] := iVoice[j] - 192;
DXB1.GetVoice(iVoice[j], DX7_VCED);
DXB1s.GetSupplement(iVoice[j], DX7II_ACED);
+ perg := DX7II_ACED.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
MDX.LoadVoiceToTG(j, DX7_VCED.Get_VCED_Params);
MDX_TG.Set_PCEDx_Params(LoadTX802toPCEDx(DX7II_ACED, TX802_PCED, j));
MDX.LoadPCEDxToTG(j, MDX_TG.Get_PCEDx_Params);
@@ -1267,6 +1346,14 @@ procedure ConvertTX802ToMDX(ABankA1, ABankA2, ABankB1, ABankB2, APerf: string; A
iVoice[j] := iVoice[j] - 223;
DXB2.GetVoice(iVoice[j], DX7_VCED);
DXB2s.GetSupplement(iVoice[j], DX7II_ACED);
+ perg := DX7II_ACED.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
MDX.LoadVoiceToTG(j, DX7_VCED.Get_VCED_Params);
MDX_TG.Set_PCEDx_Params(LoadTX802toPCEDx(DX7II_ACED, TX802_PCED, j));
MDX.LoadPCEDxToTG(j, MDX_TG.Get_PCEDx_Params);
@@ -1343,6 +1430,9 @@ procedure ConvertBigDX7IItoMDX(ABankA: string; ANumber: integer);
i: integer;
sName: string;
sPath: string;
+
+ perg, ams1, ams2, ams3, ams4, ams5, ams6: byte;
+
begin
msFoundPosition := 0;
@@ -1473,12 +1563,28 @@ procedure ConvertBigDX7IItoMDX(ABankA: string; ANumber: integer);
WriteLn('1: Bank A, Voice ' + IntToStr(iVoiceA) + ' - ' + DXA.GetVoiceName(iVoiceA));
DXA.GetVoice(iVoiceA, DX7_VCED_A);
DXAs.GetSupplement(iVoiceA, DX7II_ACED_A);
+ perg := DX7II_ACED_A.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_A.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_A.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_A.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_A.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_A.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_A.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_A.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end
else
begin
WriteLn('1: Bank B, Voice ' + IntToStr(iVoiceA - 32) + ' - ' + DXB.GetVoiceName(iVoiceA - 32));
DXB.GetVoice(iVoiceA - 32, DX7_VCED_A);
DXBs.GetSupplement(iVoiceA - 32, DX7II_ACED_A);
+ perg := DX7II_ACED_A.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_A.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_A.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_A.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_A.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_A.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_A.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_A.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
MDX.LoadVoiceToTG(1, DX7_VCED_A.Get_VCED_Params);
MDX_TG1.Set_PCEDx_Params(LoadDX7IIACEDPCEDtoPCEDx(True, DX7II_ACED_A, DX7II_PCED));
@@ -1502,12 +1608,28 @@ procedure ConvertBigDX7IItoMDX(ABankA: string; ANumber: integer);
WriteLn('2: Bank A, Voice ' + IntToStr(iVoiceB) + ' - ' + DXA.GetVoiceName(iVoiceB));
DXA.GetVoice(iVoiceB, DX7_VCED_B);
DXAs.GetSupplement(iVoiceB, DX7II_ACED_B);
+ perg := DX7II_ACED_B.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_B.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_B.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_B.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_B.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_B.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_B.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_B.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end
else
begin
WriteLn('2: Bank B, Voice ' + IntToStr(iVoiceB - 32) + ' - ' + DXB.GetVoiceName(iVoiceB - 32));
DXB.GetVoice(iVoiceB - 32, DX7_VCED_B);
DXBs.GetSupplement(iVoiceB - 32, DX7II_ACED_B);
+ perg := DX7II_ACED_B.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_B.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_B.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_B.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_B.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_B.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_B.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_B.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
MDX.LoadVoiceToTG(2, DX7_VCED_B.Get_VCED_Params);
MDX_TG2.Set_PCEDx_Params(LoadDX7IIACEDPCEDtoPCEDx(False,
@@ -1587,6 +1709,9 @@ procedure Convert2BigDX7IItoMDX(ABankA, ABankB: string; ANumber: integer);
i: integer;
sName: string;
sPath: string;
+
+ perg, ams1, ams2, ams3, ams4, ams5, ams6: byte;
+
begin
msFoundPosition := 0;
@@ -1902,24 +2027,56 @@ procedure Convert2BigDX7IItoMDX(ABankA, ABankB: string; ANumber: integer);
WriteLn('1: Bank A1, Voice ' + IntToStr(iVoiceA + 1) + ' - ' + DXA32.GetVoiceName(iVoiceA + 1));
DXA32.GetVoice(iVoiceA + 1, DX7_VCED_A);
DXA32s.GetSupplement(iVoiceA + 1, DX7II_ACED_A);
+ perg := DX7II_ACED_A.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_A.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_A.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_A.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_A.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_A.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_A.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_A.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
if (iVoiceA > 31) and (iVoiceA < 64) then
begin
WriteLn('1: Bank A2, Voice ' + IntToStr(iVoiceA - 31) + ' - ' + DXA64.GetVoiceName(iVoiceA - 31));
DXA64.GetVoice(iVoiceA - 31, DX7_VCED_A);
DXA64s.GetSupplement(iVoiceA - 31, DX7II_ACED_A);
+ perg := DX7II_ACED_A.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_A.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_A.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_A.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_A.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_A.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_A.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_A.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
if (iVoiceA > 63) and (iVoiceA < 96) then
begin
WriteLn('1: Bank B1, Voice ' + IntToStr(iVoiceA - 63) + ' - ' + DXB32.GetVoiceName(iVoiceA - 63));
DXB32.GetVoice(iVoiceA - 63, DX7_VCED_A);
DXB32s.GetSupplement(iVoiceA - 63, DX7II_ACED_A);
+ perg := DX7II_ACED_A.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_A.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_A.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_A.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_A.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_A.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_A.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_A.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
if (iVoiceA > 95) and (iVoiceA < 128) then
begin
WriteLn('1: Bank B2, Voice ' + IntToStr(iVoiceA - 95) + ' - ' + DXB64.GetVoiceName(iVoiceA - 95));
DXB64.GetVoice(iVoiceA - 95, DX7_VCED_A);
DXB64s.GetSupplement(iVoiceA - 95, DX7II_ACED_A);
+ perg := DX7II_ACED_A.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_A.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_A.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_A.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_A.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_A.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_A.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_A.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
MDX.LoadVoiceToTG(1, DX7_VCED_A.Get_VCED_Params);
@@ -1943,25 +2100,57 @@ procedure Convert2BigDX7IItoMDX(ABankA, ABankB: string; ANumber: integer);
begin
WriteLn('2: Bank A1, Voice ' + IntToStr(iVoiceB + 1) + ' - ' + DXA32.GetVoiceName(iVoiceB + 1));
DXA32.GetVoice(iVoiceB + 1, DX7_VCED_B);
- DXA32s.GetSupplement(iVoiceB + 1, DX7II_ACED_A);
+ DXA32s.GetSupplement(iVoiceB + 1, DX7II_ACED_B);
+ perg := DX7II_ACED_B.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_B.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_B.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_B.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_B.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_B.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_B.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_B.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
if (iVoiceB > 31) and (iVoiceB < 64) then
begin
WriteLn('2: Bank A2, Voice ' + IntToStr(iVoiceB - 31) + ' - ' + DXA64.GetVoiceName(iVoiceB - 31));
DXA64.GetVoice(iVoiceB - 31, DX7_VCED_B);
- DXA64s.GetSupplement(iVoiceB - 31, DX7II_ACED_A);
+ DXA64s.GetSupplement(iVoiceB - 31, DX7II_ACED_B);
+ perg := DX7II_ACED_B.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_B.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_B.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_B.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_B.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_B.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_B.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_B.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
if (iVoiceB > 63) and (iVoiceB < 96) then
begin
WriteLn('2: Bank B1, Voice ' + IntToStr(iVoiceB - 63) + ' - ' + DXB32.GetVoiceName(iVoiceB - 63));
DXB32.GetVoice(iVoiceB - 63, DX7_VCED_B);
- DXB32s.GetSupplement(iVoiceB - 63, DX7II_ACED_A);
+ DXB32s.GetSupplement(iVoiceB - 63, DX7II_ACED_B);
+ perg := DX7II_ACED_B.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_B.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_B.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_B.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_B.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_B.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_B.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_B.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
if (iVoiceB > 95) and (iVoiceB < 128) then
begin
WriteLn('2: Bank B2, Voice ' + IntToStr(iVoiceB - 95) + ' - ' + DXB64.GetVoiceName(iVoiceB - 95));
DXB64.GetVoice(iVoiceB - 95, DX7_VCED_B);
- DXB64s.GetSupplement(iVoiceB - 95, DX7II_ACED_A);
+ DXB64s.GetSupplement(iVoiceB - 95, DX7II_ACED_B);
+ perg := DX7II_ACED_B.Get_ACED_Params.Pitch_EG_Range;
+ ams1 := DX7II_ACED_B.Get_ACED_Params.OP1_AM_Sensitivity;
+ ams2 := DX7II_ACED_B.Get_ACED_Params.OP2_AM_Sensitivity;
+ ams3 := DX7II_ACED_B.Get_ACED_Params.OP3_AM_Sensitivity;
+ ams4 := DX7II_ACED_B.Get_ACED_Params.OP4_AM_Sensitivity;
+ ams5 := DX7II_ACED_B.Get_ACED_Params.OP5_AM_Sensitivity;
+ ams6 := DX7II_ACED_B.Get_ACED_Params.OP6_AM_Sensitivity;
+ DX7_VCED_B.Mk2ToMk1(perg, ams1, ams2, ams3, ams4, ams5, ams6);
end;
MDX.LoadVoiceToTG(2, DX7_VCED_B.Get_VCED_Params);
diff --git a/untDispatcher.pas b/untDispatcher.pas
index 43440c2..5a12035 100644
--- a/untDispatcher.pas
+++ b/untDispatcher.pas
@@ -50,9 +50,16 @@ procedure DispatchCheck(ABank: string; ANumber: integer);
WriteLn('It is a DX7II "big" dump');
ConvertBigDX7IItoMDX(ABank, ANumber);
end;
+ if (VMEM in ms) and (LMPMEM in ms) and not (AMEM in ms) then
+ begin
+ WriteLn('It is a INCOMPLETE DX7II "big" dump');
+ WriteLn('Do not expect wonders from this conversion');
+ ConvertBigDX7IItoMDX(ABank, ANumber);
+ end;
if (VMEM in ms) and (PMEM802 in ms) and (AMEM in ms) then
begin
WriteLn('It is a TX802 "big" dump');
+ WriteLn('Not yet supported');
//ConvertTX7toMDX(ABank);
end;
msBank.Free;