Sound aufnehmen
Auf den Vorschlag von Matze habe ich aus zwei meiner Beiträge ein Tutorial zusammengebastelt. Vielleicht kann es irgendjemand irgendwann irgendwozu brauchen.
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
8.) Die Aufnahmen werden nur leider recht groß, deshalb macht sich eine Konvertierung zu
Mp3 recht gut.
Dazu bietet sich der
lame - Encoder an.
Den bekommst du hier:
http://lame.sourceforge.net/
Dort bekommst du die lame_enc.dll und die lame.exe .
Kannst du eigentlich nehmen, was du willst, konvertieren beide brav waves nach Mp3.
Die lame.exe musst du z.B. einfach mit entsprechenden Parametern aufrufen.
Zur Lizenz vom Lame_Ecoder:
Zitat:
Can I use LAME in my
commercial program?
Yes, you can, under the restrictions of the
LGPL. The easiest
way to do this is to:
1. Link to LAME as separate library (libmp3lame.a on unix or
lame_enc.dll on windows)
2. Fully acknowledge that you are using LAME, and give a link
to our web site,
www.mp3dev.org
3. If you make modifications to LAME, you *must* release these
these modifications back to the LAME project, under the
LGPL.
overmoon