Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mikrofon benutzen (https://www.delphipraxis.net/3789-mikrofon-benutzen.html)

mandumoal 30. Mär 2003 13:42


Mikrofon benutzen
 
hi

ich möchte mittls mikrofon sound aufnehmen dann speichern , abspielen
ich habs schon mit mci probiert und folgenden code verwendet:
Code:

procedure TFormMain.RecordClick(Sender: TObject);
begin
         mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mysound',nil,0,handle);

   mciSendString('SET mysound TIME FORMAT MS ' +  // Zeitformat
                   'BITSPERSAMPLE 16 ' +           // 16 Bit
                   'CHANNELS 2 ' +                 // Stereo
                   'SAMPLESPERSEC 22050 ' +        // Frequenz (Hz)
                   'BYTESPERSEC 22050 ',          // 22050 Bytes/s
                   nil, 0, handle);
   

          mciSendString('RECORD mysound', nil, 0, handle);
end;
allerdings geht es nicht
wie kann ich denn prüfen ob überhaupt ein device geöffnet wurde bzw aufgenommen wird?
gibt es noch andere möglichkeiten mittels mikro aufzunehmen?
(ist das überhaupt die richtige methode? :?: )

bitte helft mir!

mfg mandumoal

DeadEternity 26. Nov 2003 10:05

Re: Mikrofon benutzen
 
Versuchs mal damit, sollte eigentlich klappen
Code:
mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mySound',nil,0,Handle);
      mciSendString('SET mySound ' +
                   'TIME FORMAT MS ' +
                   'BITSPERSAMPLE 16 ' +
                   'CHANNELS 2 ' +
                   'SAMPLESPERSEC 44100 ' +
                   'BYTESPERSEC 176400 ' +
                   'ALIGNMENT 4',
                   nil,0,handle);
      mciSendString('RECORD mySound',nil,0,Handle);
      //Abspielen das Soundes
      sndPlaySound(MS.Memory, SND_MEMORY or SND_SYNC);
     
      MS.Free;

      //Beenden und speichern der Aufnahme
      mciSendString('STOP mySound',nil,0,Handle);
      mciSendString(PChar('SAVE mySound '+ aufnahme),nil,0,Handle);
      mciSendString('CLOSE mySound',nil,0,Handle);
MfG

Miggi 24. Mär 2011 15:34

AW: Mikrofon benutzen
 
Hallo Ihr, bin grad dabei eine Spezielle Spezial Wave Datei zu erzeugen, die aber mit jeder Sekunde eine neue Frequenz hat (also Hochläuft) um eine PulsweitenModulation zu simulieren..
und beim Suchen nach etwas bin ich hier hingestoßen und möchte mal für alle (Anfänger) was grundsätzliches schreiben:

mciSendString('SET mysound TIME FORMAT MS ' + // Zeitformat
'BITSPERSAMPLE 16 ' + // 16 Bit
'CHANNELS 2 ' + // Stereo
'SAMPLESPERSEC 22050 ' + // Frequenz (Hz)
----->>>> 'BYTESPERSEC 22050 ', // 22050 Bytes/s
nil, 0, handle);

An der mit ----->>>> markierten Stelle passieren die meisten Fehler, denn diese Zahl ist sehr einfach auszurechnen, aber auch korrekt anzugeben...

Die Bytes/Sekunde die durch den Stream laufen müssen, sind

Abtastfrequenz x (Mono (1) oder Stereo (2)) x Bytes/Sample (ist bei 16 Bit = 2)

Also ergibt sich bei o.a. Beispiel 22050 * 2 * 2 = 88200 BytesperSecond

Hoffe Neueinsteigern einen kleinen Verständigungs-Tipp gegeben zu haben

LG Michael

nuclearping 24. Mär 2011 17:39

AW: Mikrofon benutzen
 
Nur dass der Beitrag von 2003 ist und man heute lieber mit BASS arbeiten sollte. Aber du hast recht, wer sich mit dem Rohformat von WAVE Daten auseinandersetzt und einen Header erstellen muss, könnte darüber stolpern. :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:54 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