Mikrofon!!!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

sven123

Betreff: Mikrofon!!!

BeitragDi, Feb 03, 2004 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Also mit der freundlichen Unterstützung der Blitz Community ist es mir jetzt gelungen einen kleinen chat zu Proggen.Jetzt hätte ich gerne gwusst ob es in BlitBasic die möglichkeit gibt ein Mikrofon oder Headset zu bedienen(Also im Programm) so dass ich in meinem chat so eine Sprachkomunikation à la Teamspeake!



thx euer Sven123
Amd Athlon 2200+,Saphire Atlantis Radeon9800pro,1024 MB DDR RAm,40 Gb Festblatte.
'in shâ'a llâh=so Gott will
Fertiges Projekt:Invasion der Heuschrecken

Vertex

BeitragMi, Feb 04, 2004 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ersteinmal der Code um überhaupt das Micro anzusteuern:
Code: [AUSKLAPPEN]
Graphics 512,256,32,2
SetBuffer FrontBuffer()

Const WAVE_INVALIDFORMAT = $000 ;invalid forma
Const WAVE_FORMAT_1M08   = $001 ;11.025 kHz,Mono,   8-bit
Const WAVE_FORMAT_1S08   = $002 ;11.025 kHz,Stereo, 8-bit
Const WAVE_FORMAT_1M16   = $004 ;11.025 kHz,Mono,  16-bit
Const WAVE_FORMAT_1S16   = $008 ;11.025 kHz,Stereo,16-bit
Const WAVE_FORMAT_2M08   = $010 ;22.05  kHz,Mono,   8-bit
Const WAVE_FORMAT_2S08   = $020 ;22.05  kHz,Stereo, 8-bit
Const WAVE_FORMAT_2M16   = $040 ;22.05  kHz,Mono,  16-bit
Const WAVE_FORMAT_2S16   = $080 ;22.05  kHz,Stereo,16-bit
Const WAVE_FORMAT_4M08   = $100 ;44.1   kHz,Mono,   8-bit
Const WAVE_FORMAT_4S08   = $200 ;44.1   kHz,Stereo, 8-bit
Const WAVE_FORMAT_4M16   = $400 ;44.1   kHz,Mono,  16-bit
Const WAVE_FORMAT_4S16   = $800 ;44.1   kHz,Stereo,16-bit
Const WAVE_FORMAT_PCM    = $001
Const WHDR_DONE          = $001
Const WHDR_PREPARED      = $002
Const WHDR_BEGINLOOP     = $004
Const WHDR_ENDLOOP       = $008
Const WHDR_INQUEUE       = $010

WaveFmt = CreateBank(18)
PokeShort WaveFmt,00,WAVE_FORMAT_PCM ; FormatTag
PokeShort WaveFmt,02,1               ; Channels
PokeInt   WaveFmt,04,11025           ; SamplesPerSec
PokeInt   WaveFmt,08,11025           ; AvgBytesPerSec | BlockAlign * SamplesPerSec
PokeShort WaveFmt,12,1               ; BlockAlign | (Channels * BitsPerSample) / 8
PokeShort WaveFmt,14,8               ; BitsPerSample
PokeShort WaveFmt,16,0               ; ExtraDataSize

WaveCaps = CreateBank(48)
Dim Device(waveInGetNumDevs())
For I = 0 To waveInGetNumDevs() - 1
   waveInGetDevCaps(I,WaveCaps,48)
   If PeekInt(WaveCaps,40) And WAVE_FORMAT_1M08 Then
      For C = 8 To 39
         Char = PeekByte(WaveCaps,C)
         If Char = 0 Then Exit
         ProductName$ = ProductName$ + Chr$(Char)
      Next
      Print "(" + Str$(Dev) + ") " + ProductName$
      ProductName$ = ""
      Dev = Dev + 1
      Device(Dev) = I
   EndIf
Next

If Dev = 0 Then
   Print "Can't find a sounddevice!"
   WaitKey : End
EndIf

Repeat
   DevUsed = Input("Select a device(0-" + Str$(Dev - 1) + "): ")
Until DevUsed => 0 And DevUsed <= Dev - 1
DevUsed = Device(DevUsed)

DevHandle = CreateBank(4)
waveInOpen(DevHandle,DevUsed,WaveFmt,0,0,0)
If PeekInt(DevHandle,0) = 0 Then
   Print "Can't open wavedevice!"
   WaitKey : End
EndIf
waveInStart(PeekInt(DevHandle,0))

WavData = CreateBank(512)

WaveHead = CreateBank(32)
PokeInt WaveHead,00,AddressOf(WavData) ; lpData
PokeInt WaveHead,04,514               ; dwBufferLength
waveInPrepareHeader(PeekInt(DevHandle,0),WaveHead,32)

SetBuffer BackBuffer()

While Not KeyDown(1)
   Cls

   waveInAddBuffer(PeekInt(DevHandle,0),WaveHead,32)
   For I = 0 To 511
      Line I,PeekByte(WavData,I),I,0
   Next
   
   Flip
Wend

waveInUnprepareHeader(PeekInt(DevHandle,0),WaveHead,32)
waveInReset(PeekInt(DevHandle,0))
waveInClose(PeekInt(DevHandle,0))

Function AddressOf(Bank)
   Local Address = CreateBank(4),RetValue
   RtlMoveMemory(Address,Bank+4,4)
   RetValue = PeekInt(Address,0)
   FreeBank Address
   Return RetValue
End Function

Zitat:
.lib "winmm.dll"
waveInGetDevCaps%(uDeviceID,WaveInCapsPointer*,WaveInCapsStructSize) : "waveInGetDevCapsA"
waveInOpen%(WaveDeviceInputHandle*,WhichDevice,WaveFormatExPointer*,CallBack,CallBackInstance,Flags) : "waveInOpen"
waveInGetNumDevs%() : "waveInGetNumDevs"
waveInClose%(WaveDeviceInputHandle) : "waveInClose"
waveInStart%(WaveDeviceInputHandle) : "waveInStart"
waveInReset%(WaveDeviceInputHandle) : "waveInReset"
waveInStop%(WaveDeviceInputHandle) : "waveInStop"
waveInAddBuffer%(InputDeviceHandle,WaveHdrPointer*,WaveHdrStructSize) : "waveInAddBuffer"
waveInPrepareHeader%(InputDeviceHandle,WaveHdrPointer*,WaveHdrStructSize) : "waveInPrepareHeader"
waveInUnprepareHeader%(InputDeviceHandle,WaveHdrPointer*,WaveHdrStructSize) : "waveInUnprepareHeader"

.lib "kernel32.dll"
RtlMoveMemory%(Destination*,Source,Length) : "RtlMoveMemory"

Die Daten kannst Du dann via Kompressions-DLL aus dem Codearchiv
gepackt verschicken, und dann per BASS-DLL abspielen auf der anderen
Seite.
mfg olli
vertex.dreamfall.at | GitHub
 

fliege

BeitragSa, Jun 12, 2004 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Welche Daten? Schreibe mal bitte ein kleines tool, was sound bei einer Eingabe von "Aufnahme" anfängt zum aufnehmen und bei "Stopp" stoppt und das aufgenommene Abspielt... Bitte!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group