Forum: PC-Programmierung Soundanalyse Visual Basic 2010


von Pepe (Gast)


Lesenswert?

Hallo,

ich bin schon seit Tagen (besser Nächten) am Suchen und verzweifeln.

Wie kann ich in Visual Basic 2010 das Signal meiner Soundkarte (und zwar 
das Ausgangs-Signal, das was zu den Boxen geht) einlesen? Am besten als 
Sample-Array?

Ich möchte damit das 'ne FFT machen und ein paar nette Visualisierungen 
--> das ist alles kein Problem. Das Programm soll im Prinzip das 
visualisieren was der Nutzer auf seinen LS-Boxen hört. Also wenn er zum 
Beispiel irgend etwas im Winamp oder im Mediaplayer hört, oder youtube, 
oder, oder, oder ... Aber ich komme einfach nicht an das 
Ausgabesignal!????

Ich habe schon zig Tutorials gelesen, aber da geht es immer nur darum 
MP3s, WAVs, etc. abzuspielen!!!?

Mit der Bass.dll habe ich rumgespielt, ohne Erfolg!

Und die Programmschnipsel zur Windows-API, von wegen WaveInOpen und 
Konsorten sind so veraltet, dass sie auf meinem Win7 64bit Rechner nicht 
laufen!

Kann mir bitte jemand helfen!? Ich bin für jeden Tipp dankbar!

LG,

Pepe

von Christopher (Gast)


Lesenswert?

Du könntest mit der Bass.dll und eine Y-Kabel das Eingangssignal 
einlesen:


Bass.Dll <- Soundkarteneingang <-
                                   -> Y-Kabel -> Lautsprecher
Youtube  -> Soundkarteneingang ->

von Christopher (Gast)


Lesenswert?

meine natürlich bei youtube Soundkartenausgang

von -gb- (Gast)


Lesenswert?

> Und die Programmschnipsel zur Windows-API, von wegen WaveInOpen
> und Konsorten sind so veraltet,
Das ist aber auch nicht anders zu erwarten.

von Pepe (Gast)


Lesenswert?

Hallo Christopher,

besten Dank für die schnelle Antwort! Die Idee kam mir auch schon, 
vielleicht nicht die eleganteste Lösung, aber wenn es funktionieren 
würde, wäre das schon OK so.

Die Sache ist nur die: Wie bekomme ich mit Hilfe der Bass.dll die Daten 
vom LineIn ??? Habe da in der Dokumentation bisher nur Funktionen zur 
Ausgabe und zum Recording von MP3s, etc. gefunden. Aber zum Sampeln 
eines Eingangs fand ich nichts!?

Hat da vielleicht schon jemand Erfahrung mit? Ein paar Code-Schnipsel 
würden schon sehr helfen!

Besten Dank im Voraus,


Pepe

von Sven H. (dsb_sven)


Lesenswert?

Manche Soundkarten haben die Möglichkeit als Aufnahmegerät "Was Sie 
hören" oder ähnliches auszuwählen. Das ist dann quasi ein 
Software-Y-Kabel.

von Christian F. (Gast)


Lesenswert?

Hallo,

ich habe mir ein "Lichtorgel"-Programm mit der bass.dll in VB 2008 
geschrieben. Dort kann ich momentan einen Dateipfad angeben und diese 
(mp3)-Datei dann abspielen. Dann mache ich von dem stream eine 
Frequenzanalyse und somit kann ich verschiedene Lampen bei den 
verschiedenen dominanten Frequenzen leuchten lassen. Doch jetzt ich 
bräuchte eine Möglichkeit, ein Aufnahmegerät (Stereomix, LineIn, etc.) 
mit Bass_ChannelGetData(...) zu analysieren. Und damit stehe ich vor 
demselben Problem, wie Pepe. Weiß jemand, wie das möglich ist? Ich suche 
bereits auch schon seit mehreren Tagen im Internet und der Bass.doc nach 
einer Lösung, doch ich komme auf keinen grünen Zweig. Ich habe schon 
versucht einen Stream mit folgendem Code zu erstellen:

  Public stream As Integer
...
    Dim arr As Un4seen.Bass.RECORDPROC
    Bass.BASS_RecordInit(0) 'Device 0 ist bei mir Stereomix
    stream = Bass.BASS_RecordStart(44100, 2, 0, arr, 0)

Das hat auch etwas funktioniert, doch das Signal, dass ich zusätzlich 
Graphisch darstelle, kommt ca. 2 Sekunden verspätet an :( Das ist für 
eine Lichtorgel natürlich sinnlos.

Ich würde mich sehr darüber freuen, wenn jemand eine Lösung für dieses 
Problem wüsste!
Danke im Voraus,
Christian F.

von noenoonenen (Gast)


Lesenswert?

direct show filter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.