Also Dinge aufnehmen geht mit Delphi und der
Unit mmSystem richtig einfach.
Der Schlüssel ist die Prozedur
"mciSendString". Über diese Prozedur kann man die Komplette Aufnahme des Wave-Files machen.
1.) Wir müssen ein Audiogerät öffnen. Ich nenne es einfach mal "mySound".
mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mySound',nil,0,Handle);
2.) Nun müssen wir die Optionen für die Audioaufnahme einstellen. Da für gibt es einige Einstellungen:
- BitsPerSample (Wie genau wird ein analoger Wert abgetastet; meist 8 oder 16)
- Channels (Mono(1) oder Stereo (2))
- SamplesPerSec (Abtastungen pro Sekunde; 800,11025,22050,44100)
Damit wäre eigentlich alles angegeben, was man braucht. Damit es funktioniert, müssen noch zwei weitere Dinge angegeben werden. Lässt man diese weg, gibt es Probleme.
- BytesPerSec (= (BitsPerSample div 8)*Channels*SamplesPerSec )
- Alignment (= Channels*(BitsPerSample div 8) )
Die Prozedur zum Einstellen der Einstellungen sieht dann folgendermaßen aus:
Delphi-Quellcode:
mciSendString('
SET mySound ' +
'
TIME FORMAT MS ' +
'
BITSPERSAMPLE 16 ' +
'
CHANNELS 2 ' +
'
SAMPLESPERSEC 44100 ' +
'
BYTESPERSEC 176400 ' +
'
ALIGNMENT 4',
nil,0,
handle);
3.) Das Starten der Aufnahme:
Das folgende erklärt sich eigentlich von selbst:
mciSendString('RECORD mySound',nil,0,Handle);
4.) Genauso einfach ist das Stoppen der Aufnahme:
mciSendString('STOP mySound',nil,0,Handle);
5.) Nach erfolgter Aufnahme wollen wir die Datei natürlich nicht im Nirvana des
OS verschwinden lassen... wir müssen sie speichern.
Das geht folgendermaßen:
mciSendString('SAVE mySound "c:\datei.wav"',nil,0,Handle);
6.) Schließlich muss man noch das Audiogerät "mySound", welches man am Anfang geöffnet hatte, schließen.
mciSendString('CLOSE mySound',nil,0,Handle);
Und wir sind fertig mit der Aufnahme.
7.) Weitere Aufgaben, die man über "mciSendString" machen kann sind z.B. noch: PLAY, WAIT und LOAD