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

📄 u_common_dsplfilterconfig.pas

📁 Voice Commnucation Components for Delphi
💻 PAS
字号:

// DSP Lib Automation GUI
// Copyright (c) 2006-2007 Lake of Soft, Ltd

{$i unaDef.inc }

unit
  u_common_dsplFilterConfig;

interface

uses
  Windows, unaTypes,
  Forms, StdCtrls, Controls, Classes;

type
  Tc_form_dsplFilterConfig = class(TForm)
    c_cb_filter: TComboBox;
    c_label_filter: TLabel;
    c_button_cancel: TButton;
    c_button_ok: TButton;
    c_cb_filterType: TComboBox;
    c_label_filterType: TLabel;
    c_edit_1: TEdit;
    c_edit_2: TEdit;
    c_edit_3: TEdit;
    c_label_1: TLabel;
    c_label_2: TLabel;
    c_label_3: TLabel;
    c_label_4: TLabel;
    c_label_5: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    c_label_6: TLabel;
    Edit3: TEdit;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure c_cb_filterChange(Sender: TObject);
  private
    { Private declarations }
    f_params: string;
  public
    { Public declarations }
    function selectFilter(var objId, filterType: int; var params: string): bool;
  end;

var
  c_form_dsplFilterConfig: Tc_form_dsplFilterConfig;


implementation


{$R *.dfm}

uses
  unaDspLibH, unaUtils;

// --  --
procedure Tc_form_dsplFilterConfig.FormCreate(Sender: TObject);
var
  i: int;
begin
  for i := DSPL_EQ2B to DSPL_MBSP do
    c_cb_filter.items.add(c_DSPL_OBJNAMES_FULL[i] + ' - ' + c_DSPL_OBJNAMES_SHORT[i]);
  //
  c_cb_filter.itemIndex := 0;
end;


procedure Tc_form_dsplFilterConfig.c_cb_filterChange(Sender: TObject);
begin
  case (c_cb_filter.itemIndex) of

    0: begin	// EQ2B
      //
      c_cb_filterType.items.clear();
      //
      c_cb_filterType.items.add('Off');
      c_cb_filterType.items.add('PEAK');
      c_cb_filterType.items.add('Low-Pass');
      c_cb_filterType.items.add('High Pass');
      c_cb_filterType.items.add('Low Shelf');
      c_cb_filterType.items.add('High Shelf');
      //
      c_cb_filterType.itemIndex := 1;
      c_cb_filterType.visible := true;
      //
      c_label_1.caption := 'F&requency (0 .. 1)';
      c_label_2.caption := '&Q factor (0.1 .. 10)';
      c_label_3.caption := '&Gain/Boost (dB)';
      //
      c_edit_1.visible := true;
      c_edit_2.visible := true;
      c_edit_3.visible := true;
      //
      c_edit_1.text := formatTemplate('%EQ2B.FRQ%', f_params, false);
      c_edit_2.text := formatTemplate('%EQ2B.Q%', f_params, false);
      c_edit_3.text := formatTemplate('%EQ2B.GAIN%', f_params, false);
    end;

    1: begin	// LD
      //
      c_cb_filterType.items.clear();
      //
      c_cb_filterType.items.add('PEAK');
      c_cb_filterType.items.add('RMS');
      //
      c_cb_filterType.itemIndex := 0;
      c_cb_filterType.visible := true;
      //
      c_label_1.caption := '&Attack (samples)';
      c_label_2.caption := '&Release (samples)';
      c_label_3.caption := '';
      //
      c_edit_1.visible := true;
      c_edit_2.visible := true;
      c_edit_3.visible := false;
      //
      c_edit_1.text := formatTemplate('%LD.ATT%', f_params, false);
      c_edit_2.text := formatTemplate('%LD.REL%', f_params, false);
    end;

    2: begin	// DYNPROC
      //
      c_cb_filterType.items.clear();
      //
      c_cb_filterType.items.add('LD - PEAK');
      c_cb_filterType.items.add('LD - RMS');
      //
      c_cb_filterType.itemIndex := 0;
      c_cb_filterType.visible := true;
      //
      c_label_1.caption := 'LD - &Attack (samples)';
      c_label_2.caption := 'LD - &Release (samples)';
      c_label_3.caption := '';
      //
      c_edit_1.visible := true;
      c_edit_2.visible := true;
      c_edit_3.visible := false;
      //
      c_edit_1.text := formatTemplate('%LD.ATT%', f_params, false);
      c_edit_2.text := formatTemplate('%LD.REL%', f_params, false);
    end;

    3: begin	// SPEECHPROC
      c_cb_filterType.items.clear();
      //
      c_cb_filterType.items.add('LD - PEAK');
      c_cb_filterType.items.add('LD - RMS');
      //
      c_cb_filterType.itemIndex := 0;
      c_cb_filterType.visible := true;
      //
      c_label_1.caption := 'LD - &Attack (samples)';
      c_label_2.caption := 'LD - &Release (samples)';
      c_label_3.caption := '&Threshold (dB)';
      //
      c_edit_1.visible := true;
      c_edit_2.visible := true;
      c_edit_3.visible := true;
      //
      c_edit_1.text := formatTemplate('%LD.ATT%', f_params, false);
      c_edit_2.text := formatTemplate('%LD.REL%', f_params, false);
      c_edit_3.text := formatTemplate('%SP.TRH%', f_params, false);
    end;

    4: begin	// ND
      c_cb_filterType.items.clear();
      c_cb_filterType.visible := false;
      //
      c_label_1.caption := '&Threshold';
      c_label_2.caption := '';
      c_label_3.caption := '';
      //
      c_edit_1.visible := true;
      c_edit_2.visible := false;
      c_edit_3.visible := false;
      //
      c_edit_1.text := formatTemplate('%ND.TRH%', f_params, false);
    end;

    5: begin	// EQMB
      c_cb_filterType.items.clear();
      c_cb_filterType.visible := false;
      //
      c_label_1.caption := 'Number of bands';
      c_label_2.caption := '';
      c_label_3.caption := '';
      //
      c_edit_1.visible := true;
      c_edit_2.visible := false;
      c_edit_3.visible := false;
      //
      c_edit_1.text := formatTemplate('%EQMB.NBA%', f_params, false);
    end;

    6: begin	// MBSP
      c_cb_filterType.items.clear();
      c_cb_filterType.visible := false;
      //
      c_label_1.caption := 'Number of bands';
      c_label_2.caption := '';
      c_label_3.caption := '';
      //
      c_edit_1.visible := true;
      c_edit_2.visible := false;
      c_edit_3.visible := false;
      //
      c_edit_1.text := formatTemplate('%MBSP.NBA%', f_params, false);
    end;

    else begin
      // uknown
      c_cb_filterType.items.clear();
      c_cb_filterType.visible := false;
      //
      c_label_1.caption := '';
      c_label_2.caption := '';
      c_label_3.caption := '';
      //
      c_edit_1.visible := false;
      c_edit_2.visible := false;
      c_edit_3.visible := false;
    end;

  end;
  //
  c_label_filterType.visible := c_cb_filterType.visible;
end;

// --  --
function Tc_form_dsplFilterConfig.selectFilter(var objId, filterType: int; var params: string): bool;
begin
  f_params := params;
  c_cb_filter.itemIndex := objId - 1;
  c_cb_filterChange(self);
  //
  c_cb_filterType.itemIndex := filterType;
  //
  result := mrOK = showModal();
  if (result) then begin
    //
    objId := c_cb_filter.itemIndex + 1;
    filterType := c_cb_filterType.itemIndex;
    //
    params := 'P1'#9 + c_edit_1.text + #10 +
	      'P2'#9 + c_edit_2.text + #10 +
	      'P3'#9 + c_edit_3.text + #10;
    //
  end;
end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -