Daten von Microphon einlesen
lima-city → Forum → Programmiersprachen → Basic
art
aufnahme
auslese
beispiel
code
dank
datei
dumm schauen
file
forum
gesuchte funktion
http
mikrofon
mode
programm
record
speichern
stereo
string
tip
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ich kenn mich da jetzt nicht so aus, aber normal läuft die Musik ja dann über die Soundkarte? Und dieses Signal kann mit dem Programm "N°23" aufgenommen werden.
-
Weißt du, wo ich dafür ne Art Beispiel oder Erklärung finde??
Zu finden in der MCI API in der Winmm.dll (benötigt wird mindestens Direct X 7)
-
Wie kann ich nun auf diese DLL zugreifen, das hab ich noch nie begriffen...
-
kam mein Vorschlag an?, ich bin mir eigentlich ziemlich sicher das das funktioniert
-
Du willst einfach ein Mikrofon in deine Soundkarte stecken und dann aufnehmen, was du da reinsprichst, richtig?
Probiers mal mit Audacity
--
Ohh. Hab erst jetzt gesehen, dass wir in VisualBasic sind. Ich dachte, du suchst einfach nur ein Programm.
Edit (djfun): Doppelpost zusammengefasst
Beitrag geändert: 5.6.2008 21:32:28 von djfun -
Du alter Double-Poster...
ALSO NEIN...
Wie gesagt, ich will ein eigenes Programm dafür erstellen... -
Google hilft:
http://www.powerdesktop-online.de/de/api.html
Weiter unten steht dann auch was über die winmm.dll -
Das ist schon mal sehr nützlich, aber woher weiß ich, wie die gesuchte Funktion heißt?
-
da sieht mans mal wieder erst mir bei dem thema einen dummen kommentar geben und dann selber fragen
-> so das war mein dummer kommentar zu deinem thread
muhahahahahahahahahahahahahaha
@reimann
Solche 'schlauen' Beiträge kannst du dir echt sparen, ich kenn mich deshalb nicht mit DLLs aus, weil ich nie den 'vorgefertigten Inhalt' anderer Programmierer verwende, sondern mir alles selbst programmiere. Tjaja Daniel R....da kannst echt nur dumm schauen... -
dann spar du dir solche schlauen beiträge wie "in java wird das bestimt garnicht gehn"
-> hättest du dir meine beitrag genau angesehn hättest dus sehn müssen
achso ich vergas "nieder mit dll die zukunft gehört jar"
Beitrag geändert: 4.12.2007 12:51:21 von reimann -
Das ist schon mal sehr nützlich, aber woher weiß ich, wie die gesuchte Funktion heißt?
Google und MSDN hilft.
Beispiel für eine Lösung über DirectX:
http://www.tek-tips.com/faqs.cfm?fid=4782
Beispiel für eine Lösung über die winmm.dll API:
(Code gilt nur für VB 2005, in älteren Versionen sind Anpassungen erforderlich)
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1299204&SiteID=1
-
Danke dir cbhp,
@reimann: Daniel du wirst sehen, dass Java keinesfalles mehr Bedeutung gewinnen wird als VISUAL BASIC oder gar C++ -
Vielleicht kann dir das ja weiter helfen. Ist allerdings VB.net
Private Declare Function mciSendString Lib \"winmm.dll\" Alias \"mciSendStringA\" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer
Public Enum BitsPerSec
Bits16 = 16
Bits8 = 8
End Enum
Public Enum SampelsPerSec
Sampels8000 = 8000
Sampels11025 = 11025
Sampels12000 = 12000
Sampels16000 = 16000
Sampels22050 = 22050
Sampels24000 = 24000
Sampels32000 = 32000
Sampels44100 = 44100
Sampels48000 = 48000
End Enum
Public Enum Channels
Mono = 1
Stereo = 2
End Enum
Dim RS As String
Dim CB As Integer
Public Sub StartRecord(ByVal BPS As BitsPerSec, _
ByVal SPS As SampelsPerSec, ByVal Mode As Channels)
Dim retStr As String
Dim cBack As Long
Dim BytesPerSec As Long
retStr = Space$(128)
BytesPerSec = (Mode * BPS * SPS) / 8
mciSendString(\"open new type waveaudio alias capture\", retStr, 128, cBack)
mciSendString(\"set capture time format milliseconds bitspersample \" & CStr(BPS) & _
\" samplespersec \" & CStr(SPS) & \" channels \" & CStr(Mode) & \" bytespersec \" & _
CStr(BytesPerSec) & \" alignment 4\", retStr, 128, cBack)
mciSendString(\"record capture\", retStr, 128, cBack)
End Sub
Public Sub SaveRecord(ByVal path As String)
Dim retStr As String
Dim TempName As String
Dim cBack As Long
Dim fs, F
If IO.File.Exists(path) Then IO.File.Delete(path)
\' Speichern im Root als Temp
TempName = path
retStr = Space$(128)
mciSendString(\"stop capture\", retStr, 128, cBack)
mciSendString(\"save capture \" & TempName, retStr, 128, cBack)
mciSendString(\"close capture\", retStr, 128, cBack)
End Sub
Die Aufnahme starten mit
Private Sub Rec()
RS = Space(128)
StartRecord(BitsPerSec.Bits16, SampelsPerSec.Sampels32000, Channels.Stereo)
End Sub
und beenden:
SaveRecord(\"c:\\Dateiname.wav\")
Beitrag geändert: 2.3.2008 6:47:36 von jennessen -
Und gäbe es eine Möglichkeit, den aufgenommenen Sound direkt in ein Byte Array (und nicht erst als Datei) zu speichern?
(mit VB.NET)
Beitrag geändert: 1.6.2008 13:20:11 von lccserver -
Nach der in der MSDN mit der Winmm.dll beschriebenen Methode ( http://forums.msdn.microsoft.com/en-US/vbgeneral/thread/41e5a1fd-b33a-4e62-b73a-aa364c5dae5c/ ) gibts keine Möglichkeit, den Zwischenschritt, dass die Datei gespeichert wird, zu überspringen.
Wenn du dir das Beispiel mit der DirectX-Methode ansiehst ( http://www.tek-tips.com/faqs.cfm?fid=4782 ), wird hier der Sound in ein Bytearray zuerst eingelesen, dann in einen Stream gepackt und abgespeichert. Der Code ist auf .Net-Basis geschrieben, das heißt, du kannst ihn einfach an die VB.Net-Schreibweise anpassen. -
Das klingt ja erst mal gut, aber das sieht mir nach C++ aus,
und das kann ich leider absolut nicht. Hättest du einen kleinen
Denkanstoß, oder besser noch ne Hilfe für mich? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage