![]() |
aus Lautstärke in dB wahrgenommene Lautsärke berechnen
hallo zusammen,
wie man sieht ist mir die formulierung des titel nicht leicht gefallen ;-) hoffe mal es trifft meine frage: ich habe eine lausträrke in dB die von -10000 bis 0 reicht. 0 ist maximal LS. wenn ich nun aber die lautstärke linear setze, also 50% LS ist -5000 dann haut das nicht hin dB ist ja auch logarithmisch, gelle? wie kann ich nun irgendwie die wahrgenommene LS berechen. ich habs schon mit einer logarithmischen funktion probiert, allerdings war die kurve (würde man sie darstellen), im bereich 50%-100% zu flach, das heißt es änderte sich nicht viel an der LS! hat jemand einen vorschlag, wie ich nun die LS setzen kann (in dB), sodass die wahrgenommene linear steigt: also praktisch so:
Delphi-Quellcode:
gruss,
procedure SetVolume(volume: integer);
begin volume:= Calculate_dB_from_Volume(volume); //set new volume end; iaby |
Re: aus Lautstärke in dB wahrgenommene Lautsärke berechnen
Auch wenn mir nicht ganz klar ist, was du mit wahrgenommener Lautstärke meinst (die ist nämlich von Frequenz und Distanz von der Schallquelle abhängig und wird in Sone gemessen, das ist nicht so einfach), aber wenn du deinen Prozentwert aus einem dB-Wert berechnen willst, kann ich dir als (Wannabee-)Tontechniker sagen, dass sich letzterer (wenn er Signalpegel und nicht Schallleistung bezeichnet) so berechnet:
[U: Signalpegel (in dB); P: gemessener Pegel; N: Nominalpegel] U = 20 dB * log(P / N) Der Nominalpegel wäre hier 100, also U = 20 dB * log(P / 100) U / (20 dB) = log(P / 100) 10^(U / (20 dB)) = P / 100 100 * 10^(U / (20 dB)) = P. |
Re: aus Lautstärke in dB wahrgenommene Lautsärke berechnen
Also, wenn man nach der DirectX SDK geht steht -10000 für -100 dB (-5000 also für -50 dB), wie genau das in Zusammenhang mit der wargenommenen Lautsärke setzt, weis ich leider auch nicht.
Nur mal so als Einwurf, vielleicht kann ja der Zitat:
|
Re: aus Lautstärke in dB wahrgenommene Lautsärke berechnen
Gut, in diesem Fall wird U eben in Millibel gemessen.
Delphi-Quellcode:
Pass mit der Lautstärke 0% auf, denn log(0) ist bekanntlich undefiniert.
uses
Math; // ... function calculate_mB_from_volume(volume: Extended): Integer; begin Result := Round(2000 * Log10(volume / 100)); end; function calculate_volume_from_mB(mB: Integer): Extended; begin Result := 100 * Power(10, mB / 2000); end; |
Re: aus Lautstärke in dB wahrgenommene Lautsärke berechnen
hmmm, hab mich da wohl doch geirrt.
denn auch deine funktion lieferte keine lineare lautsärke. habe aber rausgefunden, dass es ab etwa -4000 bis 0 linear verläuft. also einfach für lautstärke 0 auf -10000 gesetzt, den rest (5-100) nach einer linearen funktion berechnet. jetzt bin ich mit dem ergebnis zufrieden! danke euch! gruss, iaby |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz