ГЕОМЕТРИЯ ЗВУКА

Удивительно, но существуют строгие математические методы, которые в буквальном смысле позволяют услышать визуальные геометрические формы и наоборот узреть красоту музыкальных гармоний…

Исследования в этой области были вдохновлены математическими видео от канала »3Blue1Brown»:

Оказывается, с помощью преобразования Фурье можно кодировать векторные визуальные изображения высокой сложности, раскладывая их на гармонические составляющие на базе комплексных чисел-векторов, что наглядно продемонстрировано в вышеупомянутых видео, а сам алгоритм кодирования более подробно рассмотрен в роликах каналов «Mathologer» и «The Coding Train»:

Рисунок 1: изображения-портреты Жозефа Фурье, выполненные одним росчерком пера, который закодирован в различной детализации с помощью 10, 50 и 250 комплексных чисел-гармоник соответственно

Рисунок 1: изображения-портреты Жозефа Фурье, выполненные одним росчерком пера, который закодирован в различной детализации с помощью 10, 50 и 250 комплексных чисел-гармоник соответственно

Рисунок 2: скриншот из короткого видео процесса рисования

Больше примеров с другими изображениями можно найти по запросу «epicycle drawing Fourier transform».

Но также с помощью преобразования Фурье легко выделять гармонические составляющие из сигналов различной природы, например, акустических… Тут же возникают интригующие вопросы: что если применить представленный подход, но уже для исследования сигналов?

  • Как будет выглядеть звучание гитарной струны, других музыкальных инструментов, голоса, прочих звуков?

И наоборот

Чтобы детальнее раскрыть и исследовать эти таинственные вопросы, было решено на базе приложения для музыкального спектрального анализа SOLFEGGIO реализовать соответствующие модули визуализации…

На текущий момент доступны две ветви программы: десктопная для Windows [Microsoft Store, One Drive] и мобильная для Android [Google Play]. Функционально версии во многом схожи, но десктопная обычно чуть шустрее и удобнее для экспериментов, а также содержит дополнительный мощный модуль визуализации «Лента 3D», который отсутствует в мобильной.

Рисунок 3: визуализация идеального гармонического сигнала в мобильной версии (цветок)

Рисунок 3: визуализация идеального гармонического сигнала в мобильной версии (цветок)

Рисунок 4: визуализация акустического сигнала с микрофона в мобильной версии (цветок + спираль)

Рисунок 4: визуализация акустического сигнала с микрофона в мобильной версии (цветок + спираль)

Чтобы всерьёз узреть звуки, создать объёмные геометрические формы голосом и даже полетать в них, рекомендуется скачать приложение, освоить базовые навыки и поработать непосредственно с ним. Программа бесплатная для учебного и некоммерческого использования. В случае коммерческого применения необходимо совершить пожертвование произвольного размера (по совести).

Также нужно упомянуть, что приложение, исходные коды, результаты исследований и другие сопутствующие материалы предназначены для использования в мирных целях (детальнее смотреть соглашение).

КАК ПОЛЬЗОВАТЬСЯ ПРОГРАММОЙ?

Итак, теперь приступим к нашим исследованиям. Чтобы интуитивно понять, как же работают различные способы визуализаций, сначала рассмотрим единичный синусоидальный сигнал. Для этого:

  1. перейдём в раздел «Сигнал» и выберем профиль «Генератор»

  2. откроем раздел «Генератор» и выберем профиль «Камертон»

sin

Рисунок 5: синусоидальный тон

После выполнения этих шагов в динамиках должен зазвучать чистый синусоидальный тон заданной частоты (по умолчанию 440 Гц). На цветочной визуализации появится окружность, а на спиральной — архимедова спираль. Если поиграть с частотой тона, то будет меняться число витков спирали, значение амплитуды тона будет влиять на её радиус.

Теперь если на 3D-визуализации слегка улететь в строну, то можно обнаружить ленту-пружинку, вертикальная проекция которой на горизонтальную плоскость образует исходную синусоиду.

sin_3d

Рисунок 6: синусоидальный тон 3D

Тут нужно отметить запись на канале «Physics Videos by Eugene Khutoryansky», в которой рассмотрен этот же способ трёхмерной визуализации:

Если же к одиночному синусоидальному тону начать добавлять дополнительные синусоиды различной частоты и амплитуды, то на цветочной и спиральной визуализациях паттерны начнут существенно видоизменяться. Важно отметить: хотя лента-пружинка начнёт закручиваться причудливыми кружевными завитками (в зависимости от соотношений частот и амплитуд), но в трёхмерном представлении её проекция на горизонтальную плоскость по-прежнему будет соответствовать исходному временному кадру.

lace_3d

Рисунок 7: кружево 3D

Если смотреть на пружинки ровно с торца, то ортонормальная проекция будет представлять собой круговую цветочную геометрию (именно такой способ используется для рисования в видео канала »3Blue1Brown»), в то время как перспективная проекция будет образовывать спиральные формы.

Многообразие форм чрезвычайно велико (цветки, мандалы, барашки и многие другие), но что характерно: чистые гармонические музыкальные созвучия обычно образуют легко читаемые узоры… Также по этим узорам возможно различать тембральный окрас различных музыкальных инструментов и голосов, звучащих на одной ноте.

forms

Рисунок 8: формы

Интересно, что узоры могут иметь как статический, так и динамический характер, например: вращаться, пульсировать, завораживающе переливаться и перетекать.

КАК ЭТО РАБОТАЕТ?

В первом приближении алгоритм примерно следующий:

  • выделяется короткий кусочек аудиосигнала длительностью порядка 100 мс (временной кадр);

  • происходит поиск чистых синусоидальных тонов (частот) звучащих в сигнале, вычисляется их амплитуда и фазовый сдвиг с помощью преобразования Фурье;

  • после чего на основе этой информации происхдит постороение и отрисовка геометрии.

Но при детальном рассмотрении всё становится чуть сложнее: вычислительный дискретный алгоритм быстрого преобразования Фурье (БПФ) имеет некоторые особенности, которые затрудняют высокоточный анализ сигналов. Для устранения этих затруднений дополнительно применяется алгоритм фазо-амплитудной интерполяции (ФАИ), который более развёрнуто рассмотрен в статье ЗАГАДКИ БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ.

В основе финальных геометрических построений лежит следующий алгоритм на языке программирования C#:

	public class GeometryPresenter
	{
		public static IEnumerable Draw(
			IList peaks, int sampleSize, double sampleRate,
			double approximation = 1d, double spiralStep = 0d, double phaseAngle = 0d
			)
		{
			if (peaks.Count.Is(0))
				yield break;

			var spiralScale = 1d;
			var pointsCount = (int)(sampleSize / approximation);
			var convertToPhase = approximation * Pi.Double / sampleRate;

			for (var i = 0; i < pointsCount; i++, spiralScale -= spiralStep)
			{
				var a = 0d;
				var b = 0d;

				for (var j = 0; j < peaks.Count; j++)
				{
					var peak = peaks[j];
				//	var w = Pi.Double * peak.Frequency;
				//	var t = approximation * i / sampleRate;
					var wt = peak.Frequency * i * convertToPhase; // w * t
					var phase = peak.Phase + wt + phaseAngle;
					var magnitude = peak.Magnitude * spiralScale;

					a += magnitude * Math.Cos(phase);
					b += magnitude * Math.Sin(phase);
				}

				yield return new(a, b);
			}
		}
	}

Исходный код алгоритма трёхмерной визуализации доступен по ссылке.

ДЛЯ РАЗМЫШЛЕНИЙ

Хотя зачастую временные кадры сигналов представлены двумерно, преобразование Фурье позволяет развернуть их в трёхмерном пространстве и показать с недоступных ранее ракурсов, что даёт возможность рассмотреть скрытые причудливые геометрические паттерны-узоры и сопоставить им точный акустический эквивалент.

Это напоминает голографические снимки и стереоскопические картинки, когда плоские изображения при верном рассмотрении магическим образом обретают объём.

Также у фотоголограмм и временных кадров сигналов есть другое схожее свойсво: за счёт того, что каждый кусочек голограммы отчасти хранит информацию о всей сцене, при её разбиении (до некоторго предела) всё ещё можно в каждом отдельном кусочке рассмотреть исходную сцену, но уже с меньшего числа ракурсов. Словно при частичном завешивании окна в комнате по-прежнему остаётся видна картинка на улице, хотя чтобы её рассмотреть нужно подойти к окну ближе или немного сдвинуться в сторону. Подобным образом, при уменьшении размеров временного кадра сигнала, сохраняется возможность распознать всё с меньшей точность исходную «сцену» из гармоник.

ЗЕРКАЛА СТАТЬИ

EN: gitlab, habr

RU: gitlab, habr

ДОПОЛНИТЕЛЬНЫЕ МАТЕРИАЛЫ

© Habrahabr.ru