Sound Buffer prüfen

Status
Nicht offen für weitere Antworten.

pothead

Mitglied
Hi @ all,

ich steh grad auf dem Schlauch:

Wie kann man doch gleich den Inhalt des SoundBuffer prüfen(= oder > 0)??

danke
 
Sorry, ist natürlich falsch ausgedrückt:/

Wenn eine Soundausgabe erfolgt (egal ob Systemsound oder mp3 oder wav etc...) wird dieser doch vorher gepuffert um dann an über den Mixer ausgegeben, oder? Und genau diesen Puffer(Zwischenspeicher) will ich lesen...

sowas wie -
Code:
if (Puffer.length < 0)
....
 
Willst du wissen wie groß der puffer ist oder willst du wissen wieviel im Puffer an Daten drin liegt?

- Alex
 
Du meintest sicher >0...

Also ich habe meine Sampledaten immer an eine "javax.sound.sampled.SourceDataLine" geschrieben, also quasi einen Stream - leider eben keiner vom Typ ".io.".

Aber vielleicht gibt es da eine "available"-Methode... Weiß ich gerade nicht genau...

Was soll denn dieser AudioBuffer sein? Schon mal im JavaDoc nachgeschaut? 😛
 
klar da bin ich die ganze Zeit am suchen und lesen...

ich beschreibe mal mein Problem:

Ich will sämtliche Soundausgaben registrieren....also ob etwas ausgegeben wird oder nicht. Meine erste Idee war einfach alle Output Mixerlines aufnehmen, analysieren und wenn der Pegel über 1 dB steigt einfach eine Methode aufrufen.
Sobald er wieder unter 1 dB ist wieder eine Methode aufrufen. Nur ist das mit dem aufnehmen ziemlich Performance belastend. Also nächste Idee...System Hook einrichten um Messages an und vom Mixer zu registrieren. Das Funktioniert leider nicht (soweit ich MSDN da richtig verstanden habe).
Das hat mich dann zu der momentanen Idee gebracht....

Mein Tool läuft PERMANENT, also ist Performance wichtig.

Ich seh langsm nur den Wald vor lauter Bäumen nicht mehr :?

Jan
 
Ich hab sowas inder Art auch schon gemacht. Aber wozu aufnehmen?

Es reicht doch wenn du permanent die Lautstärke des Streams ausrechnest (einfach sich in das byte[] reinklinken und rechnen) und ab einem bestimmten Level sagst: Halt, hier kommt tatsächlich ein Ton".

Funktioniert bei mir bestens und ist ziemlich schnell/performant.

- Alex

btw: Den Puffer zu fragen ob was drin liegt um rauszufinden ob ein Signal kommt ist denkbar schlecht. Du hast immer ein Grundrauschen das sich im Puffer wiederfindet.
 
ok, dass mit dem aufnehmen ist unnötig...danke für die Info mir dem Grundrauschen, hätt ich überhaupt nicht berücksichtigt...

lautstärke?
nur das wir nicht aneinander vorbei reden: Meinst Du mit Lautstärke die Amplitude des Streams? Denn nur die ändert sich.(mir kommt so der Gedanke, dass ich sämtliche Dokus bezüglich des Begriffs "Lautstärke" falsch verstanden habe.....)

Könntest du mir evtl deine verwendeten Methoden nennen? In logischer Reihenfolge wenns geht... :wink:

Nach deinem Code will ich jetzt nicht fragen....obwohl es schon interessant wäre :###
 
Ich hab das im Prinzip so gemacht:

Ich habe eine Klasse die den Sound wiedergibt. Da muss ich mit einem write() meinen Stream (byte[]) reinschieben.

Intern durchlaufen die Daten, bevor sie zur Soundkarte gelangen erst noch eine Methode die kontinuierlich Anhand der Sampling- und Bitrate und Kanäle die Lautstärke (ja, die Amplitude) ausrechnet. Überschreitet die Lautstärke ein vorher eingestelltes Level, so werden beispielsweise alle registrierten Listener, für die die Lautstärke relevant ist, informiert.

Wie du die Lautstärke ermitteln kannst, und noch ein paar andere nettigkeiten findest du hier: http://www.jsresources.org/

- Alex
 
Das nenne ich mal kompetente Hilfe... 😀
Vielen Dank. Super Sache! 😀

Man muss ja auch nicht alles wissen sondern nur wo es steht... :###
 
pothead hat gesagt.:
Man muss ja auch nicht alles wissen sondern nur wo es steht... :###

Richtig. Und bei Problemem sollte man sich damit befassen bevor man die Frage nach "Dem leben, dem Universum und überhaupt" stellt ;-)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben