== 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%. --- //[[smayr@audina.net|Siegwart Mayr]] 2009/03/24 11:00// * Volume Control: if Digital VC present, set VC = 50% and VC Start Position = 50%. --- //[[smayr@audina.net|Siegwart Mayr]] 2009/07/07 12:20// NOTE: Moved this option to be executed before Defaults. --- //[[smayr@audina.net|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: {{ezfit:ezfit-autofit-overview.jpeg|}} === Normal (WDRC) === * Apply [[#Autofit_Defaults|Autofit Defaults]] * 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|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)) --- //[[smayr@audina.net|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|Calculate VC Range]] (if available) === AutoAdapt (if available) === Enable autofit on Half Shell and Full Shell products only, and having Adaptive Directional microphones: --- //[[jsudduth@audina.net|Jenny Sudduth]] 2008/09/08 12:50// * Perform [[#normal_wdrc|Normal (WDRC) autofit]] * Adaptive Directionality (AD) = Apply AD, first setting * [[#calculate_vc_range|Calculate VC Range]] (if available) === AGC-O === * Perform [[#linear|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 = -8dB --- //[[jsudduth@audina.net|Jenny Sudduth]] 2008/09/08 16:11// - Make all styles the same * Show Soft and Loud Targets only * [[#calculate_vc_range|Calculate VC Range]] (if available) === Linear === * Perform [[#normal_wdrc|Normal (WDRC) autofit]] * Compression Ratio = 1:1 (all channels) * Noise Reduction = Off (if available) * Show Soft Target only * [[#calculate_vc_range|Calculate VC Range]] (if available) === Restaurant/Party === * Perform [[#normal_wdrc|Normal (WDRC) autofit]]. * 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|Calculate VC Range]] (if available). === Telephone === * Perform [[#linear|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|Calculate VC Range]] (if available). * Set noise reduction to low (6db) === Music === * Perform [[#normal_wdrc|Normal (WDRC) autofit]] * 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|Calculate VC Range]] (if available) * Expansion off === Television === * Perform [[#normal_wdrc|Normal (WDRC) autofit]]. * Noise Reduction = Off (if available). * Equalizer = Increase 500Hz & 1kHz by 2dB. * Compression Ratio = Reduce all channels by 1 step. * [[#calculate_vc_range|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) --- //[[jsudduth@audina.net|Jenny Sudduth]] 2008/09/10 18:32// * If instrument has built-in directional mics (Sparo, SparoAD, InTune (except Intuition4+), Ethos), then: * Set Input = Cardioid by performing [[#restaurant_party|Restaurant/Party autofit]] * Bass boost = On (if available) (nVeAD, not turning On bass boost currently) --- //[[jsudduth@audina.net|Jenny Sudduth]] 2008/09/10 18:57// * Else if no built-in directional mics (Spin, Sparo2, DigitalOne4NRPlus, Intuition4+, Ethos), then: * Set Input = Omni Mic by performing [[#television|Television autofit]] * Bass boost = Off (if available) * 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|Calculate VC Range]] (if available) === Intense Noise === * Perform [[#normal_wdrc|Normal (WDRC) autofit]] * 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|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 == * [[ezfit:Autofit Environmental Algorithms Accurio|WDRC Autofit for Accurio]] (rev 2006-08-01)