Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi aus Lautstärke in dB wahrgenommene Lautsärke berechnen (https://www.delphipraxis.net/25396-aus-lautstaerke-db-wahrgenommene-lautsaerke-berechnen.html)

iaby 5. Jul 2004 22:23


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:
procedure SetVolume(volume: integer);
begin
volume:= Calculate_dB_from_Volume(volume);
//set new volume
end;
gruss,
iaby

d3g 5. Jul 2004 23:24

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.

scp 6. Jul 2004 01:25

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:

(Wannabee-)Tontechniker
damit was anfangen :)

d3g 6. Jul 2004 10:46

Re: aus Lautstärke in dB wahrgenommene Lautsärke berechnen
 
Gut, in diesem Fall wird U eben in Millibel gemessen.

Delphi-Quellcode:
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;
Pass mit der Lautstärke 0% auf, denn log(0) ist bekanntlich undefiniert.

iaby 7. Jul 2004 18:10

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