Delphi-PRAXiS
Seite 6 von 10   « Erste     456 78     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Tutorials und Kurse (https://www.delphipraxis.net/36-tutorials-und-kurse/)
-   -   Delphi Sound aufnehmen (https://www.delphipraxis.net/7803-sound-aufnehmen.html)

Tropby 6. Dez 2006 20:21

Re: Sound aufnehmen
 
Kann es sein das ich den @fWaveData[pwh.dwUser].header erstmal leeren muss ??

Sunlight7 6. Dez 2006 20:34

Re: Sound aufnehmen
 
Was willst Du da ausleeren?

Evtl. ein Un/PrepareHeader.
Ich mach das nicht, aber wie gesagt, ich mach es mit der CallBack.

Aber eher denke ich an einen Pointer Fehler.

Tropby 6. Dez 2006 21:04

Re: Sound aufnehmen
 
Hm gut dass ich mich damit nicht so gut auskenne XD

Edit : Wenn ich langsam durch gehe kommt kein Fehler aber wenn ich das Programm einfach laufen lasse dann kommt der Fehler :wall:

Edit 2 :

Der Fehler leigt bei :
Delphi-Quellcode:
   pwh:=PWaveHdr(dwParam1)^;

Sunlight7 6. Dez 2006 21:40

Re: Sound aufnehmen
 
Sag ich doch, Pointer Fehler, scheint bei der Nachrichtenmethode etwas anders zu funktionieren.

Definiere "Fehler" :wink:

Tropby 6. Dez 2006 21:49

Re: Sound aufnehmen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also wenn ich das Projekt starte kommt da so nen Fehler (siehe Bilder)

Und dann geht halt nichts mehr. Könnte aber auch an diesem Code liegen :

Delphi-Quellcode:
procedure waveInProc(hwi: HWAVEIN; uMsg: UINT; dwInstance, dwParam1, dwParam2 : DWord); stdcall;
var
  classinstance: TWaveIn absolute dwInstance;
  pwh:TWaveHdr;
begin
 if umsg = WIM_DATA then
 begin
   pwh:=PWaveHdr(dwParam1)^;
   with classinstance do
   begin
     fWaveData[pwh.dwUser].Stream.Write(fWaveData[pwh.dwUser].Data, fWaveData[pwh.dwUser].header.dwBytesRecorded);

     if fWaveData[pwh.dwUser].Header.dwFlags and MHDR_DONE = MHDR_DONE then
     begin
       fWaveData[pwh.dwUser].Stream.Position := 0;
       if Assigned(fOnData) then
         fOnData(fWaveData[pwh.dwUser].Stream);
       fWaveData[pwh.dwUser].Stream.Clear;
     end;

//     fWaveData[pwh.dwUser].Header.lpData := fWaveData[pwh.dwUser].Data;
     fWaveData[pwh.dwUser].Header.dwBufferLength := cWaveBufferSize;
     fWaveData[pwh.dwUser].Header.dwFlags := 0;
     fWaveData[pwh.dwUser].Header.dwBytesRecorded := 0;


     waveInPrepareHeader(fHandle, @fWaveData[pwh.dwUser].Header, SizeOf(fWaveData[pwh.dwUser].data));
     waveInAddBuffer(fHandle, @fWaveData[pwh.dwUser].Header, SizeOf(fWaveData[pwh.dwUser].data));
   end;
 end;
end;

Sunlight7 6. Dez 2006 22:15

Re: Sound aufnehmen
 
1.8 MB Screenshot :shock:
Mit meinem Modem lad' ich mir das net runter :wink:

Delphi-Quellcode:
waveInPrepareHeader(fHandle, @fWaveData[pwh.dwUser].Header, SizeOf(fWaveData[pwh.dwUser].data));
Ist IMHO nach unnötig.

Hmm, hab jetzt den Code kompiliert, läuft ohne Fehler :gruebel:
Mal abgesehen von den Compilermeldungen, etwas sehr nachlässig programmiert...

Edit: Was machste eigentlich in der OnData?
Genaugenommen darfste da nicht auf die VCL Zugreifen und (fast) keine API Funktionen aufrufen.

Tropby 7. Dez 2006 11:29

Re: Sound aufnehmen
 
Oh hab vergessen die Screenshots zu komprimieren


Das ist mein OnData :


Delphi-Quellcode:
procedure TForm1.OnData(const aStream: TMemoryStream);
var header: TWaveHdr;
begin
  header.lpData := aStream.Memory;
  header.dwBufferLength := cWaveBufferSize;
  header.dwFlags := 0;
  waveOutPrepareHeader(fhandle, @header, cWaveBufferSize);
  waveOutWrite(fhandle, @header, cWaveBufferSize);
end;
Zitat:

Hmm, hab jetzt den Code kompiliert, läuft ohne Fehler Grübelnd...
Mal abgesehen von den Compilermeldungen, etwas sehr nachlässig programmiert...
Ähm ja ich bin ja noch nicht wirklich drin was das alles mit den pointern und so angeht ^^
und das ist eher bei mir im Moment ein ausprobieren als ein wissen.

Sunlight7 7. Dez 2006 14:57

Re: Sound aufnehmen
 
Zitat:

Zitat von Tropby
Oh hab vergessen die Screenshots zu komprimieren

Dann mach es jetzt noch :wink:

Zitat:

Zitat von Tropby
Ähm ja ich bin ja noch nicht wirklich drin was das alles mit den pointern und so angeht ^^
und das ist eher bei mir im Moment ein ausprobieren als ein wissen.

Der Original Source ist nachlässig programmiert, das war nicht gegen Dich, ich weiß, das Du n Neuling bist :wink:
Schau Dich mal bei Hier im Forum suchenResult um, Rückgabewerte sollten überprüft werden, sonst hat es gar keinen Sinn diese zu speichern.

Zitat:

Zitat von Tropby
Das ist mein OnData :
Delphi-Quellcode:
procedure TForm1.OnData(const aStream: TMemoryStream);
var header: TWaveHdr;
begin
  header.lpData := aStream.Memory;
  header.dwBufferLength := cWaveBufferSize;
  header.dwFlags := 0;
  waveOutPrepareHeader(fhandle, @header, cWaveBufferSize);
  waveOutWrite(fhandle, @header, cWaveBufferSize);
end;

Ich meine, genau da hakts, Editiere mal da alles raus, obs dann auch zu nem Fehler kommt, IMHO darfste genau das nicht machen.

zahor 7. Dez 2006 17:15

Re: Sound aufnehmen
 
Kann man auch den Soundkartenausgang "abhören", d.h. aufnehmen???

Sunlight7 7. Dez 2006 17:51

Re: Sound aufnehmen
 
Was meinst Du?
WaveOut?

Da kannst Du schon aufnehmen, Du brauchst nur die Quelle im Mixer einstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.
Seite 6 von 10   « Erste     456 78     Letzte »    

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