Line-In Eingang der Soundkarte

Übersicht Ressourcen Sound & Music

Neue Antwort erstellen

JPD

Betreff: Line-In Eingang der Soundkarte

BeitragSo, Mai 02, 2004 3:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo ... gibt es ne Möglichkeit, das Audiosignal am Line-In der Soundkarte irgendwie in Brauchbare Informationen umzuwandeln? Also, zum Beispiel eine db-Anzeige ... Komm einfach nicht dahinter wie das gehen soll ... bin schon 3 Monate am basteln 8)

Währe dankbar für jede Hilfe ...

Buddha

BeitragSo, Mai 02, 2004 9:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Also so weit ich weiß dürfte das nicht gehen da das ja noch digital ist und db kann man dann nur direkt an den boxen messen.
 

Affje

BeitragSo, Mai 02, 2004 9:42
Antworten mit Zitat
Benutzer-Profile anzeigen
das signal am ausgang is immer gleich stark, vermute ich mal, nur an den boxen wird dieses eben geschwächt/gestärkt.

ich glaube auch nicht, dass sowas geht.
www.drachengarde.tk
Guckst da Hier

JPD

Betreff: Line-In

BeitragSo, Mai 02, 2004 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Na ja .... so viel zum Thema ... Das Signal welches am Line-In Eingang anliegt, müsste man doch irgendwie auf dem Bildschirm z.B. als Oszillosgramm sichtbar machen können ...

Ich weiß nur nicht, wie man das ins Blitz reinbekommt ....
 

Affje

BeitragSo, Mai 02, 2004 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
das geht vielleicht mit einer dll, aber selbst wenn du es schaffen würdest denke ich immernoch, dass das signal immer gleich wäre, die lautstärke oder so ändert sich ja net, das machst du ja eben an den lautsprechern.

hab ich das etwa falsch verstanden? Embarassed
www.drachengarde.tk
Guckst da Hier

JPD

Betreff: Line-In

BeitragSo, Mai 02, 2004 12:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ihr versteht mich glaub falsch ... DB-Anzeige ist glaub nicht so das richtige Wort. Ich meine eher folgendes:

Ein Signal liegt am Line-In-Eingang der Soundkarte

Ich kann das Signal als Oszillosgramm am Bildschirm darstellen ...
Ich kann dann mein Signal als Pegelanzeige auf dem Monitor darstellen ...

Smile ....

nicht erst als Datei aufnhemen, sondern das ganze Live anzeigen ... ich hoffe ihr versteht nun was ich mein Wink

mfg JPD
 

Stephan

Betreff: Buffer

BeitragDi, Mai 25, 2004 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich weiß genau was du meinst. Du willst ein Programm machen was den
Line-In Eingang an deiner Soundkarte "audiovisualisiert".
Dazu musst du glaube ich die Daten sofort in eine temporären Datei-Buffer schreiben. Der Füllstand des Buffers müsste einen Wert zwischen 0 und 255 zurückgeben. 255 sind ca. 3 Volt am Line-In-Eingang. Ich hoffe,
meine Antwort stimmt soweit, denn ich es selbst noch nicht probiert.
Ich habe mich aber informiert.

Bitte, Stephan (14) und tschüss.

Jan_

Ehemaliger Admin

BeitragMi, Mai 26, 2004 7:42
Antworten mit Zitat
Benutzer-Profile anzeigen
DAs ergebniss brauche ich auch ganz dringend!

https://www.blitzforum.de/view...t=bass+dll

Ich hatte es so versucht, über die Win API den Mic eingang und dann über die Bass.dll wieder ausgeben, kam aber nicht der gewünschte effekt!

kann bitte jemand helfen?

für alle, die kein Mic daheim haben, man kann den eingang auf line- Out legen!
between angels and insects

Markus2

BeitragDo, Jul 01, 2004 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Decls findest du hier https://www.blitzforum.de/viewtopic.php?t=3915
Was mit WaveOut zu tun hat kannste ja entfernen ...

Code: [AUSKLAPPEN]


;Braucht User Declares WinMM.decls

Graphics3D 800,600,16,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

;---------------------------------------------------

WavInData = CreateBank(360)

;---------------------------------------------------

WaveHeadIn = CreateBank(56)
PokeInt WaveHeadIn,00,AddressOf(WavInData) ; lpData
PokeInt WaveHeadIn,04,360+2 ; 514 ; dwBufferLength
PokeInt WaveHeadIn,08,0  ;dwBytesRecorded; Daten im Puffer nach der Aufnahme
PokeInt WaveHeadIn,12,0  ;DWORD dwUser; Benutzerdefinierte Daten
PokeInt WaveHeadIn,16,0  ;DWORD dwFlags; dwFlags: DWord; Informationen über den Puffer:
               ;WHDR_BEGINLOOP 4 (L) Erster Puffer in der Schleife, nur für Ausgaben.
               ;WHDR_DONE 1 (L) Puffer ist abgearbeitet, Rückkehr zur Applikation.
               ;WHDR_ENDLOOP 8 (L) Letzter Puffer in der Schleife, nur für Ausgaben.
               ;WHDR_INQUEUE 10h (L) Puffer liegt zum Abspielen in der Warteschlange.
                                             ;WHDR_PREPARED 2 (L) Puffer wurde durch waveInPrepareHeader,waveOutPrepareHeader vorbereitet.
PokeInt WaveHeadIn,20,2 ;DWORD dwLoops; dwLoops: DWord; Anzahl der Wiederholungen, nur bei Ausgaben.
PokeInt WaveHeadIn,24,0 ;struct wavehdr_tag *lpNext; lpNext: PWaveHdr; Reserviert, in Pascal ein PWaveHdr.
PokeInt WaveHeadIn,28,0 ;DWORD reserved; reserved: DWord; Reserviert.

;---------------------------------------------------

WaveHeadOut = CreateBank(56)
PokeInt WaveHeadOut,00,AddressOf(WavInData) ; lpData
PokeInt WaveHeadOut,04,360+2 ;dwBufferLength
PokeInt WaveHeadOut,08,0  ;dwBytesRecorded; Daten im Puffer nach der Aufnahme
PokeInt WaveHeadOut,12,0  ;DWORD dwUser; Benutzerdefinierte Daten
PokeInt WaveHeadOut,16,0  ;DWORD dwFlags; dwFlags: DWord; Informationen über den Puffer:
               ;WHDR_BEGINLOOP 4 (L) Erster Puffer in der Schleife, nur für Ausgaben.
               ;WHDR_DONE 1 (L) Puffer ist abgearbeitet, Rückkehr zur Applikation.
               ;WHDR_ENDLOOP 8 (L) Letzter Puffer in der Schleife, nur für Ausgaben.
               ;WHDR_INQUEUE 10h (L) Puffer liegt zum Abspielen in der Warteschlange.
                                             ;WHDR_PREPARED 2 (L) Puffer wurde durch waveInPrepareHeader,waveOutPrepareHeader vorbereitet.
PokeInt WaveHeadOut,20,0 ;DWORD dwLoops; dwLoops: DWord; Anzahl der Wiederholungen, nur bei Ausgaben.
PokeInt WaveHeadOut,24,0 ;struct wavehdr_tag *lpNext; lpNext: PWaveHdr; Reserviert, in Pascal ein PWaveHdr.
PokeInt WaveHeadOut,28,0 ;DWORD reserved; reserved: DWord; Reserviert.

;--------------------------------------------------- IN Device

Cls
WaveCaps = CreateBank(48)
Dim Device(waveInGetNumDevs())
Dev=0
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
FreeBank WaveCaps

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

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

DevHandleIn = CreateBank(4)
waveInOpen(DevHandleIn,DevUsed,WaveFmt,0,0,0)
If PeekInt(DevHandleIn,0) = 0 Then
 Print "Can't open input wavedevice!"
 WaitKey
 End
EndIf
DebugLog "waveInStart " + waveInStart(PeekInt(DevHandleIn,0))
DebugLog "waveInPrepareHeader " + waveInPrepareHeader(PeekInt(DevHandleIn,0),WaveHeadIn,BankSize(WaveHeadIn))
 
;--------------------------------------------------- OUT Device

Cls
WaveCaps = CreateBank(48)
Dim Device(waveOutGetNumDevs())
Dev=0
For I = 0 To waveOutGetNumDevs() - 1
 waveOutGetDevCaps(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
FreeBank WaveCaps

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

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

DevHandleOut = CreateBank(4)
Playing=CreateBank(4)
PokeInt Playing,0,-1
waveOutOpen(DevHandleOut,DevUsed,WaveFmt,0,Playing,0)
If PeekInt(DevHandleOut,0) = 0 Then
 Print "Can't open output wavedevice!"
 WaitKey
 End
EndIf
DebugLog "waveOutPrepareHeader " + waveOutPrepareHeader(PeekInt(DevHandleOut,0),WaveHeadOut,BankSize(WaveHeadOut))
DebugLog "waveOutSetVolume " + waveOutSetVolume(DevUsed,$ffffffff) ;Volle Lautstärke Links und Rechts = Hi & Low Word

;-----------------------------------------------------

SetBuffer BackBuffer()
Global campiv=CreatePivot()
Global cam=CreateCamera()
CameraRange cam,1,10000
CameraZoom cam,2

;von oben
PositionEntity cam,0,3000,1
PointEntity cam,campiv,0
EntityParent cam,campiv

;PositionEntity cam,0,0,-2500 ;von vorne

AmbientLight 32,32,32
Dim Light(4)
For i=1 To 4
 Light(i)=CreateLight(3)
 LightRange Light(i),750
 LightConeAngles Light(i),60,120
 PositionEntity Light(i),0,250,0
 If i=1 Then LightColor Light(i),255,0,0   
 If i=2 Then LightColor Light(i),255,128,64
 If i=3 Then LightColor Light(i),0,255,0   
 If i=4 Then LightColor Light(i),0,0,255   
Next

Local w#

Global plane=CreatePlane(4)
PositionEntity plane,0,-500,0

Global kugel1=CreateSphere(32):ScaleEntity kugel1,1000,1000,1000:RotateMesh kugel1,60,0,0
Global kugel2=CreateCube():ScaleEntity kugel2, 500, 500, 500
EntityAlpha kugel1,0.5
;EntityAlpha kugel2,0.9
EntityShininess kugel1,0.5
EntityShininess kugel2,0.5
EntityBlend kugel1,3
;EntityBlend kugel2,2
PositionEntity kugel1,0,-120,0
;PositionEntity kugel2,0,-120,0

EntityFX kugel2,1

tx3=LoadTexture("Beton.jpg",1+8) ;<----------------- eigene TEXTURE
ScaleTexture tx3,1024.0,1024.0

tx2=CreateTexture(256,256,1+8+16+32)

tx1=LoadTexture("Water.bmp",1+8) ;<----------------- eigene TEXTURE
EntityTexture kugel1,tx1
EntityTexture kugel2,tx2
EntityTexture plane,tx3

eEffekt=CreateCylinder(8,1):ScaleMesh eEffekt,6.0,200.0,6.0:PositionMesh eEffekt,0,MeshHeight(eEffekt)/2,0
EntityAlpha eEffekt,0.8
EntityShininess eEffekt,0.5
EntityBlend eEffekt,3
;EntityFX eEffekt,16
EntityColor eEffekt,255,255,255
RotateMesh eEffekt,90,0,0
HideEntity eEffekt
Dim eEntitys(359)
Dim eEntitysX#(359)
Dim eEntitysZ#(359)

Local r#=1000.0
Local x#,z#
piv=CreatePivot()
db=0
For w=0.0 To 359.0
 x=Sin(w)*(r+20)
 z=Cos(w)*(r+20)
 eEntitys(w)=CopyEntity(eEffekt)
 PositionEntity piv,x,500,z
 x=Sin(w)*r
 z=Cos(w)*r
 PositionEntity eEntitys(w),x,0,z
 eEntitysX(w)=x
 eEntitysZ(w)=z
 PointEntity eEntitys(w),piv,0
 ;If db=1 Then HideEntity eEntitys(w)
 db=1-db
Next
FreeEntity piv

TurnEntity Light(1),0,0,0
TurnEntity Light(2),0,89,0
TurnEntity Light(3),0,179,0
TurnEntity Light(4),0,269,0

EntityParent Light(1),eEntitys(0  ),1
EntityParent Light(2),eEntitys(89 ),1
EntityParent Light(3),eEntitys(179),1
EntityParent Light(4),eEntitys(269),1

;-----------------------------------------------------

 ClsColor 0,0,0
 Color 255,255,0
 Local smx=GraphicsWidth()/2
 Local smy=GraphicsHeight()/2
 Local px=0
 Local ps#
 w=0
 tp#=0

;-----------------------------------------------------

While Not KeyHit(1)

 waveInAddBuffer(PeekInt(DevHandleIn,0),WaveHeadIn,BankSize(WaveHeadIn)) ;Musik vom Micro in den Buffer holen
 ;If (PeekInt(WaveHeadOut,16) And 1)=1 Then
  waveOutWrite(PeekInt(DevHandleOut,0),WaveHeadOut,BankSize(WaveHeadOut))
  ;PokeInt WaveHeadOut,16,$10
 ;EndIf

 ;-----------------------------------------------------

 ;TurnEntity eEffekt,1,0,0

 CameraViewport cam,0,0,256,256
 RenderWorld
 CopyRect 0,0,256,256,0,0,BackBuffer(),TextureBuffer(tx2)

 CameraViewport cam,0,0,GraphicsWidth(),GraphicsHeight()
 RenderWorld

  For i=0 To 359 Step 1
   ps=128-PeekByte(WavInData,px)
   ;ps=-32
   ScaleEntity eEntitys(i),1.0+Abs(ps)/8.0,1.0+Abs(ps)/8.0,0.1+Abs(ps/10.0)
   ;PositionEntity eEntitys(i),eEntitysX(i)+Sin(i)*(-ps*4.0),0,eEntitysZ(i)+Cos(i)*(-ps*4.0)
   PositionEntity eEntitys(i),eEntitysX(i),0,eEntitysZ(i)
   ;MoveEntity eEntitys(i),0,0,-Abs(ps*20.0)
   TurnEntity eEntitys(i),0,0,ps/10.0
   TurnEntity eEntitys(i),0,ps/10.0,0
   TurnEntity eEntitys(i),ps/10.0,0,0
   px=px+1:If px>359 Then px=0
  Next

  RotateTexture tx1,w
  w=w+1:If w>360 Then w=w-360

  ;PositionTexture tx2,-tp,-tp
  PositionTexture tx3,-tp,0
  tp=tp+0.001:If tp>1.0 Then tp=tp-1.0

  TurnEntity kugel2,.1,0.5,.2

 ;TurnEntity campiv,.1,0.5,.2

 Delay 20
 Flip 0

 If KeyHit(31) Then SaveBuffer BackBuffer(),"musikbox.bmp"

 ;-----------------------------------------------------

Wend

;----------------------------------------------------- Speicher wieder FREI geben !

DebugLog "waveInReset " +waveInReset(PeekInt(DevHandleIn,0))
DebugLog "waveInUnprepareHeader " +waveInUnprepareHeader(PeekInt(DevHandleIn,0),WaveHeadIn,BankSize(WaveHeadIn))
DebugLog "waveInClose " +waveInClose(PeekInt(DevHandleIn,0))

DebugLog "waveOutReset " +waveOutReset(PeekInt(DevHandleOut,0))
DebugLog "waveOutUnprepareHeader " +waveOutUnprepareHeader(PeekInt(DevHandleOut,0),WaveHeadOut,BankSize(WaveHeadOut)) ;in WaveHeadOut Flags erstmal nicht $10 benutzen
DebugLog "waveOutClose " +waveOutClose(PeekInt(DevHandleOut,0))

FlushKeys
;WaitKey
End

;-----------------------------------------------------

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

Neue Antwort erstellen


Übersicht Ressourcen Sound & Music

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group