Autor Beitrag
dac424
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: So 26.12.04 20:33 
Hallo liebe Leute wer kann helfen ich suche ne möglichkeit anstelle Wave file die DTMF Tönne via Mic oder Line in auszuwerten

anbei ein DTMF encoder aber leider für wave files
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
unit Main;

{
  The simple demo of DTFM decode
  Author:  Eugen Tarasov

  There is main unit.
  This demo uses dspDTMF unit.

  Last modified - May, 2003

  Please send all suggestions and comments to author.

  e-mail: dsplab@teworks.com
  http://www.teworks.com
}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Wave, dspDTMF;

type
  TfmMain = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Label1: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);

  private
    DTMF: TdspDTMF; // DTMF decoder (see the dspDTMF unit)
    procedure OnTone(Sender: TObject; Tone: Char);
  end;

var
  fmMain: TfmMain;

implementation

{$R *.dfm}

procedure TfmMain.FormCreate(Sender: TObject);
begin
  Caption:= Application.Title;
  DTMF:= TdspDTMF.Create;
  DTMF.OnTone:= OnTone;
end;

procedure TfmMain.FormDestroy(Sender: TObject);
begin
  DTMF.Free;
end;


procedure TfmMain.Button1Click(Sender: TObject);
var
  B: Byte;
  S: SmallInt;
  Wave: TWaveFileStream;
begin
  if OpenDialog1.Execute then
  begin
    Edit1.Text:= '';
    Wave:= TWaveFileStream.Create(OpenDialog1.FileName, fmOpenRead);
    try
      Wave.Open(false);
      if Wave.Format.nChannels <> 1 then
      begin
        MessageDlg('This demo supports Mono files only', mtWarning, [mbCancel], 0);
        Edit1.Text:= 'Format not supported';
        Exit;
      end;

      DTMF.SampleRate:= Wave.Format.nSamplesPerSec;
      DTMF.Initialize;

      Caption:= 'Searching for tones...';
      Application.ProcessMessages;
      try
        if Wave.Format.wBitsPerSample = 8 then
        begin
          DTMF.Threshold:= 1; // Set amplitude threshold
          while Wave.Read(B, 1) = 1 do DTMF.Put(B)
        end else
        begin
          DTMF.Threshold:= 100; // Set amplitude threshold
          while Wave.Read(S, 2) = 2 do DTMF.Put(S);
        end;

        DTMF.Finilize;
      finally
        Caption:= Application.Title;
      end;
    finally
      Wave.Free;
      if Edit1.Text = '' then Edit1.Text:= 'not found...';
    end;
  end;
end;


procedure TfmMain.OnTone(Sender: TObject; Tone: Char);
begin
  Edit1.Text:= Edit1.Text + Tone;
end;

end.


wen das jemand um modeln kann wäre das echt klasse