⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmrvbdlg.pas

📁 一套及时通讯的原码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      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 + -