Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DTMF auswertung über die Soundkarte (https://www.delphipraxis.net/35738-dtmf-auswertung-ueber-die-soundkarte.html)

dac424 11. Dez 2004 09:44


DTMF auswertung über die Soundkarte
 
Hallo liebe Leute
ich suche nach einer Möglichkeit DTMF töne über die Soundkarte auszuwerten
sprich wen tönne über die Line in empfangen werden soll mein Programm etwas machen
nun das Problem überall im Inet mus man ActivX modul haben und die Sind alle kostenpflichtig
gibt es noch eine Möglichkeit die Kostenlos ist
danke für hilfe.

Bernhard Geyer 11. Dez 2004 17:08

Re: DTMF auswertung über die Soundkarte
 
Du benötigst eine FFT (Fast Fourier Transformation)-Komponente für Delphi.
Jeder DTMF-Ton wird aus der überlagerung von 2 Frequenzen erzeugt. Wenn Du nun per Komponenten die beiden Frequenzen bestimmst kannst Du die gedrückte Taste bestimmen.

dac424 13. Jan 2005 19:17

Re: DTMF auswertung über die Soundkarte
 
So ich habe jetzt was gefunden aber das passiert über ein Wave File ist es möglich ein Stream zu machen und sagen wir mal immer so 1 Minute auf zu nehmen und auszuwerten danach wieder von forne
Code:
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.

hboy 13. Jan 2005 19:36

Re: DTMF auswertung über die Soundkarte
 
wieso fft wenns auch mit fir geht !

dac424 13. Jan 2005 20:14

Re: DTMF auswertung über die Soundkarte
 
wie hast du ein Beispiel was Kosten Frei Ist dan herr damit

benötigten Töne frei eingebbar anhand von Kombinationen

#01*
und .......

dac424 28. Jan 2005 16:55

Re: DTMF auswertung über die Soundkarte
 
ist ja prima wie man geholfen wird nur kann den Irgen einer mal ein BeiSpiel Script schicken
was man EV abgeänder verwenden kann wir haben ja eines nur es geht halt nur mit Wav Files

was wir brauchen ist ein Streaming des Line IN oder BZW des MIK. in. als eingabe.

Leute helft doch es muss doch ein weg geben ohne Teure module zu kaufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz