Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ezfit:target_algorithms_-_formula_v.2_2006 [2009/01/29 09:53]
127.0.0.1 external edit
ezfit:target_algorithms_-_formula_v.2_2006 [2014/05/30 14:16] (current)
ajdavis [Soft Target]
Line 169: Line 169:
  
 === Soft Target === === Soft Target ===
-^ Soft Target Freq (Hz)  ^ Calculated Soft Target Level (dB)  ^ Threshold Cell  ^  Spreadsheet Formula +^ Soft Target Freq (Hz)   Hearing Loss  ^ Calculated Soft Target Level (dB)  ^ Threshold Cell  ^  Spreadsheet Formula 
-|   250 |  27.0 |  B28  | ''=IF(B28<=20; 0; IF(B28=25; 2; IF(B28=30;4; IF(B28<60;(B28-25)/1.65; IF(B28<90; (B28-22.5-0.5*(B28-60))/1.65; IF(B28<120;31))))))'' |  +|   250 |  75  |  27.0  |  B28  | ''=IF(B28<=20; 0; IF(B28=25; 2; IF(B28=30;4; IF(B28<60;(B28-25)/1.65; IF(B28<90; (B28-22.5-0.5*(B28-60))/1.65; IF(B28<120;31))))))'' |  
-|   500 |  27.0 |  C28  | ''=IF(C28<=20; 0; IF(C28=25; 2; IF(C28=30;4; IF(C28<60;(C28-25)/1.65; IF(C28<90; (C28-22.5-0.5*(C28-60))/1.65; IF(C28<120;31))))))'' |  +|   500 |  75  |  27.0  |  C28  | ''=IF(C28<=20; 0; IF(C28=25; 2; IF(C28=30;4; IF(C28<60;(C28-25)/1.65; IF(C28<90; (C28-22.5-0.5*(C28-60))/1.65; IF(C28<120;31))))))'' |  
-|   750 |  27.0 |  D28  | ''=IF(D28<=20; 0; IF(D28=25; 2; IF(D28=30;4; IF(D28<60;(D28-25)/1.65; IF(D28<90; (D28-22.5-0.5*(D28-60))/1.65; IF(D28<120;31))))))'' |  +|   750 |  75  |  27.0  |  D28  | ''=IF(D28<=20; 0; IF(D28=25; 2; IF(D28=30;4; IF(D28<60;(D28-25)/1.65; IF(D28<90; (D28-22.5-0.5*(D28-60))/1.65; IF(D28<120;31))))))'' |  
-|  1000 |  29.0 |  E28  | ''=IF(E28<=20; 0; IF(E28=25; 2; IF(E28=30;4; IF(E28<60;(E28-25)/1.65; IF(E28<90; (E28-22.5-0.5*(E28-60))/1.65; IF(E28<120;31))))))'' |  +|  1000 |  80  |  29.0  |  E28  | ''=IF(E28<=20; 0; IF(E28=25; 2; IF(E28=30;4; IF(E28<60;(E28-25)/1.65; IF(E28<90; (E28-22.5-0.5*(E28-60))/1.65; IF(E28<120;31))))))'' |  
-|  1500 |  30.0 |  F28  | ''=IF(F28<=20; 0; IF(F28=25; 2; IF(F28=30;4; IF(F28<60;(F28-25)/1.65; IF(F28<90; (F28-22.5-0.5*(F28-60))/1.65; IF(F28<120;31))))))'' |  +|  1500 |  85  |  30.0  |  F28  | ''=IF(F28<=20; 0; IF(F28=25; 2; IF(F28=30;4; IF(F28<60;(F28-25)/1.65; IF(F28<90; (F28-22.5-0.5*(F28-60))/1.65; IF(F28<120;31))))))'' |  
-|  2000 |  31.0 |  G28  | ''=IF(G28<=20; 0; IF(G28=25; 2; IF(G28=30;4; IF(G28<60;(G28-25)/1.65; IF(G28<90; (G28-22.5-0.5*(G28-60))/1.65; IF(G28<120;31))))))'' |  +|  2000 |  95  |  31.0  |  G28  | ''=IF(G28<=20; 0; IF(G28=25; 2; IF(G28=30;4; IF(G28<60;(G28-25)/1.65; IF(G28<90; (G28-22.5-0.5*(G28-60))/1.65; IF(G28<120;31))))))'' |  
-|  3000 |  31.0 |  H28  | ''=IF(H28<=20; 0; IF(H28=25; 2; IF(H28=30;4; IF(H28<60;(H28-25)/1.65; IF(H28<90; (H28-22.5-0.5*(H28-60))/1.65; IF(H28<120;31))))))'' |  +|  3000 |  90  |  31.0  |  H28  | ''=IF(H28<=20; 0; IF(H28=25; 2; IF(H28=30;4; IF(H28<60;(H28-25)/1.65; IF(H28<90; (H28-22.5-0.5*(H28-60))/1.65; IF(H28<120;31))))))'' |  
-|  4000 |  21.0 |  I28  | ''=IF(I28<=20; 0; IF(I28=25; 2; IF(I28=30;4; IF(I28<60;(I28-25)/1.65; IF(I28<90; (I28-22.5-0.5*(I28-60))/1.65; IF(I28<120;31)))))) - 10'' |  +|  4000 |  95  |  21.0  |  I28  | ''=IF(I28<=20; 0; IF(I28=25; 2; IF(I28=30;4; IF(I28<60;(I28-25)/1.65; IF(I28<90; (I28-22.5-0.5*(I28-60))/1.65; IF(I28<120;31)))))) - 10'' |  
-|  6000 |  18.0 |  J28  | ''=IF(J28<=20; 0; IF(J28=25; 2; IF(J28=30;4; IF(J28<60;(J28-25)/1.65; IF(J28<90; (J28-22.5-0.5*(J28-60))/1.65; IF(J28<120;31)))))) - 13'' |  +|  6000 |  90  |  18.0  |  J28  | ''=IF(J28<=20; 0; IF(J28=25; 2; IF(J28=30;4; IF(J28<60;(J28-25)/1.65; IF(J28<90; (J28-22.5-0.5*(J28-60))/1.65; IF(J28<120;31)))))) - 13'' |  
-|  8000 |  13.0 |  K28  | ''=IF(K28<=20; 0; IF(K28=25; 2; IF(K28=30;4; IF(K28<60;(K28-25)/1.65; IF(K28<90; (K28-22.5-0.5*(K28-60))/1.65; IF(K28<120;31)))))) - 18''+|  8000 |  90  |  13.0  |  K28  | ''=IF(K28<=20; 0; IF(K28=25; 2; IF(K28=30;4; IF(K28<60;(K28-25)/1.65; IF(K28<90; (K28-22.5-0.5*(K28-60))/1.65; IF(K28<120;31)))))) - 18''
  
 At any Threshold frequency (e.g. Thresh Freq = 250Hz):  At any Threshold frequency (e.g. Thresh Freq = 250Hz): 
Line 404: Line 404:
     if (ThreshLevel < = 40)     if (ThreshLevel < = 40)
         LoudTargetLevel = 0;         LoudTargetLevel = 0;
-    else if (ThreshLevel < 125)+    else 
         LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));         LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));
     end     end
Line 494: Line 494:
 |  3000 |  44.15 |  H83  | ''=IF(H83<=20;0; IF(H83<60;(H83-20)*0.6; IF(H83<110;(H83*0.79)-23; IF(H83<120;59))))'' |  3000 |  44.15 |  H83  | ''=IF(H83<=20;0; IF(H83<60;(H83-20)*0.6; IF(H83<110;(H83*0.79)-23; IF(H83<120;59))))''
 |  4000 |  38.10 |  I83  | ''=IF(I83<=20;0; IF(I83<60;(I83-20)*0.6; IF(I83<110;(I83*0.79)-23; IF(I83<120;59)))) - 10'' |  4000 |  38.10 |  I83  | ''=IF(I83<=20;0; IF(I83<60;(I83-20)*0.6; IF(I83<110;(I83*0.79)-23; IF(I83<120;59)))) - 10''
-|  6000 |  46.00 |  J83  | ''=IF(J83<=20;0; IF(J83<60;(J83-20)*0.6; IF(J83<110;(J83*0.79)-23; IF(J83<125;59)))) - 13''+|  6000 |  46.00 |  J83  | ''=IF(J83<=20;0; IF(J83<60;(J83-20)*0.6; IF(J83<110;(J83*0.79)-23; IF(J83<125 FIXME;59)))) - 13''
 |  8000 |  30.10 |  K83  | ''=IF(K83<=20;0; IF(K83<60;(K83-20)*0.6; IF(K83<110;(K83*0.79)-23; IF(K83<120;59)))) - 18'' |  8000 |  30.10 |  K83  | ''=IF(K83<=20;0; IF(K83<60;(K83-20)*0.6; IF(K83<110;(K83*0.79)-23; IF(K83<120;59)))) - 18''
  
Line 506: Line 506:
     else if (ThreshLevel < 60)     else if (ThreshLevel < 60)
         ModerateTargetLevel = ((ThreshLevel - 20) * 0.6);         ModerateTargetLevel = ((ThreshLevel - 20) * 0.6);
-    else if (ThreshLevel < 80)+    else if (ThreshLevel < 110)
         ModerateTargetLevel = ((ThreshLevel * 0.79) - 23);         ModerateTargetLevel = ((ThreshLevel * 0.79) - 23);
     else if (ThreshLevel < 120)     else if (ThreshLevel < 120)
-        ModerateTargetLevel = 49;+        ModerateTargetLevel = 59;
     end     end
     // Add High Frequencies compensation     // Add High Frequencies compensation
Line 593: Line 593:
 |  8000 |   0.00 |  K151  | ''0'' |  8000 |   0.00 |  K151  | ''0''
  
-At any Threshold frequency (e.g. Thresh Freq = 250Hz): +At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final ''else'' (frequencies >= 1000 Hz) when getting Target Level. What value should that be?
 <code delphi> <code delphi>
 function GetSoftTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] SoftTargetLevel {dB}) function GetSoftTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] SoftTargetLevel {dB})
Line 599: Line 599:
   // Get Soft Target Level   // Get Soft Target Level
   if ThreshFreq in [250, 8000] then   if ThreshFreq in [250, 8000] then
-     LoudTargetLevel = 0;+     SoftTargetLevel = 0;
   else if ThreshFreq in [500, 750] then   else if ThreshFreq in [500, 750] then
     if (ThreshLevel >= 60)     if (ThreshLevel >= 60)
Line 620: Line 620:
   else if ThreshFreq in [1000, 1500, 2000] then   else if ThreshFreq in [1000, 1500, 2000] then
     if (ThreshLevel < 30)     if (ThreshLevel < 30)
-        ModerateTargetLevel = 0;+        SoftTargetLevel = 0;
     else if (ThreshLevel < 45)     else if (ThreshLevel < 45)
-        ModerateTargetLevel = (ThreshLevel / 3);+        SoftTargetLevel = (ThreshLevel / 3);
     else if (ThreshLevel < 75)     else if (ThreshLevel < 75)
-        ModerateTargetLevel = (ThreshLevel / 2.5);+        SoftTargetLevel = (ThreshLevel / 2.5);
     else if (ThreshLevel < 125)     else if (ThreshLevel < 125)
-        ModerateTargetLevel = 30;+        SoftTargetLevel = 30
 +    end 
 +  else if ThreshFreq in [3000] then 
 +    if (ThreshLevel < 80) 
 +        SoftTargetLevel = (ThreshLevel / 2); 
 +    else if (ThreshLevel < 120) 
 +        SoftTargetLevel = 40;
     end     end
-  else if ThreshFreq in [3000, 4000, 6000] then+  else if ThreshFreq in [4000, 6000] then
     if (ThreshLevel < 80)     if (ThreshLevel < 80)
-        ModerateTargetLevel = (ThreshLevel / 2);+        SoftTargetLevel = (ThreshLevel / 2);
     else if (ThreshLevel < 120)     else if (ThreshLevel < 120)
-        ModerateTargetLevel 40;+        SoftTargetLevel 36;
     end     end
   end   end
  
   // Add High Frequencies compensation   // Add High Frequencies compensation
-  if (ThreshFreq = 4000) +  if (ThreshFreq = 4000) then 
-     SoftTargetLevel = SoftTargetLevel - 10+     SoftTargetLevel = SoftTargetLevel - 6
-  else if (ThreshFreq = 6000) +  else if (ThreshFreq = 6000) then 
-     SoftTargetLevel = SoftTargetLevel - 13;+     SoftTargetLevel = SoftTargetLevel - 16;
   end   end
 end; end;
Line 658: Line 664:
 |  8000 |   0.00 |  K151  | ''0'' |  8000 |   0.00 |  K151  | ''0''
  
-At any Threshold frequency (e.g. Thresh Freq = 250Hz): +At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME There is overlap here ( < 35 or > 30 ?), so something needs to be corrected !!!
 <code delphi> <code delphi>
 function GetModerateTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] ModerateTargetLevel {dB}) function GetModerateTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] ModerateTargetLevel {dB})
Line 664: Line 670:
   // Get Moderate Target Level   // Get Moderate Target Level
   if ThreshFreq in [250, 8000] then   if ThreshFreq in [250, 8000] then
-     LoudTargetLevel = 0;+     ModerateTargetLevel = 0;
   else   else
-    if (ThreshLevel < 35)+    if (ThreshLevel < 35) then
         ModerateTargetLevel = 0;         ModerateTargetLevel = 0;
-    else if (ThreshLevel > 30)  !!! There is overlap here, so something needs to be corrected !!!+    else if (ThreshLevel > 30) then // FIXME There is overlap here, so something needs to be corrected !!!
         ModerateTargetLevel = (ThreshLevel - 3);         ModerateTargetLevel = (ThreshLevel - 3);
     end     end
Line 677: Line 683:
  
 === Loud Target === === Loud Target ===
- 
- 
  
 ^ Loud Target Freq (Hz) ^ Calculated Loud Target Level (dB) ^ Threshold Cell ^ Spreadsheet Formula  ^ ^ Loud Target Freq (Hz) ^ Calculated Loud Target Level (dB) ^ Threshold Cell ^ Spreadsheet Formula  ^
Line 700: Line 704:
      LoudTargetLevel = 0;      LoudTargetLevel = 0;
   else if ThreshFreq in [500, 750, 1000, 1500, 2000] then   else if ThreshFreq in [500, 750, 1000, 1500, 2000] then
-    if (ThreshLevel < = 40)+    if (ThreshLevel < = 40) then
         LoudTargetLevel = 0;         LoudTargetLevel = 0;
     else      else 
-        LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent})));+        LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));
     end     end
   else if ThreshFreq in [3000, 4000, 6000] then    else if ThreshFreq in [3000, 4000, 6000] then 
-    else if (ThreshLevel > 100)+    else if (ThreshLevel > 100) then
         LoudTargetLevel = 32;         LoudTargetLevel = 32;
-    else if (ThreshLevel < = 40)+    else if (ThreshLevel < = 40) then
         LoudTargetLevel = 0;         LoudTargetLevel = 0;
     else     else
Line 714: Line 718:
     end     end
     // Add High Frequencies compensation     // Add High Frequencies compensation
-    if (ThreshFreq = 6000)+    if (ThreshFreq = 4000then
        LoudTargetLevel = LoudTargetLevel - 6;        LoudTargetLevel = LoudTargetLevel - 6;
-    else if (ThreshFreq = 8000)+    else if (ThreshFreq = 6000)
        LoudTargetLevel = LoudTargetLevel - 16;        LoudTargetLevel = LoudTargetLevel - 16;
     end     end