This is an old revision of the document!


Target Algorithms - Fitting Formula v.3 (2009)

Rev 2009-01-28

Full Shell & Behind-The-Ear (BTE) Targets
Frequency (Hz) 250 500 750 1000 1500 2000 3000 4000 6000 8000
Threshold Level (dB) 10 45 60 65 75 75 75 75 75 90

<charter> title = Full Shell & Behind-The-Ear (BTE) size = 700×230 align = center bgcolor = #ffffff type = line dots = 3 XAxisName = Frequency (Hz) YAxisName = Gain (dB) legendEntries = Threshold, Soft Target, Moderate Target, Loud Target labelSerie = 5

10, 45, 60, 65, 75, 75, 75, 75, 75, 90 0, 20, 37.5, 40, 45, 45, 45, 35, 22, 22 0, 15, 28, 32.25, 41, 41, 40.75, 31, 18, 18 0, 0.9518, 6.6289, 9.1, 15, 15, 15, 5, 2, 6 250, 500, 750, 1000, 1500, 2000, 3000, 4000, 6000, 8000 </charter>

Soft Target

Soft Target Freq (Hz) Calculated Soft Target Level (dB) Threshold Cell Spreadsheet Formula
250 0.0 B3 =IF(B3⇐20; 0; IF(B3=25; 3; IF(B3=30; 6; IF(B3<60; (B3-25); IF(B3<90; (B3-22.5-0.5*(B3-60)); IF(B3<120; 50) )))))
500 20.0 C3 =IF(C3⇐20; 0; IF(C3=25; 3; IF(C3=30; 6; IF(C3<60; (C3-25); IF(C3<90; (C3-22.5-0.5*(C3-60)); IF(C3<120; 50) )))))
750 37.5 D3 =IF(D3⇐20; 0; IF(D3=25; 3; IF(D3=30; 6; IF(D3<60; (D3-25); IF(D3<90; (D3-22.5-0.5*(D3-60)); IF(D3<120; 50) )))))
1000 40.0 E3 =IF(E3⇐20; 0; IF(E3=25; 3; IF(E3=30; 6; IF(E3<60; (E3-25); IF(E3<90; (E3-22.5-0.5*(E3-60)); IF(E3<120; 50) )))))
1500 45.0 F3 =IF(F3⇐20; 0; IF(F3=25; 3; IF(F3=30; 6; IF(F3<60; (F3-25); IF(F3<90; (F3-22.5-0.5*(F3-60)); IF(F3<120; 50) )))))
2000 45.0 G3 =IF(G3⇐20; 0; IF(G3=25; 3; IF(G3=30; 6; IF(G3<60; (G3-25); IF(G3<90; (G3-22.5-0.5*(G3-60)); IF(G3<120; 50) )))))
3000 45.0 H3 =IF(H3⇐20; 0; IF(H3=25; 3; IF(H3=30; 6; IF(H3<60; (H3-25); IF(H3<90; (H3-22.5-0.5*(H3-60)); IF(H3<120; 50) )))))
4000 35.0 I3 =IF(I3⇐20; 0; IF(I3=25; 3; IF(I3=30; 6; IF(I3<60; (I3-25); IF(I3<90; (I3-22.5-0.5*(I3-60)); IF(I3<120; 50) ))))) - 10
6000 22.0 J3 =IF(J3⇐20; 0; IF(J3=25; 3; IF(J3=30; 6; IF(J3<60; (J3-25); IF(J3<90; (J3-22.5-0.5*(J3-60)); IF(J3<120; 50) ))))) - 23
8000 22.0 K3 =IF(K3⇐20; 0; IF(K3=25; 3; IF(K3=30; 6; IF(K3<60; (K3-25); IF(K3<90; (K3-22.5-0.5*(K3-60)); IF(K3<120; 50) ))))) - 28

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetSoftTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] SoftTargetLevel {dB})
begin
    // Get Soft Target Level
    if (ThreshLevel < = 20)
        SoftTargetLevel = 0;
    else if (ThreshLevel = 25)
        SoftTargetLevel = 3;
    else if (ThreshLevel = 30)
        SoftTargetLevel = 6;
    else if (ThreshLevel < 60)
        SoftTargetLevel = (ThreshLevel - 25);
    else if (ThreshLevel < 90)
        SoftTargetLevel = (ThreshLevel - 22.5 - (0.5 * (ThreshLevel - 60)));
    else if (ThreshLevel < 120)
        SoftTargetLevel = 50;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       SoftTargetLevel = SoftTargetLevel - 10;
    else if (ThreshFreq = 6000)
       SoftTargetLevel = SoftTargetLevel - 23;
    else if (ThreshFreq = 8000)
       SoftTargetLevel = SoftTargetLevel - 28;
    end
end;

Moderate Target

Moderate Target Freq (Hz) Calculated Moderate Target Level (dB) Threshold Cell Spreadsheet Formula
250 0.00 B3 =IF(B3⇐20; 0; IF(B3<50; (B3-20)*0.6; IF(B3<60; (B3-16.5)*0.6; IF(B3<80; (B3*0.85)-23; IF(B3<120;47)))))
500 15.00 C3 =IF(C3⇐20; 0; IF(C3<50; (C3-20)*0.6; IF(C3<60; (C3-16.5)*0.6; IF(C3<80; (C3*0.85)-23; IF(C3<120;47)))))
750 28.00 D3 =IF(D3⇐20; 0; IF(D3<50; (D3-20)*0.6; IF(D3<60; (D3-16.5)*0.6; IF(D3<80; (D3*0.85)-23; IF(D3<120;47)))))
1000 32.25 E3 =IF(E3⇐20; 0; IF(E3<50; (E3-20)*0.6; IF(E3<60; (E3-16.5)*0.6; IF(E3<80; (E3*0.85)-23; IF(E3<120;47)))))
1500 41.00 F3 =IF(F3⇐20; 0; IF(F3<50; (F3-20)*0.6; IF(F3<60; (F3-16.5)*0.6; IF(F3<80; (F3*0.85)-23; IF(F3<120;47)))))
2000 41.00 G3 =IF(G3⇐20; 0; IF(G3<50; (G3-20)*0.6; IF(G3<60; (G3-16.5)*0.6; IF(G3<80; (G3*0.85)-23; IF(G3<120;47)))))
3000 40.75 H3 =IF(H3⇐20; 0; IF(H3<50; (H3-20)*0.6; IF(H3<60; (H3-16.5)*0.6; IF(H3<80; (H3*0.85)-23; IF(H3<120;47)))))
4000 31.00 I3 =IF(I3⇐20; 0; IF(I3<50; (I3-20)*0.6; IF(I3<60; (I3-16.5)*0.6; IF(I3<80; (I3*0.85)-23; IF(I3<120;47))))) - 10
6000 18.00 J3 =IF(J3⇐20; 0; IF(J3<50; (J3-20)*0.6; IF(J3<60; (J3-16.5)*0.6; IF(J3<80; (J3*0.85)-23; IF(J3<120;47))))) - 23
8000 18.00 K3 =IF(K3⇐20; 0; IF(K3<50; (K3-20)*0.6; IF(K3<60; (K3-16.5)*0.6; IF(K3<85; (K3*0.85)-23; IF(K3<120;46))))) - 28

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetModerateTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] ModerateTargetLevel {dB})
begin
    // Get Moderate Target Level
    if (ThreshLevel < = 20)
        ModerateTargetLevel = 0;
    else if (ThreshLevel < 50)
        ModerateTargetLevel = (ThreshLevel - 20) * 0.6;
    else if (ThreshLevel < 60)
        ModerateTargetLevel = (ThreshLevel - 16.5) * 0.6;
    else if (ThreshLevel < 80)
        ModerateTargetLevel = (ThreshLevel * 0.85) - 23;
    else if (ThreshLevel < 120)
        ModerateTargetLevel = 47;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       ModerateTargetLevel = ModerateTargetLevel - 10;
    else if (ThreshFreq = 6000)
       ModerateTargetLevel = ModerateTargetLevel - 23;
    else if (ThreshFreq = 8000)
       ModerateTargetLevel = ModerateTargetLevel - 28;
    end
end;

Loud Target

Loud Target Freq (Hz) Calculated Loud Target Level (dB) Threshold Cell Spreadsheet Formula
250 0.00 B3 =IF(B3⇐40; 0; (0.1*(B3-40)^1.4))
500 0.95 C3 =IF(C3⇐40; 0; (0.1*(C3-40)^1.4))
750 6.63 D3 =IF(D3⇐40; 0; (0.1*(D3-40)^1.4))
1000 9.10 E3 =IF(E3⇐40; 0; (0.1*(E3-40)^1.4))
1500 15.00 F3 =IF(F3⇐40; 0; (0.1*(F3-40)^1.4))
2000 15.00 G3 =IF(G3⇐40; 0; (0.1*(G3-40)^1.4))
3000 15.00 H3 =IF(H3⇐40; 0; (0.1*(H3-40)^1.4))
4000 5.00 I3 =IF(I3⇐40; 0; (0.1*(I3-40)^1.4)) - 10
6000 2.00 J3 =IF(J3⇐40; 0; (0.1*(J3-40)^1.4)) - 13
8000 6.00 K3 =IF(K3⇐40; 0; (0.1*(K3-40)^1.4)) - 18

At any Threshold frequency (e.g. Thresh Freq = 250Hz):

function GetLoudTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] LoudTargetLevel {dB})
begin
    // Get Loud Target Level
    if (ThreshLevel < = 40)
        LoudTargetLevel = 0;
    else 
        LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       LoudTargetLevel = LoudTargetLevel - 10;
    else if (ThreshFreq = 6000)
       LoudTargetLevel = LoudTargetLevel - 13;
    else if (ThreshFreq = 8000)
       LoudTargetLevel = LoudTargetLevel - 18;
    end
end;
CIC & Mini Canal Targets
Frequency (Hz) 250 500 750 1000 1500 2000 3000 4000 6000 8000
Threshold Level (dB) 75 75 75 80 85 95 90 95 90 90

<charter> title = CIC & Mini Canal size = 700×230 align = center bgcolor = #ffffff type = line dots = 3 XAxisName = Frequency (Hz) YAxisName = Gain (dB) legendEntries = Threshold, Soft Target, Moderate Target, Loud Target labelSerie = 5

75, 75, 75, 80, 85, 95, 90, 95, 90, 90 27, 27, 27, 29, 30, 31, 31, 21, 18, 13 21.97, 21.97, 21.97, 27, 27, 27, 27, 17, 14, 9 14.511, 14.511, 14.511, 17.494, 20.63, 25, 23.909, 15, 10.909, 5.9088 250, 500, 750, 1000, 1500, 2000, 3000, 4000, 6000, 8000 </charter>

Soft Target

Soft Target Freq (Hz) 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))))))
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))))))
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))))))
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))))))
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))))))
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))))))
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))))))
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
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
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

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetSoftTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] SoftTargetLevel {dB})
begin
    // Get Soft Target Level
    if (ThreshLevel < = 20)
        SoftTargetLevel = 0;
    else if (ThreshLevel = 25)
        SoftTargetLevel = 2;
    else if (ThreshLevel = 30)
        SoftTargetLevel = 4;
    else if (ThreshLevel < 60)
        SoftTargetLevel = (ThreshLevel - 25) / 1.65;
    else if (ThreshLevel < 90)
        SoftTargetLevel = (ThreshLevel - 22.5 - (0.5 * (ThreshLevel - 60))) / 1.65;
    else if (ThreshLevel < 120)
        SoftTargetLevel = 31;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       SoftTargetLevel = SoftTargetLevel - 10;
    else if (ThreshFreq = 6000)
       SoftTargetLevel = SoftTargetLevel - 13;
    else if (ThreshFreq = 8000)
       SoftTargetLevel = SoftTargetLevel - 18;
    end
end;

Moderate Target

Moderate Target Freq (Hz) Calculated Moderate Target Level (dB) Threshold Cell Spreadsheet Formula
250 21.97 B28 =(IF(B28⇐20;0; IF(B28<60; ( (B28-20)*0.6)/1.65; IF(B28<80; ( (B28*0.79)-23)/1.65; IF(B28<120;27)))))
500 21.97 C28 =(IF(C28⇐20;0; IF(C28<60; ( (C28-20)*0.6)/1.65; IF(C28<80; ( (C28*0.79)-23)/1.65; IF(C28<120;27)))))
750 21.97 D28 =(IF(D28⇐20;0; IF(D28<60; ( (D28-20)*0.6)/1.65; IF(D28<80; ( (D28*0.79)-23)/1.65; IF(D28<120;27)))))
1000 27.00 E28 =(IF(E28⇐20;0; IF(E28<60; ( (E28-20)*0.6)/1.65; IF(E28<80; ( (E28*0.79)-23)/1.65; IF(E28<120;27)))))
1500 27.00 F28 =(IF(F28⇐20;0; IF(F28<60; ( (F28-20)*0.6)/1.65; IF(F28<80; ( (F28*0.79)-23)/1.65; IF(F28<120;27)))))
2000 27.00 G28 =(IF(G28⇐20;0; IF(G28<60; ( (G28-20)*0.6)/1.65; IF(G28<80; ( (G28*0.79)-23)/1.65; IF(G28<120;27)))))
3000 27.00 H28 =(IF(H28⇐20;0; IF(H28<60; ( (H28-20)*0.6)/1.65; IF(H28<80; ( (H28*0.79)-23)/1.65; IF(H28<120;27)))))
4000 17.00 I28 =(IF(I28⇐20;0; IF(I28<60; ( (I28-20)*0.6)/1.65; IF(I28<80; ( (I28*0.79)-23)/1.65; IF(I28<120;27))))) - 10
6000 14.00 J28 =(IF(J28⇐20;0; IF(J28<60; ( (J28-20)*0.6)/1.65; IF(J28<80; ( (J28*0.79)-23)/1.65; IF(J28<120;27))))) - 13
8000 9.00 K28 =(IF(K28⇐20;0; IF(K28<60; ( (K28-20)*0.6)/1.65; IF(K28<80; ( (K28*0.79)-23)/1.65; IF(K28<120;27))))) - 18

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetModerateTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] ModerateTargetLevel {dB})
begin
    // Get Moderate Target Level
    if (ThreshLevel < = 20)
        ModerateTargetLevel = 0;
    else if (ThreshLevel < 60)
        ModerateTargetLevel = ((ThreshLevel - 20) * 0.6) / 1.65;
    else if (ThreshLevel < 80)
        ModerateTargetLevel = ((ThreshLevel * 0.79) - 23)) / 1.65;
    else if (ThreshLevel < 120)
        ModerateTargetLevel = 27;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       ModerateTargetLevel = ModerateTargetLevel - 10;
    else if (ThreshFreq = 6000)
       ModerateTargetLevel = ModerateTargetLevel - 13;
    else if (ThreshFreq = 8000)
       ModerateTargetLevel = ModerateTargetLevel - 18;
    end
end;

Loud Target

Loud Target Freq (Hz) Calculated Loud Target Level (dB) Threshold Cell Spreadsheet Formula
250 14.51 B28 =IF(B28⇐40;0; IF(B28<95; (0.1*(B28-40)^1.4); IF(B28<125;25)))
500 14.51 C28 =IF(C28⇐40;0; IF(C28<95; (0.1*(C28-40)^1.4); IF(C28<125;25)))
750 14.51 D28 =IF(D28⇐40;0; IF(D28<95; (0.1*(D28-40)^1.4); IF(D28<125;25)))
1000 17.49 E28 =IF(E28⇐40;0; IF(E28<95; (0.1*(E28-40)^1.4); IF(E28<125;25)))
1500 20.63 F28 =IF(F28⇐40;0; IF(F28<95; (0.1*(F28-40)^1.4); IF(F28<125;25)))
2000 25.00 G28 =IF(G28⇐40;0; IF(G28<95; (0.1*(G28-40)^1.4); IF(G28<125;25)))
3000 23.91 H28 =IF(H28⇐40;0; IF(H28<95; (0.1*(H28-40)^1.4); IF(H28<125;25)))
4000 15.00 I28 =IF(I28⇐40;0; IF(I28<95; (0.1*(I28-40)^1.4); IF(I28<125;25))) - 10
6000 10.91 J28 =IF(J28⇐40;0; IF(J28<95; (0.1*(J28-40)^1.4); IF(J28<125;25))) - 13
8000 5.91 K28 =IF(K28⇐40;0; IF(K28<95; (0.1*(K28-40)^1.4); IF(K28<125;25))) - 18

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetLoudTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] LoudTargetLevel {dB})
begin
    // Get Loud Target Level
    if (ThreshLevel < = 40)
        LoudTargetLevel = 0;
    else if (ThreshLevel < 95)
        LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));
    else if (ThreshLevel < 125)
        LoudTargetLevel = 25;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       LoudTargetLevel = LoudTargetLevel - 10;
    else if (ThreshFreq = 6000)
       LoudTargetLevel = LoudTargetLevel - 13;
    else if (ThreshFreq = 8000)
       LoudTargetLevel = LoudTargetLevel - 18;
    end
end;
Canal & Half Shell Targets
Frequency (Hz) 250 500 750 1000 1500 2000 3000 4000 6000 8000
Threshold Level (dB) 25 35 45 50 50 60 60 95 60 65

<charter> title = Canal & Half Shell size = 700×230 align = center bgcolor = #ffffff type = line dots = 3 XAxisName = Frequency (Hz) YAxisName = Gain (dB) legendEntries = Threshold, Soft Target, Moderate Target, Loud Target labelSerie = 5

25, 35, 45, 50, 50, 60, 60, 95, 60, 65 27, 27, 27, 29, 30, 31, 31, 21, 18, 13 3, 7, 14, 17, 17, 24.14, 24.14, 32, 11.14, 9.59 0, 0, 1, 3, 3, 7, 7, 17, -6, -9 250, 500, 750, 1000, 1500, 2000, 3000, 4000, 6000, 8000 </charter>

Soft Target

Soft Target Freq (Hz) Calculated Soft Target Level (dB) Threshold Cell Spreadsheet Formula
250 27 B59 =IF(B59⇐20;0; IF(B59=25;3; IF(B59=30;5; IF(B59<90; (B59-25)/1.45; IF(B59<120;42)))))
500 27 C59 =IF(C59⇐20;0; IF(C59=25;3; IF(C59=30;5; IF(C59<90; (C59-25)/1.45; IF(C59<120;42)))))
750 27 D59 =IF(D59⇐20;0; IF(D59=25;3; IF(D59=30;5; IF(D59<90; (D59-25)/1.45; IF(D59<120;42)))))
1000 29 E59 =IF(E59⇐20;0; IF(E59=25;3; IF(E59=30;5; IF(E59<90; (E59-25)/1.45; IF(E59<120;42)))))
1500 30 F59 =IF(F59⇐20;0; IF(F59=25;3; IF(F59=30;5; IF(F59<90; (F59-25)/1.45; IF(F59<120;42)))))
2000 31 G59 =IF(G59⇐20;0; IF(G59=25;3; IF(G59=30;5; IF(G59<90; (G59-25)/1.45; IF(G59<120;42)))))
3000 31 H59 =IF(H59⇐20;0; IF(H59=25;3; IF(H59=30;5; IF(H59<90; (H59-25)/1.45; IF(H59<120;42)))))
4000 21 I59 =IF(I59⇐20;0; IF(I59=25;3; IF(I59=30;5; IF(I59<90; (I59-25)/1.45; IF(I59<120;42))))) - 10
6000 18 J59 =IF(J59⇐20;0; IF(J59=25;3; IF(J59=30;5; IF(J59<90; (J59-25)/1.45; IF(J59<120;42))))) - 13
8000 13 K59 =IF(K59⇐20;0; IF(K59=25;3; IF(K59=30;5; IF(K59<90; (K59-25)/1.45; IF(K59<120;42))))) - 18

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetSoftTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] SoftTargetLevel {dB})
begin
    // Get Soft Target Level
    if (ThreshLevel < = 20)
        SoftTargetLevel = 0;
    else if (ThreshLevel = 25)
        SoftTargetLevel = 3;
    else if (ThreshLevel = 30)
        SoftTargetLevel = 5;
    else if (ThreshLevel < 90)
        SoftTargetLevel = (ThreshLevel - 25) / 1.45;
    else if (ThreshLevel < 120)
        SoftTargetLevel = 42;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       SoftTargetLevel = SoftTargetLevel - 10;
    else if (ThreshFreq = 6000)
       SoftTargetLevel = SoftTargetLevel - 13;
    else if (ThreshFreq = 8000)
       SoftTargetLevel = SoftTargetLevel - 18;
    end
end;

Moderate Target

Moderate Target Freq (Hz) Calculated Moderate Target Level (dB) Threshold Cell Spreadsheet Formula
250 3.00 B59 =IF(B59⇐20;0; IF(B59<90; ( (B59-20)*0.6)/1.45; IF(B59<120;32)))
500 7.00 C59 =IF(C59⇐20;0; IF(C59<90; ( (C59-20)*0.6)/1.45; IF(C59<120;32)))
750 14.00 D59 =IF(D59⇐20;0; IF(D59<90; ( (D59-20)*0.6)/1.45; IF(D59<120;32)))
1000 17.00 E59 =IF(E59⇐20;0; IF(E59<90; ( (E59-20)*0.6)/1.45; IF(E59<120;32)))
1500 17.00 F59 =IF(F59⇐20;0; IF(F59<90; ( (F59-20)*0.6)/1.45; IF(F59<120;32)))
2000 24.14 G59 =IF(G59⇐20;0; IF(G59<90; ( (G59-20)*0.6)/1.45; IF(G59<120;32)))
3000 24.14 H59 =IF(H59⇐20;0; IF(H59<90; ( (H59-20)*0.6)/1.45; IF(H59<120;32)))
4000 32.00 I59 =IF(I59⇐20;0; IF(I59<90; ( (I59-20)*0.6)/1.45; IF(I59<120;32))) - 10
6000 11.14 J59 =IF(J59⇐20;0; IF(J59<90; ( (J59-20)*0.6)/1.45; IF(J59<120;32))) - 13
8000 9.49 K59 =IF(K59⇐20;0; IF(K59<90; ( (K59-20)*0.6)/1.45; IF(K59<120;32))) - 18

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetModerateTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] ModerateTargetLevel {dB})
begin
    // Get Moderate Target Level
    if (ThreshLevel < = 20)
        ModerateTargetLevel = 0;
    else if (ThreshLevel < 90)
        ModerateTargetLevel = ((ThreshLevel - 20) * 0.6) / 1.45;
    else if (ThreshLevel < 120)
        ModerateTargetLevel = 32;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       ModerateTargetLevel = ModerateTargetLevel - 10;
    else if (ThreshFreq = 6000)
       ModerateTargetLevel = ModerateTargetLevel - 13;
    else if (ThreshFreq = 8000)
       ModerateTargetLevel = ModerateTargetLevel - 18;
    end
end;

Loud Target

Loud Target Freq (Hz) Calculated Loud Target Level (dB) Threshold Cell Spreadsheet Formula
250 0.00 B59 =IF(B59⇐40; 0; (0.1*(B59-40)^1.4))
500 0.00 C59 =IF(C59⇐40; 0; (0.1*(C59-40)^1.4))
750 1.00 D59 =IF(D59⇐40; 0; (0.1*(D59-40)^1.4))
1000 3.00 E59 =IF(E59⇐40; 0; (0.1*(E59-40)^1.4))
1500 3.00 F59 =IF(F59⇐40; 0; (0.1*(F59-40)^1.4))
2000 7.00 G59 =IF(G59⇐40; 0; (0.1*(G59-40)^1.4))
3000 7.00 H59 =IF(H59⇐40; 0; (0.1*(H59-40)^1.4))
4000 17.00 I59 =IF(I59⇐40; 0; (0.1*(I59-40)^1.4)) - 10
6000 -6.00 J59 =IF(J59⇐40; 0; (0.1*(J59-40)^1.4)) - 13
8000 -9.00 K59 =IF(K59⇐40; 0; (0.1*(K59-40)^1.4)) - 18

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetLoudTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] LoudTargetLevel {dB})
begin
 
    // Get Loud Target Level
    if (ThreshLevel < = 40)
        LoudTargetLevel = 0;
    else if (ThreshLevel < 125)
        LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       LoudTargetLevel = LoudTargetLevel - 10;
    else if (ThreshFreq = 6000)
       LoudTargetLevel = LoudTargetLevel - 13;
    else if (ThreshFreq = 8000)
       LoudTargetLevel = LoudTargetLevel - 18;
    end
end;
Super60 Targets
Frequency (Hz) 250 500 750 1000 1500 2000 3000 4000 6000 8000
Threshold Level (dB) 25 35 45 50 50 60 60 95 60 65

<charter> title = Super60 size = 700×230 align = center bgcolor = #ffffff type = line dots = 3 XAxisName = Frequency (Hz) YAxisName = Gain (dB) legendEntries = Threshold, Soft Target, Moderate Target, Loud Target labelSerie = 5

70, 70, 75, 80, 85, 105, 85, 90, 120, 90 42.5, 42.5, 45, 47.5, 50, 60, 50, 42.5, 47, 34.5 32.3, 32.3, 36.25, 40.2, 44.15, 59.95, 44.15, 38.1, 46, 30.1 11.69, 11.69, 14.51, 17.49, 20.63, 34.52, 20.63, 13.91, 33.17, 5.91 250, 500, 750, 1000, 1500, 2000, 3000, 4000, 6000, 8000 </charter>

Soft Target

Soft Target Freq (Hz) Calculated Soft Target Level (dB) Threshold Cell Spreadsheet Formula
250 42.5 B83 =IF(B83⇐20;0; IF(B83=25;3; IF(B83=30;6; IF(B83<60;(B83-25); IF(B83<110;(B83-22.5-0.5*(B83-60)); IF(B83<120;60))))))
500 42.5 C83 =IF(C83⇐20;0; IF(C83=25;3; IF(C83=30;6; IF(C83<60;(C83-25); IF(C83<110;(C83-22.5-0.5*(C83-60)); IF(C83<120;60))))))
750 45.0 D83 =IF(D83⇐20;0; IF(D83=25;3; IF(D83=30;6; IF(D83<60;(D83-25); IF(D83<110;(D83-22.5-0.5*(D83-60)); IF(D83<120;60))))))
1000 47.5 E83 =IF(E83⇐20;0; IF(E83=25;3; IF(E83=30;6; IF(E83<60;(E83-25); IF(E83<110;(E83-22.5-0.5*(E83-60)); IF(E83<120;60))))))
1500 50.0 F83 =IF(F83⇐20;0; IF(F83=25;3; IF(F83=30;6; IF(F83<60;(F83-25); IF(F83<110;(F83-22.5-0.5*(F83-60)); IF(F83<120;60))))))
2000 50.0 G83 =IF(G83⇐20;0; IF(G83=25;3; IF(G83=30;6; IF(G83<60;(G83-25); IF(G83<110;(G83-22.5-0.5*(G83-60)); IF(G83<120;60))))))
3000 50.0 H83 =IF(H83⇐20;0; IF(H83=25;3; IF(H83=30;6; IF(H83<60;(H83-25); IF(H83<110;(H83-22.5-0.5*(H83-60)); IF(H83<120;60))))))
4000 42.5 I83 =IF(I83⇐20;0; IF(I83=25;3; IF(I83=30;6; IF(I83<60;(I83-25); IF(I83<110;(I83-22.5-0.5*(I83-60)); IF(I83<120;60)))))) - 10
6000 47.0 J83 =IF(J83⇐20;0; IF(J83=25;3; IF(J83=30;6; IF(J83<60;(J83-25); IF(J83<110;(J83-22.5-0.5*(J83-60)); IF(J83<125;60)))))) - 13
8000 34.5 K83 =IF(K83⇐20;0; IF(K83=25;3; IF(K83=30;6; IF(K83<60;(K83-25); IF(K83<110;(K83-22.5-0.5*(K83-60)); IF(K83<120;60)))))) - 18

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetSoftTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] SoftTargetLevel {dB})
begin
    // Get Soft Target Level
    if (ThreshLevel < = 20)
        SoftTargetLevel = 0;
    else if (ThreshLevel = 25)
        SoftTargetLevel = 3;
    else if (ThreshLevel = 30)
        SoftTargetLevel = 6;
    else if (ThreshLevel < 60)
        SoftTargetLevel = (ThreshLevel - 25);
    else if (ThreshLevel < 110)
        SoftTargetLevel = (ThreshLevel - 22.5 - (0.5 * (ThreshLevel - 60)));
    else if (ThreshLevel < 120)
        SoftTargetLevel = 60;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       SoftTargetLevel = SoftTargetLevel - 10;
    else if (ThreshFreq = 6000)
       SoftTargetLevel = SoftTargetLevel - 13;
    else if (ThreshFreq = 8000)
       SoftTargetLevel = SoftTargetLevel - 18;
    end
end;

Moderate Target

Moderate Target Freq (Hz) Calculated Moderate Target Level (dB) Threshold Cell Spreadsheet Formula
250 32.30 B83 =IF(B83⇐20;0; IF(B83<60;(B83-20)*0.6; IF(B83<110;(B83*0.79)-23; IF(B83<120;59))))
500 32.30 C83 =IF(C83⇐20;0; IF(C83<60;(C83-20)*0.6; IF(C83<110;(C83*0.79)-23; IF(C83<120;59))))
750 36.25 D83 =IF(D83⇐20;0; IF(D83<60;(D83-20)*0.6; IF(D83<110;(D83*0.79)-23; IF(D83<120;59))))
1000 40.20 E83 =IF(E83⇐20;0; IF(E83<60;(E83-20)*0.6; IF(E83<110;(E83*0.79)-23; IF(E83<120;59))))
1500 44.15 F83 =IF(F83⇐20;0; IF(F83<60;(F83-20)*0.6; IF(F83<110;(F83*0.79)-23; IF(F83<120;59))))
2000 59.95 G83 =IF(G83⇐20;0; IF(G83<60;(G83-20)*0.6; IF(G83<110;(G83*0.79)-23; IF(G83<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
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
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

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME Missing a final else when getting Target Level. What value should that be?

function GetModerateTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] ModerateTargetLevel {dB})
begin
    // Get Moderate Target Level
    if (ThreshLevel < = 20)
        ModerateTargetLevel = 0;
    else if (ThreshLevel < 60)
        ModerateTargetLevel = ((ThreshLevel - 20) * 0.6);
    else if (ThreshLevel < 80)
        ModerateTargetLevel = ((ThreshLevel * 0.79) - 23);
    else if (ThreshLevel < 120)
        ModerateTargetLevel = 49;
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       ModerateTargetLevel = ModerateTargetLevel - 10;
    else if (ThreshFreq = 6000)
       ModerateTargetLevel = ModerateTargetLevel - 13;
    else if (ThreshFreq = 8000)
       ModerateTargetLevel = ModerateTargetLevel - 18;
    end
end;

Loud Target

LoudTargetLevel Target Freq (Hz) Calculated LoudTargetLevel Target Level (dB) Threshold Cell Spreadsheet Formula
250 11.69 B83 =IF(B83⇐40;0; (0.1*(B83-40)^1.4))
500 11.69 C83 =IF(C83⇐40;0; (0.1*(C83-40)^1.4))
750 14.51 D83 =IF(D83⇐40;0; (0.1*(D83-40)^1.4))
1000 17.49 E83 =IF(E83⇐40;0; (0.1*(E83-40)^1.4))
1500 20.63 F83 =IF(F83⇐40;0; (0.1*(F83-40)^1.4))
2000 34.52 G83 =IF(G83⇐40;0; (0.1*(G83-40)^1.4))
3000 20.63 H83 =IF(H83⇐40;0; (0.1*(H83-40)^1.4))
4000 13.91 I83 =IF(I83⇐40;0; (0.1*(I83-40)^1.4)) - 10
6000 33.17 J83 =IF(J83⇐40;0; (0.1*(J83-40)^1.4)) - 13
8000 5.91 K83 =IF(K83⇐40;0; (0.1*(K83-40)^1.4)) - 18

At any Threshold frequency (e.g. Thresh Freq = 250Hz):

function GetLoudTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] LoudTargetLevel {dB})
begin
    // Get Loud Target Level
    if (ThreshLevel < = 40)
        LoudTargetLevel = 0;
    else
        LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 4000)
       LoudTargetLevel = LoudTargetLevel - 10;
    else if (ThreshFreq = 6000)
       LoudTargetLevel = LoudTargetLevel - 13;
    else if (ThreshFreq = 8000)
       LoudTargetLevel = LoudTargetLevel - 18;
    end
end;
Over-The-Ear (OTE) Targets
Frequency (Hz) 250 500 750 1000 1500 2000 3000 4000 6000 8000
Threshold Level (dB) 10 35 35 40 40 50 105 105 95 80

<charter> title = Over-The-Ear (OTE) size = 700×230 align = center bgcolor = #ffffff type = line dots = 3 XAxisName = Frequency (Hz) YAxisName = Gain (dB) legendEntries = Threshold, Soft Target, Moderate Target, Loud Target labelSerie = 5

10, 35, 35, 40, 40, 50, 105, 105, 95, 80 0, 5, 5, 13.33, 13.33, 20, 40, 30, 20, 0 0, 2, 2, 10.33, 10.33, 17, 37, 27, 17, 0 0, 0, 0, 0, 0, 3, 32, 26, 11, 0 250, 500, 750, 1000, 1500, 2000, 3000, 4000, 6000, 8000 </charter>

Soft Target

Soft Target Freq (Hz) Calculated Soft Target Level (dB) Threshold Cell Spreadsheet Formula
250 0.00 B151 0
500 5.00 C151 =IF(C151>=60;20; IF(C151>=55; 15; IF(C151>=50; 12; IF(C151>=45;10; IF(C151>=40;7; IF(C151>=35;5; IF(C151>=30;2;0)))))))
750 5.00 D151 =IF(D151>=60;20; IF(D151>=55; 15; IF(D151>=50; 12; IF(D151>=45;10; IF(D151>=40;7; IF(D151>=35;5; IF(D151>=30;2;0)))))))
1000 13.33 E151 =IF(E151 <30; 0; IF(E151 <45; E151/3; IF(E151 <75; E151/2.5; IF(E151<125;30))))
1500 13.33 F151 =IF(F151 <30; 0; IF(F151 <45; F151/3; IF(F151 <75; F151/2.5; IF(F151<125;30))))
2000 20.00 G151 =IF(G151 <30; 0; IF(G151 <45; G151/3; IF(G151 <75; G151/2.5; IF(G151<125;30))))
3000 40.00 H151 =IF(H151⇐80;(H151/2); IF(H151<120; 40))
4000 30.00 I151 =IF(I151⇐70;(I151/2); IF(I151<120; 36)) - 6
6000 20.00 J151 =IF(J151⇐70;(J151/2); IF(J151<120; 36)) - 16
8000 0.00 K151 0

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?

function GetSoftTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] SoftTargetLevel {dB})
begin
  // Get Soft Target Level
  if ThreshFreq in [250, 8000] then
     LoudTargetLevel = 0;
  else if ThreshFreq in [500, 750] then
    if (ThreshLevel >= 60)
        SoftTargetLevel = 20;
    else if (ThreshLevel >= 55)
        SoftTargetLevel = 15;
    else if (ThreshLevel >= 50)
        SoftTargetLevel = 12;
    else if (ThreshLevel >= 45)
        SoftTargetLevel = 10;
    else if (ThreshLevel >= 40)
        SoftTargetLevel = 7;
    else if (ThreshLevel >= 35)
        SoftTargetLevel = 5;
    else if (ThreshLevel >= 30)
        SoftTargetLevel = 2;
    else
        SoftTargetLevel = 0;
    end
  else if ThreshFreq in [1000, 1500, 2000] then
    if (ThreshLevel < 30)
        ModerateTargetLevel = 0;
    else if (ThreshLevel < 45)
        ModerateTargetLevel = (ThreshLevel / 3);
    else if (ThreshLevel < 75)
        ModerateTargetLevel = (ThreshLevel / 2.5);
    else if (ThreshLevel < 125)
        ModerateTargetLevel = 30;
    end
  else if ThreshFreq in [3000, 4000, 6000] then
    if (ThreshLevel < 80)
        ModerateTargetLevel = (ThreshLevel / 2);
    else if (ThreshLevel < 120)
        ModerateTargetLevel = 40;
    end
  end
 
  // Add High Frequencies compensation
  if (ThreshFreq = 4000)
     SoftTargetLevel = SoftTargetLevel - 10;
  else if (ThreshFreq = 6000)
     SoftTargetLevel = SoftTargetLevel - 13;
  end
end;

Moderate Target

Moderate Target Freq (Hz) Calculated Moderate Target Level (dB) Threshold Cell Spreadsheet Formula
250 0.00 B151 0
500 2.00 C151 =IF(C151<35; 0; IF(C151>30; C152-3))
750 2.00 D151 =IF(D151<35; 0; IF(D151>30; D152-3))
1000 10.33 E151 =IF(E151<35; 0; IF(E151>30; E152-3))
1500 10.33 F151 =IF(F151<35; 0; IF(F151>30; F152-3))
2000 17.00 G151 =IF(G151<35; 0; IF(G151>30; G152-3))
3000 37.00 H151 =IF(H151<35; 0; IF(H151>30; H152-3))
4000 27.00 I151 =IF(I151<35; 0; IF(I151>30; I152-3))
6000 17.00 J151 =IF(J151<35; 0; IF(J151>30; J152-3))
8000 0.00 K151 0

At any Threshold frequency (e.g. Thresh Freq = 250Hz): FIXME There is overlap here ( < 35 or > 30 ?), so something needs to be corrected !!!

function GetModerateTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] ModerateTargetLevel {dB})
begin
  // Get Moderate Target Level
  if ThreshFreq in [250, 8000] then
     LoudTargetLevel = 0;
  else
    if (ThreshLevel < 35)
        ModerateTargetLevel = 0;
    else if (ThreshLevel > 30)  // FIXME There is overlap here, so something needs to be corrected !!!
        ModerateTargetLevel = (ThreshLevel - 3);
    end
  end
 
end;

Loud Target

Loud Target Freq (Hz) Calculated Loud Target Level (dB) Threshold Cell Spreadsheet Formula
250 0.00 B151 0
500 0.00 C151 =IF(C151⇐40; 0; (0.1*(C151-40)^1.4))
750 0.00 D151 =IF(D151⇐40; 0; (0.1*(D151-40)^1.4))
1000 0.00 E151 =IF(E151⇐40; 0; (0.1*(E151-40)^1.4))
1500 0.00 F151 =IF(F151⇐40; 0; (0.1*(F151-40)^1.4))
2000 3.00 G151 =IF(G151⇐40; 0; (0.1*(G151-40)^1.4))
3000 32.00 H151 =IF(H151>100; 32; IF(H151⇐40; 0; (0.1*(H151-40)^1.4)))
4000 26.00 I151 =IF(I151>100; 32; IF(I151⇐40; 0; (0.1*(I151-40)^1.4))) - 6
6000 11.00 J151 =IF(J151>100; 32; IF(J151⇐40; 0; (0.1*(J151-40)^1.4))) - 16
8000 0.00 K151 0

At any Threshold frequency (e.g. Thresh Freq = 250Hz):

function GetLoudTargetLevel([in] ThreshLevel {dB}, [in] ThreshFreq {Hz}, [out] LoudTargetLevel {dB})
begin
    // Get Loud Target Level
  if ThreshFreq in [250, 8000] then
     LoudTargetLevel = 0;
  else if ThreshFreq in [500, 750, 1000, 1500, 2000] then
    if (ThreshLevel < = 40)
        LoudTargetLevel = 0;
    else 
        LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));
    end
  else if ThreshFreq in [3000, 4000, 6000] then 
    else if (ThreshLevel > 100)
        LoudTargetLevel = 32;
    else if (ThreshLevel < = 40)
        LoudTargetLevel = 0;
    else
        LoudTargetLevel = (0.1 * power((ThreshLevel - 40) {base}, 1.4 {exponent}));
    end
    // Add High Frequencies compensation
    if (ThreshFreq = 6000)
       LoudTargetLevel = LoudTargetLevel - 6;
    else if (ThreshFreq = 8000)
       LoudTargetLevel = LoudTargetLevel - 16;
    end
end;
Notation
Abbreviation Term
AGC-o Automatic Gain Control (output)
Avg Average
BTE Behind-the-Ear instrument
Ch Channel
CR Compression Ratio
dB Decibels
Freq Frequency
HL Hearing Level (or Loss) as depicted in an Audiogram (aka HTL)
HTL Hearing Threshold Level as depicted in an Audiogram (aka HL)
Hz Hertz
kHz KiloHertz
MPO Maximum Power Output
OTE Other-the-Ear instrument
RIC Receiver-in-Canal instrument
SRT Speech Reception Threshold
TK Threshold Kneepoint
VC Volume Control
Archives