Variable HRP_FAMILY_SEARCHConst
HRP_FAMILY_SEARCH: {
bass: { f0MaxHz: 400; f0MinHz: 25; maxVoices: 2 };
brass: { f0MaxHz: 1400; f0MinHz: 40; maxVoices: 2 };
drums: { f0MaxHz: 400; f0MinHz: 35; maxVoices: 1 };
guitar: { f0MaxHz: 1400; f0MinHz: 60; maxVoices: 6 };
keys: { f0MaxHz: 4200; f0MinHz: 27.5; maxVoices: 8 };
percussion: { f0MaxHz: 1200; f0MinHz: 60; maxVoices: 1 };
playback: { f0MaxHz: 2100; f0MinHz: 25; maxVoices: 8 };
strings: { f0MaxHz: 2800; f0MinHz: 40; maxVoices: 8 };
vocals: { f0MaxHz: 1200; f0MinHz: 80; maxVoices: 2 };
wind: { f0MaxHz: 2600; f0MinHz: 55; maxVoices: 2 };
} = ...
Type Declaration
-
Readonlybass: { f0MaxHz: 400; f0MinHz: 25; maxVoices: 2 }
-
Readonlybrass: { f0MaxHz: 1400; f0MinHz: 40; maxVoices: 2 }
-
Readonlydrums: { f0MaxHz: 400; f0MinHz: 35; maxVoices: 1 }
-
Readonlyguitar: { f0MaxHz: 1400; f0MinHz: 60; maxVoices: 6 }
-
Readonlykeys: { f0MaxHz: 4200; f0MinHz: 27.5; maxVoices: 8 }
-
Readonlypercussion: { f0MaxHz: 1200; f0MinHz: 60; maxVoices: 1 }
-
Readonlyplayback: { f0MaxHz: 2100; f0MinHz: 25; maxVoices: 8 }
-
Readonlystrings: { f0MaxHz: 2800; f0MinHz: 40; maxVoices: 8 }
-
Readonlyvocals: { f0MaxHz: 1200; f0MinHz: 80; maxVoices: 2 }
-
Readonlywind: { f0MaxHz: 2600; f0MinHz: 55; maxVoices: 2 }
WHAT AN INSTRUMENT FAMILY IMPLIES ABOUT THE SEARCH — one entry per InstrumentFamily, total by construction (
satisfies Record<…>, so a new family cannot be added without an entry) and asserted total against INSTRUMENT_FAMILIES by the ratchet inhrp-family-search.test.ts.The family is a BROAD PRIOR, never an identification (§16: strings is not violin). Every number below is therefore the widest the family can be, not the typical one — the cost of a range that is too narrow is a note the detector cannot see at all, and the cost of one slightly too wide is a few more sweep steps.
The voice count is what the family can SOUND AT ONCE, which is the number the corrections are budgeted against. Where an entry does not name a
minConfidence, none is narrowed: see hrpSearchFor.