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