Контекст вопроса относится к звуку и психоакустике. Но сам вопрос связан с информацией и алгоритмами.
Сначала очень краткое описание контекста. Спектр ноты «нормального» музыкального инструмента состоит из
отдельных линий (гармоник), образующих арифметическую прогрессию по частоте
и спадающих примерно как ~1/f по амплитуде. («Нормальные» — это значит: не колокола, и даже не пан-флейта).
Несколько нот, взятые одновременно (аккорд), образуют «муаровый узор» гармоник:
Я разбираюсь с темой
консонанса/диссонанса, т.е. степени «приятности» звучания аккорда.
Есть несколько гипотез, как вид спектра влияет на консонанс.
Одна из них гораздо больше связана с информацией и алгоритмами, а не акустикой.
Утверждается, что один из способов, которым слуховая кора ( и тем более фронтальная)
анализирует звук —
когнитивный, т.е. спектр воспринимается как целое и мозг подбирает
«алгоритм описания» линейчатого узора.
Если этот алгоритм
прост, компактен, то аккорд воспринимается как
приятный, созвучный.
Если алгоритм получается «навороченный», то звук оценивается как немузыкальный,
некрасивый. Очевидно, речь идёт о т.н.
Колмогоровской сложности.
На уровне описания мне понравилась эта гипотеза. Но хотелось бы получить количественные оценки!
Можно упрощенно сказать, что для любых сложных звуков наш слух инстинктивно пытается подобрать
один тон.
Таким образом, можно попытаться оценить, насколько сложный узор аккорда «близок» к ряду гармоник одной ноты.
Проблема в том, что опыты показывают — основная частота «виртуальной ноты» может
вообще не принадлежать аккорду!
Вот тут я уже начал тормозить. И вопрос получается такой.
Есть набор данных вида { {f1, a1}, {f2, a2}, .....}, где f — частоты, а — амплитуды.
— Нужен алгоритм оценки, насколько этот набор близок к гармоническому { {f0, a0}, {2*f0, a0/2}, {3*f0, a0/3}, ....} с некоторой (заранее неизвестной) f0.
— Либо, количественная оценка
алгоритмической сложности исходного набора
Прошу прощения за некоторую сумбурность, готов уточнить детали.