📄 mmrvbdlg.pas
字号:
SpinDelay6.MaxValue := MaxDelay;
SpinDelay6.Value := Echos[5].Delay;
SpinGain6.Value := Echos[5].Gain;
CheckBoxLine6.Checked:= True;
SpinDelay7.MaxValue := MaxDelay;
SpinDelay7.Value := Echos[6].Delay;
SpinGain7.Value := Echos[6].Gain;
CheckBoxLine7.Checked:= True;
SpinDelay8.MaxValue := MaxDelay;
SpinDelay8.Value := Echos[7].Delay;
SpinGain8.Value := Echos[7].Gain;
CheckBoxLine8.Checked:= True;
end;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.UpdateReverb;
begin
with FTmpReverb do
begin
InputGain := SliderInputGain.Position;
InputPan := SliderInputPan.Position;
OutputGain := SliderOutputGain.Position;
FeedBack := SpinFeedBack.Value;
Filter := CheckBoxFilter.Checked;
if CheckBoxLine1.Checked then
Echos[0].SetParams(SpinDelay1.Value,SpinGain1.Value)
else
Echos[0].SetParams(0,0);
if CheckBoxLine2.Checked then
Echos[1].SetParams(SpinDelay2.Value,SpinGain2.Value)
else
Echos[1].SetParams(0,0);
if CheckBoxLine3.Checked then
Echos[2].SetParams(SpinDelay3.Value,SpinGain3.Value)
else
Echos[2].SetParams(0,0);
if CheckBoxLine4.Checked then
Echos[3].SetParams(SpinDelay4.Value,SpinGain4.Value)
else
Echos[3].SetParams(0,0);
if CheckBoxLine5.Checked then
Echos[4].SetParams(SpinDelay5.Value,SpinGain5.Value)
else
Echos[4].SetParams(0,0);
if CheckBoxLine6.Checked then
Echos[5].SetParams(SpinDelay6.Value,SpinGain6.Value)
else
Echos[5].SetParams(0,0);
if CheckBoxLine7.Checked then
Echos[6].SetParams(SpinDelay7.Value,SpinGain7.Value)
else
Echos[6].SetParams(0,0);
if CheckBoxLine8.Checked then
Echos[7].SetParams(SpinDelay8.Value,SpinGain8.Value)
else
Echos[7].SetParams(0,0);
end;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.SetReverb(aValue: TMMReverb);
begin
if (aValue <> Nil) then
begin
FReverb := aValue;
FOldEvent := FReverb.OnPcmOverflow;
FReverb.OnPcmOverflow := Overflow;
FTmpReverb.assign(aValue);
FOrigReverb.assign(aValue);
UpdateControls;
end;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.btnResetClick(Sender: TObject);
begin
FTmpReverb.assign(FOrigReverb);
UpdateControls;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.btnClearClick(Sender: TObject);
var
i: integer;
begin
with FTmpReverb do
begin
InputGain := 50;
InputPan := 0;
OutputGain := 50;
FeedBack := 0;
Filter := False;
for i := 0 to Echos.Count-1 do
begin
Echos[i].Delay := 0;
Echos[i].Gain := 0;
end;
UpdateControls;
end;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.btnLoadClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
FTmpReverb.Echos.LoadFromFile(OpenDialog.FileName);
UpdateControls;
end;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.btnSaveClick(Sender: TObject);
begin
if SaveDialog.Execute then
begin
UpdateReverb;
FTmpReverb.Echos.SaveToFile(SaveDialog.FileName);
end;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.SliderTrack(Sender: TObject);
begin
if (Sender = SliderInputGain) then
begin
edInputGain.Value := SliderInputGain.Position;
end
else if (Sender = SliderInputPan) then
begin
edInputPan.Value := SliderInputPan.Position;
end
else if (Sender = SliderOutputGain) then
begin
edOutputGain.Value := SliderOutputGain.Position;
end;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.edGainExit(Sender: TObject);
begin
if (Sender = edInputGain) then
begin
SliderInputGain.Position := edInputGain.Value;
end
else if (Sender = edInputPan) then
begin
SliderInputPan.Position := edInputPan.Value;
end
else if (Sender = edOutputGain) then
begin
SliderOutputGain.Position := edOutputGain.Value;
end;
end;
{-- TMMReverbDialog -----------------------------------------------------}
procedure TMMReverbDlg.edExit(Sender: TObject);
var
spin: TMMSpinButton;
begin
if TMMNumberEdit(Sender).Tag <> 0 then
begin
spin := TMMSpinButton(TMMNumberEdit(Sender).Tag);
spin.Value := TMMNumberEdit(Sender).Value;
end;
end;
{-- TMMReverbDialog -----------------------------------------------------}
procedure TMMReverbDlg.spinChange(Sender: TObject);
var
Val: integer;
begin
if (TMMSpinButton(Sender).FocusControl <> nil) then
begin
Val := TMMSpinButton(Sender).Value;
TMMNumberEdit(TMMSpinButton(Sender).FocusControl).Value := Val;
end;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.CheckBoxLineClick(Sender: TObject);
begin
with (Sender as TCheckBox) do
begin
if Checked then
begin
TMMSpinButton(Self.FindComponent('spinDelay'+Name[Length(Name)])).Enabled := True;
TMMSpinButton(Self.FindComponent('spinGain'+Name[Length(Name)])).Enabled := True;
TMMNumberEdit(Self.FindComponent('edDelay'+Name[Length(Name)])).Enabled := True;
TMMNumberEdit(Self.FindComponent('edGain'+Name[Length(Name)])).Enabled := True;
end
else
begin
TMMSpinButton(Self.FindComponent('spinDelay'+Name[Length(Name)])).Enabled := False;
TMMSpinButton(Self.FindComponent('spinGain'+Name[Length(Name)])).Enabled := False;
TMMNumberEdit(Self.FindComponent('edDelay'+Name[Length(Name)])).Enabled := False;
TMMNumberEdit(Self.FindComponent('edGain'+Name[Length(Name)])).Enabled := False;
end;
end
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.btnPreviewClick(Sender: TObject);
begin
UpdateReverb;
if (FReverb <> nil) then FReverb.assign(FTmpReverb);
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.Overflow(Sender: TObject);
begin
LED1.Enabled := True;
Timer1.Enabled := True;
end;
{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.Timer1Timer(Sender: TObject);
begin
LED1.Enabled := False;
Timer1.Enabled := False;
end;
{== TMMReverbDialog =====================================================}
constructor TMMReverbDialog.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FPreview := True;
FTitle := 'Reverb Editor';
FSource := nil;
ErrorCode := ComponentRegistered(InitCode, Self, ClassName);
if (ErrorCode <> 0) then RegisterFailed(InitCode, Self , ClassName);
end;
{-- TMMReverbDialog -----------------------------------------------------}
procedure TMMReverbDialog.SetSource(aSource: TMMReverb);
begin
if Longint(aSource) = Longint(Self) then exit;
if (aSource is TMMReverb) or (aSource = Nil) then
begin
if (FSource <> aSource) then
begin
FSource := aSource;
end;
end;
end;
{-- TMMReverbDialog -----------------------------------------------------}
procedure TMMReverbDialog.Notification(AComponent: TComponent; Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if (Operation = opRemove) and (AComponent = FSource) then
FSource := Nil;
end;
{-- TMMReverbDialog -----------------------------------------------------}
function TMMReverbDialog.Execute: Boolean;
begin
Result := False;
if assigned(FSource) then
begin
MMReverbDlg := TMMReverbDlg.Create(Application);
try
MMreverbDlg.btnPreview.Enabled := FPreview;
MMReverbDlg.Reverb := (FSource as TMMReverb);
MMReverbDlg.Title := FTitle;
Result := (MMReverbDlg.ShowModal = mrOK);
finally
MMReverbDlg.Free;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -