Autofit and Environmental Algorithms

Rev 2009-03-24

Support Routines

Autofit Defaults

  • Instrument Parameters = Default (all)
  • Equalizers = Midpoint
    • if Open Fit, then
      • Equalizer@200Hz = Lowest
      • Equalizer@500Hz = 2 or 3 steps higher than Equalizer@200Hz
      • Remaining Equalizers = Midpoint
      • Equalizers = Midpoint
    • else Equalizers = Midpoint
    • if Open Fit (OTE, RIC) with OTE Thin Tube or RIC Open, then
      • Equalizer@200Hz = 25% of maximum
      • Equalizer@500Hz = 25% of maximum
      • Remaining Equalizers = Midpoint
      • Equalizers = Midpoint
    • else Equalizers = Midpoint
  • Low and High Cut Corners = Off (if available)
  • Compression TK = 50dB (all channels)
  • Expansion (Ratio) = Enabled (if available)
  • Expansion TK = Off/Minimum in all channels (if available)
  • Time Constants = Reach, or as specified in DLL library
  • MPO (AGC-o) = Off (all channels)
  • Input = Omnidirectional Mic
  • Bass Boost: Off (if available)
  • Power-on Delay = Shortest setting (if available)
  • Power-on Level = Normal (muted) (if available)
  • Noise Generator = Off (if available)
  • Adaptive Feedback Canceller = On (if available)
  • Adaptive Noise Reduction = Off (if available)
  • Adaptive Directionality = Off (if available)
  • Datalogging = Off Enabled (if available)
  • Volume Control: if Digital VC present, set VC = 50%. — Siegwart Mayr 2009/03/24 11:00
  • Volume Control: if Digital VC present, set VC = 50% and VC Start Position = 50%. — Siegwart Mayr 2009/07/07 12:20 NOTE: Moved this option to be executed before Defaults. — Siegwart Mayr 2009/07/13 12:03

Calculate VC Range

  • Calculate Avg Soft Gain = (SoftGain@500Hz + SoftGain@1000Hz + SoftGain@2000Hz + SoftGain@3000Hz) div 4

Rev 1 calculation:

^ Soft Gain (Response) ^ VC Range ^ | 50dB - 120dB | 40dB | | 40dB - 49dB | 30dB | | 0dB - 39dB | 10dB |

* if avg Soft Gain (Response) > = 50dB, then VC Range = 40dB * else if avg Soft Gain (Response) > = 40dB, then VC Range = 30dB * else VC Range = 10dB

Rev 2 calculation:

Soft Gain (Response) VC Range
41dB - 120dB 40dB
31dB - 40dB 30dB
21dB - 30dB 20dB
0dB - 20dB 10dB
  • if Avg Soft Gain (Response) > = 60dB, then VC Range = 50dB
  • else if Avg Soft Gain (Response) > 40dB, then VC Range = 40dB
  • if Avg Soft Gain (Response) > 40dB, then VC Range = 40dB
  • else if Avg Soft Gain (Response) > 30dB, then VC Range = 30dB
  • else if Avg Soft Gain (Response) > 20dB, then VC Range = 20dB
  • else VC Range = 10dB

Rev 3 (2009-07-10) calculation:

^ Soft Target ^ VC Range ^ | 41dB - 120dB | 40dB | | 31dB - 40dB | 30dB | | 21dB - 30dB | 20dB | | 0dB - 20dB | 10dB |

* if Avg Soft Target > 40dB, then VC Range = 40dB * else if Avg Soft Target > 30dB, then VC Range = 30dB * else if Avg Soft Target > 20dB, then VC Range = 20dB * else VC Range = 10dB

NOTE: Using Soft Target (as opposed to Soft Response Gain) allows using a stable reference for calculating the VC Range before running an Autofit. Using the Soft Response Gain requires performing an Autofit first (to obtain the response curves), and then calculating the VC Range based on those curves. The problem that emerges from the latter is when the VC Range modifies the response curves. In Intricon products, the response curve is kept in the middle of the VC Range. So for a 20 dB range, the response curve has +10 dB and - 10 dB. For a 50 dB range, it gets modified to have +25 dB and -25 dB, but the response curve is changed as well, no longer matching the autofitted response curve.

Match 3kHz or Appropriate Peak

Formula for matching 3kHz or appropriate peak. In summary:

  • Avg Hearing Threshold Level = ( (HearingLossThreshold@500Hz + HearingLossThreshold@1000Hz + HearingLossThreshold@2000Hz + HearingLossThreshold@3000Hz ) div 4)
  • if (Gain@3kHz - avg Hearing Threshold Level ) >= Gain@Peak - avg Hearing Threshold Level), then:
    • Adjust Gain Control / Volume Control to match Soft Target at 3000Hz.
  • else
    • match Gain Control / Volume Control to frequency with peak gain.
    • match equalizer frequencies to Soft Target from 5.2 - 7.2 kHz range up to midpoint (i.e. if frequency is matched at greater than midpoint, reset it to midpoint).

Example code:

 EqMax       := NzBase.GetParamMax('BEQ1_gain');
 TargetCurve := sdSoft;
 
 Case TargetCurve of
   sdSoft:     TargetCurveValue := 40;
   sdModerate: TargetCurveValue := 60;
   else        TargetCurveValue := 80;
 end;
 
 // Adjust GC/VC to match Soft target at 3000 Hz.
 // However, if HearingLossThreshold at 500Hz > HearingLossThreshold at 1000Hz, 
//  and HearingLossThreshold at 1000Hz > HearingLossThreshold at 2000Hz, skip
 // {if (Audiogram.Values[fq500]  <= Audiogram.Values[fq1000]) or
 //    (Audiogram.Values[fq1000] <= Audiogram.Values[fq2000]) then}
 
 // Get frequency of peak gain
 HighestFreq := fq3000;
 if Audiogram.Values[HighestFreq] < Audiogram.Values[fq2000] then HighestFreq := fq2000;
 if Audiogram.Values[HighestFreq] < Audiogram.Values[fq1000] then HighestFreq := fq1000;
 if Audiogram.Values[HighestFreq] < Audiogram.Values[fq500]  then HighestFreq := fq500;
 
 // Get avg HearingLossThreshold 
 AvgThres := (Audiogram.Values[fq500]  + Audiogram.Values[fq1000] +
              Audiogram.Values[fq2000] + Audiogram.Values[fq3000]) div 4;
 
 // compare avg HearingLossThreshold to audiogram values at 3kHz and Peak frequency
 if (Audiogram.Values[fq3000]-AvgThres) >= (Audiogram.Values[HighestFreq]-AvgThres) then begin
     // if freq3000 contains peak, we simply adjust GC/VC to match Soft Target at 3000 Hz.
     AdjustParam(TargetCurve, 'matrix_gain', 0, 47, 1, 47 {2.997kHz}, TargetCurveValue);
 end else begin
     // if frequencies other than freq3000 contains peak gain,   
     // we adjust GC/VC to match Soft Target at that other frequency.
     Case HighestFreq of
        fq500 : AdjustParam(TargetCurve, 'matrix_gain', 0, 47, 1, 16 {500Hz},  TargetCurveValue);
        fq1000: AdjustParam(TargetCurve, 'matrix_gain', 0, 47, 1, 28 {1000Hz}, TargetCurveValue);
        fq2000: AdjustParam(TargetCurve, 'matrix_gain', 0, 47, 1, 40 {2000Hz}, TargetCurveValue);
     end;
     // Match equalizers frequencies to Soft Target from 5.2 - 7.2 kHz.
     SetParamValue('BEQ10_gain', FindBestMatch(TargetCurve, 'BEQ10_gain', 0, EqMax, 57 {5339Hz}, TargetCurveValue), False);  // 5.2 kHz
     SetParamValue('BEQ11_gain', FindBestMatch(TargetCurve, 'BEQ11_gain', 0, EqMax, 60 {6350Hz}, TargetCurveValue), False);  // 6.5 kHz
     SetParamValue('BEQ12_gain', FindBestMatch(TargetCurve, 'BEQ12_gain', 0, EqMax, 62 {7127Hz}, TargetCurveValue), False);  // 7.2 kHz
 end;
Main Algorithms

Autofit routine dependencies:

  • Normal (WDRC) autofit ⇒ Autofit Defaults
  • Normal (WDRC) autofit ⇒ Calculate VC Range
  • Normal (WDRC) autofit ⇒ Match 3kHz or appropriate peak

Autofit dependency overview:

Normal (WDRC)

  • Turn on mute (if available)
  • Adjust compression ratios in each channel based on the following rules based on the audiometric thresholds 500Hz, 1kHz, 2kHz, 3kHz, & 4kHz:
    • if HearingThresholdLevel < = 35dB, then CR = 1:1
    • else if HearingThresholdLevel < = 40dB, then CR = 1.11:1 (or closest value)
    • else if HearingThresholdLevel < = 45dB, then CR = 1.18:1 (or closest value)
    • else if HearingThresholdLevel < = 50dB, then CR = 1.33:1 (or closest value)
    • else if HearingThresholdLevel < = 55dB, then CR = 1.43:1 (or closest value)
    • else if HearingThresholdLevel < = 60dB, then CR = 1.54:1 (or closest value)
    • else if HearingThresholdLevel < = 65dB, then CR = 1.67:1 (or closest value)
    • else if HearingThresholdLevel > 65dB, then CR = 1.82:1 (or closest value)
  • Adjust overall Gain to match Soft Gain to Soft Target at 3kHz. If not OTE or RIC style instrument, then use formula to match 3kHz or appropriate peak.
  • Equalizer
    • Match all Soft Gain frequencies to Soft Target, from 3kHz and below (except OTE with Tubing Type ⇒ OTE Thin Tube, or RIC with Vent Type ⇒ RIC Open) (NOTE: The OTE exception is no longer necessary since the introduction of REAR adjustments to avoid negative gain in low frequencies (following Steve Armstrong's algorithm)) — Siegwart Mayr 2009/03/13 10:50
    • Equalizer = Reduce 200Hz & 500Hz by 2dB
    • Equalizer for OTE with Tubing Type ⇒ OTE Thin Tube, or RIC with Vent Type ⇒ RIC Open = Reduce 1.0kHz, 4.2kHz, & 5.2kHz by 4dB.
    • Match all Soft Gain frequencies to Soft Target from 3.5kHz to 4.2kHz
  • Noise Reduction = On at minimum
  • Calculate VC Range (if available)

AutoAdapt (if available)

Enable autofit on Half Shell and Full Shell products only, and having Adaptive Directional microphones: — Jenny Sudduth 2008/09/08 12:50

AGC-O

  • Perform Linear autofit
  • Custom Settings:
    • All except DigitalOne4AFC (ClariD) and Spin: if Hearing Threshold Level at 1kHz < 30dB, set Noise Reduction at Low (8db), else set at Off (Default for Linear autofit)
    • DigitalOne4AFC (ClariD): if Hearing Threshold Level at 1kHz < 30dB, set Expansion to 40dB, else set to Off (Default for Linear autofit)
  • Set MPO (AGC-o) in all channels as follows:
    • If Hearing Loss Threshold at 1kHz < 20dB, then MPO = -12dB or closest value
    • If Hearing Loss Threshold at 1kHz > 20dB and < 50dB, then MPO = -8dB or closest value
    • If Hearing Loss Threshold at 1kHz > = 50dB, then MPO = -4dB or closest value

* Custom Settings: * Sparo, SparoAD (all Open Fit perhaps?): MPO = -8dBJenny Sudduth 2008/09/08 16:11 - Make all styles the same

Linear

Restaurant/Party

  • Prompt for Directional Mics (if Half Shell or Full Shell), or detect whether instrument has built-in Directional Mics.
  • If answer is No to directional mics, or not a Half Shell or Full Shell, then:
    • Compression Ratio = Increase by 1 step (next setting above) in first half of channels.
    • Equalizer = Reduce 200Hz & 500Hz by 4dB.
    • Gain = Reduce by 2dB.
    • Noise Reduction = Medium setting.
  • Else if answer is Yes to Directional Mics, then:
    • Input = Cardioid/Directional.
    • Noise Reduction = Medium setting.
    • Custom Settings:
      • Sparo, SparoAD, nVe4, nVeAD, Flx (all Open Fit perhaps?):
        • Equalizer = Match all frequencies to Soft Target from 2.5 kHz - 4.2 kHz.
        • Gain = Reduce by 2dB.
  • Calculate VC Range (if available).

Telephone

  • Perform Linear autofit.
  • Equalizer = Set 4.2kHz & above to minimum.
  • Equalizer = Set 200Hz & 500Hz to minimum.
  • Prompt for Telecoil, or detect it (do not prompt) when using:
    • RIC or BTE style instruments. These have it built-in. Answer = Yes.
    • CIC or MiniCanal style instruments. These cannot support a Telecoil. Answer = No.
  • If answer is Yes to Telecoil, then:
    • Input = Telecoil.
  • Else if answer is No to Telecoil, then:
    • Input = Omni-directional Mic.
    • Gain = Reduce by 3 dB.
    • Equalizer = Reduce 3kHz by 4 dB (2 steps).
  • Show Soft Target only.
  • Calculate VC Range (if available).
  • Set noise reduction to low (6db)

Music

  • Compression Ratio = 1.5:1 or closest value (all channels)
  • Gain = Reduce by 4 dB
  • Noise Reduction = Off (if available)
  • Adaptive Feedback Canceler = Off (if available)
  • Equalizer = Increase 200Hz, 500Hz, & 1kHz by 2 dB
  • Calculate VC Range (if available)
  • Expansion off

Television

  • Noise Reduction = Off (if available).
  • Equalizer = Increase 500Hz & 1kHz by 2dB.
  • Compression Ratio = Reduce all channels by 1 step.
  • Calculate VC Range (if available).

Theatre/Place of Worship

  • Detect whether using directional mics (read code in scratch memory). (Currently prompting for directional mics but should not) — Jenny Sudduth 2008/09/10 18:32
  • If instrument has built-in directional mics (Sparo, SparoAD, InTune (except Intuition4+), Ethos), then:
  • Else if no built-in directional mics (Spin, Sparo2, DigitalOne4NRPlus, Intuition4+, Ethos), then:
  • Noise Reduction = Low setting (if available, else Expansion TK = 40dB)
  • Custom Settings:
    • Sparo, SparoAD:
      • Noise Reduction = Low setting (if available) (redundant with Restaurant/Party autofit)
      • Input = Cardioid (redundant with Restaurant/Party autofit)
    • Intuition4+, Ethos: Bass boost = Off (if available)
    • InTune (except Intuition4+): Bass boost = On (if available)
    • All except Intuition4+:
      • Equalizer: Increase 500 Hz & 1 kHz by 2 dB.
      • Compression: Reduce Compression Ratio in Ch. 2 & 3 by 2 steps (Ethos: Ch. 3 - 6).
  • Calculate VC Range (if available)

Intense Noise

  • Prompt for Directional Mics (if Half Shell or Full Shell), or detect if available built-in (Sparo, Sparo AD, Sparo 8, Intuition 4AD, nVeAD, Flx)
  • If answer is Yes to Directional Mics, then:
    • Gain = Reduce by 2 dB
    • Input = Hypercardioid/Directional
    • Noise Reduction = Highest setting
  • Else if answer is No to Directional Mics, then:
    • Equalizer = Reduce 200Hz & 500Hz by 4dB.
    • Gain = Reduce by 4 dB
    • Compression Ratio = Increase first half of channels by 3 steps
    • Compression Ratio = Increase last half of channels by 2 steps
  • MPO (AGC-o) = Midpoint (all channels)
  • Noise Reduction = High (if available)
  • Custom Settings:
    • Sparo, SparoAD, nVe4, nVeAD, Flx:
      • Equalizer = Match all frequencies to Soft Target from 2 kHz - 4.2 kHz
      • Reduce overall Gain by 4 dB
  • Calculate VC Range (if available)
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