Lautstärke von WAV File rausfinden?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
johann.boehme
Beiträge: 36
Registriert: 09.03.2005 20:17

Lautstärke von WAV File rausfinden?

Beitrag von johann.boehme »

Hi!
Ich würd gern ne WAV Datei abspielen und zeitmäßig die lautstärke in einer Textdatei mitloggen.
Gibt ja keine Funktion in der stdlib, kennt jemand ne Möglichkeit?
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag von jojo1541 »

Setz das ganze in eine Variable und verändere diese. Dann schreibst du die Werte dieser Variable in deine Log-Datei.

Code: Alles auswählen

InitSound()

volume.l = 100

LoadSound(0,"musik\anarchist.wav")

SoundVolume(0,volume)

Debug volume

Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
johann.boehme
Beiträge: 36
Registriert: 09.03.2005 20:17

Beitrag von johann.boehme »

hmm thx, aber das ist nicht ganz was ich meinte ;)
Es geht quasi um ne equalizer Animation ^^ Sound besteht ja eigentlich nur aus Frequenz- und Lautstärkeinformationen. Ich möchte jetzt einfach die lautstärke abfragen können um sagen zu können, wo die Sounddatei wie laut ist. ^^
Zum Beispiel um in einem Gespräch Sprechpausen identifizieren zu können.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

@volti: Er wollte die Lautstärke ermitteln, nicht festlegen.

@johann.boehme: Es gibt keinen PureBasic internen Befehl um die aktuelle Soundlautstärke zu ermitteln.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
johann.boehme
Beiträge: 36
Registriert: 09.03.2005 20:17

Beitrag von johann.boehme »

Gibt ja keine Funktion in der stdlib, kennt jemand ne Möglichkeit?
;) i Know ^^
Deshalb wollt ich ja wissen ob jemand ne idee hat, ne library kennt, oder nen WinAPI Befehl?
irgendwas?
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

es gibt die bass.dll (www.un4seen.com) (dort gibts auch nen pb-wrapper)

und die Fmod.dll (www.fmod.org) (zum wrappen such mal hier im forum und oder purearea.net bei den userlibs)

ist beides nicht all zu komplex.

me preferred immer die bass, weiss aber auch nicht recht warum. ich glaub die issn hauch kleiner
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
inc.
Beiträge: 348
Registriert: 27.10.2004 12:25

Beitrag von inc. »

Du musst die Amplitude auslesen:
http://forums.purebasic.com/english/vie ... wav+ffmpeg

Dort hatte ich mal geposted wie man die Lautstärke herausfindet (sie zus. maximiert und z.B. neu via Std.out und ffmpeg recodiert).
Hier gibts die OOP Option für PureBasic.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Bei einer Equalizer-Animation reicht die Amplitude nicht, Du mußt das WAV-File stückchenweise per FFT konvertieren und dann hast Du erst das Frequenzspektrum inkl. der Lautstärke der einzelnen Frequenzbänder. Wenn Du das nicht machst, kannst Du nur eine "Oszillator"-Animation erzeugen, aber eben kein Spektrum.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
johann.boehme
Beiträge: 36
Registriert: 09.03.2005 20:17

Beitrag von johann.boehme »

Würde mir auch reichen ;)

Der Code ist wirklich nützlich ^^
auch wenn ich noch net wirklich check, wo im File was steht.
Hab mir jetzt mal den ersten Teil angeguckt, in dem er in einer Schleife die Amplitude ausliest, guckt ob sie höher als der bisherige maxwert ist und diesen angleicht ^^

hab jetzt einfach mal mit

Code: Alles auswählen

PrintN(Str(*mem\w))
versucht das ganze auszugeben..
da gibts aber ne ganze menge negative Zahlen!? Was hab ich falsch gemacht?

Und nochmals vielen Dank für die schnellen Tipps!
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Beitrag von Vermilion »

Das ist nicht falsch. Solch eine Audiodatei besteht halt nur aus einer Sinuskurve, so musst du dir das vorstellen, die nicht ganz "kurvig" ist, sondern in ihrer Genauigkeit Form halt nur durch ihre Abtastrate (Frequenz, Hz, 44100KHz heißt 44100 Abtastungen in einer Sekunde) definiert ist.

Bild

Diese Sinuskurve repräsentiert gleichzeit auch in gewisser Weise die Schwingung der Lautsprechermembran, um den Klang zu erzeugen. Es ist eigentlich recht simpel.

Die Amplituden (Höchst- und Tiefstpunkte) sind übrigens für die Lautstärker verantwortlich.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Antworten