Круговой визуализатор спектра

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Круговой визуализатор спектра

Сообщение The trick » 27.03.2014 (Чт) 3:05

http://youtu.be/h9qteZBkwww
Представляю исходный код и скомпилированную программу графического визуализатора звукового спектра. Звук анализируется через стандартное устройство записи Windows, т.е. можно выбрать микрофон и просматривать спектр с него, либо выбрать стереомикшер и просматривать спектр воспроизводимого звука. В данном визуализаторе имеется возможность регулировки количества отображаемых октав, регулировка прозрачности фона, усиления. Также имеется возможность загрузки палитры из внешних файлов формата PNG в формате 32ARGB, эффекты затухания "размытие" и "горение". Данный визуализатор позволяет просматривать спектр в двух режимах, в виде дуг (колец) и в виде секторов. В первом виде радиальная координата отвечает за частоту по октавам, угловая - между октавами. Гармоники отстоящие от друг друга на октавы, находятся по одну линию, цвет - интенсивность. Во втором режиме, радиальная координата - уровень громкости, цвет - частота, угловая координата - частота (период - 1 октава). Данную идею мне предложил Хакер ,только в его задумке немного по другому должен был отображаться спектр в виде кривой, я сделал в виде секторов.
Изображение
У вас нет доступа для просмотра вложений в этом сообщении.
UA6527P

alibek
Большой Человек
Большой Человек
 
Сообщения: 14092
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Круговой визуализатор спектра

Сообщение alibek » 29.03.2014 (Сб) 11:04

Симпатично.
Коэффициенты и шаги на глаз подбирал или в нотам/октавам привязывал?
Lasciate ogni speranza, voi ch'entrate.

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Круговой визуализатор спектра

Сообщение The trick » 29.03.2014 (Сб) 11:58

alibek писал(а):Симпатично.
Коэффициенты и шаги на глаз подбирал или в нотам/октавам привязывал?

Размер FFT - 2048 что соответствует 10 октавам. Центральный круг - 1-я гармоника соответствует при частоте дискретизации 44100 ~ 21.53 гц, относительно этой частоты считаются октавы, т.е. 2 - октава, уже 2 полукруга (43,06640625;64,599609375), 3 - я, 4 дуги ... и т.д. до 1024 отсчета - 10 октав (максимум). Получается что одни и те же ноты расположенные на разных октавах расположены в одну линию.
UA6527P

alibek
Большой Человек
Большой Человек
 
Сообщения: 14092
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Круговой визуализатор спектра

Сообщение alibek » 29.03.2014 (Сб) 12:11

На картинках видна черная вертикальная линия по центру.
Это специально? Или из-за округлений?
Если специально, то мне кажется неудачным выбором.
Нужно или сегментировать больше (скажем делить круг на 12 частей) или вообще не сегментировать.
Lasciate ogni speranza, voi ch'entrate.

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Круговой визуализатор спектра

Сообщение The trick » 29.03.2014 (Сб) 12:18

alibek писал(а):На картинках видна черная вертикальная линия по центру.
Это специально? Или из-за округлений?
Если специально, то мне кажется неудачным выбором.
Нужно или сегментировать больше (скажем делить круг на 12 частей) или вообще не сегментировать.

Это при симметричном отображении, т.е. справа и слева одно и тоже. Я оставил, но можно убрать, заменив угол в CreateMap
UA6527P

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 3769
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Круговой визуализатор спектра

Сообщение Mikle » 29.03.2014 (Сб) 15:45

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

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 29.03.2014 (Сб) 15:46

Да подождите вы :oops:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 3769
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Круговой визуализатор спектра

Сообщение Mikle » 29.03.2014 (Сб) 15:53

Хакер писал(а):Да подождите вы

Мы и так ждём с нетерпением, а пока болтаем, чтоб не скучать :)

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Круговой визуализатор спектра

Сообщение The trick » 29.03.2014 (Сб) 16:57

Mikle писал(а):Поэкспериментировал, частота звука задаёт не центр, а начало дуги сектора, поэтому одна и та же нота в разных октавах получается не строго вдоль одной линии.
Ну да - начало дуги задает индекс в массиве, а как по-другому? Просто если делать выравнивание нот по центру, то уже будет не круг. Ноты получаются вдоль линии начал дуг.
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 29.03.2014 (Сб) 20:32

.
.
Увы, но мне пока не нравится.

Придётся мне сделать небольшой экскурс в устройство звука, музыки и суть моей идеи.

Не буду рассказывать, что любой звуковой сигнал (а в общем случае — вообще любой сиганл, вовсе не обязательно звуковой) можно разложить на составляющие (сумму синусоид) и на основе этого получить спектр сигнала.

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

Как, например, число Пи. Никто не придумывал число Пи в том смысле, что никто не размышлял в стиле «я обдумал много вариантов и выбираю этот». Само по себе число не изобретено кем-либо, а является общемировой истиной. Его значение не зависит от чьего-либо авторитетного мнения, не меняется с ходом времени. Его значение существовало до возникновения человека, будет существовать после исчезновения человека, и в целом, может существовать без существования самого человека. Единственное, что сделал человек: это нашёл закономерность между длиной окружности и диаметром, понял, что соотношение всегда одинаково и дал этому числу название. Мог дать другое название. Каждый человек мог дать своё название. Название могло бы быть дано на 1000 лет раньше или позже. Но само число от этого никак не меняется. Оно само и связанная с ним закономерность существует вне зависимости от наличия от названия и того, известна ли кому эта закономерность.

Аналогичным образом дело обстоит с октавой. Октава — это превосходство в два раза. Превосходство частоты чего-то, например частоты сигнала. «На октаву выше» означает, что один частота одного сигнала больше частоты другого ровно в два раза. «На октаву ниже» — значит в два раза меньше.
Изображение
(голубой сигнал на 1 октаву выше желтого)

Люди просто обнаружили особое свойство такого сочетания частот (при таком сочетании частот периоды колебаний оказываются кратными, причём наступление у обоих сигналов одной фазы происходит максимально часто (для соотношения частот 1:2 мы имеем минимальный НОК для периодов колебаний)) и решили такое сочетание частот как-то назвать. И назвали октавой. На самом деле, история несколько упрощена, и в слове октава мы можете найти латинский корень oct, который означает число 8, но это всё несущественные детали.

Итак, октава — это соотношение частот как 1:2. Если одна частота будет в 8 раз больше другой, то она будет выше «на три октавы». Синусоидальный сигнал с частотой 5 герц (который вы даже не услышите, ибо это инфразвук) на семь октав ниже, чем тот же синус 640 Гц. А синусоидальный сигнал с частотой 666 Гц на одну октаву выше, чем синусоидальный сигнал частотой 333 Гц.

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

Как и в случае с децибелами, здесь всё крутится вокруг логарифмической шкалы: если какие-либо величины отмечать точками на шкале с линейным масштабом, то расстояние между двумя любыми точками будут пропорционально тому на сколько одна больше другой, в то время, как если те же величины отмечать точками на шкале с логарифмическим масштабом — расстояние между любыми двумя точками будет пропорционально тому, во сколько раз одна величина больше другой.

Если f1 на n октав выше, чем f2, значит f1 = f2 × 2n

Как вы понимаете, показатель степени не обязательно должен быть целым, поэтому интервал между двумя тонами не обязан измеряться целым числом октав. Синусоидальный сигнал частотой 200 Гц на две октавы выше, чем сигнал 50 Гц, но на 1.5 октавы ниже, чем сигнал 565.7 Гц.
Изображение

Обратное:
Если два тона имеют частоты f1 и f2, значит интервал между ними в октавах: n = log2(f2) – log2(f1) = log2(f2 / f1)

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


Дальше начинается царство соглашений.

Музыка родилась для человечества раньше многих вещей, раньше письменности, может быть даже раньше речи. Первоначально человечество для звукоизвлечения пользовалось тем, что под рукой, через какое-то время люди начали конструировать инструменты в соответствии со своими требованиями. Отбросим инструменты, которые издают всевозможные шумы, то есть звуки, спектр которых состоит из конкретных «томов», а из огромного множества элементарных составляющих всех возможных частот.

Возьмём самый просто пример: пень с щепкой.
Изображение
(кадр из мультфильма «Вершки и корешки»)

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

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

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

Частота таких колебаний может быть относительно легко вычислена, и допустим, мы её назовём f0.

Однако, ключевой факт номер 1 состоит в том, что в силу явления резонанса, в щепке возникают не только колебания с частотой fr, но и колебания на частотах, кратных fr.

И получается, что колебания щепки составляют суперпозицию колебаний на частотах f0, 2·f0, 3·f0, 4·f0, ... k·f0

Синусоидальные колебания на частоте f0 называются основным тоном, а колебания на более высоких кратных частотах — обертонами. Собственно, «обер» — это немецкое «над», точно такое же, как английское over. (Существует так же термин, унтертоны — смысл слова, я думаю, понятен по аналогии)

Именно наличие обертонов даёт щепке характерное звучание; именно в силу наличия обертонов щепка не звучит как одиночные синусоидальные колебания на определённой частоте.

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

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

Горизонтальная ось — частоты, вертикальная — интенсивность соответствующих колебаний. Шкала по горизонтали — логарифмическая. Цена горизонтального деления — сначала 100 Гц, затем 1000 Гц.

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

Это же относится к такому инструменту как человеческий голос.

Спектрограмма человеческого голоса:
Изображение
Горизонтальная ось — время, линейный масштаб. Вертикальная ось — частота, логарифмический масштаб.

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



Итак, если у вас есть пень с щепкой, вы можете сыграть на нём определённый ритм, но вы не можете сыграть какую-либо мелодию, потому что пень с щепкой всё время издаёт тон одной и той же высоты (частота основного тона, а значит и частоты всех обертонов, все время одни и те же). С учётом того, что человеческий голос позволяет менять высоту тона и издавать любые тона из некоторого диапазона, понятно, что человеку хотелось иметь инструмент, способный издавать более чем одну ноту. Поэтому такие инструменты были созданы.

Не важно, каким интерфейсом обладает интерфейс: клавиши ли, или струны, или площадки, по которому нужно ударять молоточком, или трубки, в которые нужно дуть — из набора звуков произвольных частот музыка как-то не получалась, поэтому стала понятна необходимость наличия дискретного набора звуков определённой высоты — нот.

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

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

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

Однако тут возникают три главных вопроса, которые лежат в основе необходимости ввода конвенций:
  • На сколько более мелких интервалов делить октаву? Два? Три? Пять? Десять? Двадцать?
  • По какому принципу делить октаву? Должны ли интервалы быть равными? Должны ли они быть равными в абсолютном или относительном выражении?
  • От какой частоты строить октавную сетку?
По сути, если представить, что нам известен только тот факт, что интервал в октаву обладает уникальными свойствами (в первую очередь с точки зрения восприятия) и что он соответствует превосходству частоты вдвое, у нас есть только следующая картина:
Изображение

Непонятно, чему должен быть равен x, на сколько кусочков делить октаву чтобы получить промежуточные ноты и, что ещё важнее, даже если будет определено это число, как вычислить частоту конкретной промежуточной точки (и в соответствие ей подобрать длину или силу натяжения струны, к примеру)?

Попытки решить эту проблему предпринимались очень давно, как минимум ещё до нашей эры, в результате чего был принят Пифагоров строй.

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

Строев было создано несколько:

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

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

Интервалы между соседними нотами не были абсолютно идентичными: пропорция частот между двумя соседними нотами могла быть либо 15:16, либо 128:135, либо 24:25.

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

Идея проста:
  • октава делится на 12 истинно равных кусочков (интервалов), с получением в каждой октаве 12 нот.
  • Поскольку октава — это соотношение частот 1:2, а мы делим её на 12 интервалов, каждый интервал — это соотношение частот 1:21/12
  • частота каждой последующей ноты больше частоты предыдущей ноты в 21/12 раза

Кроме того, как и на сколько промежуточных нот разделить октаву, на вопрос о том, какую частоту брать в качестве опорной, чтобы на её основе расчитывать частоты всех остальных нот, тоже был дан ответ. Хотя это число не подкреплено никакой абсолютной истиной и ничем не лучше и не хуже других чисел, за опорную частоту была принята частота в 440 Гц, хотя в разное время в качестве опорной частоты принимались хоть и близкие, но отличающиеся частоты. До сегодняшнего дня существуют и отдельные музыканты и оркестры, которые свои инструменты настраивают используя в качестве опорной частоты

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

Этот интервал в одну двенадцатую октавы называется полутоном, а две таких интервала образуют целый тон. Таким образом, получается, октава как интервал состоит из 12 полутонов или 6 тонов.

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

Т.е. и «октава» и «полутон» являются единицами измерения и в принципе обладают одной и той же размерностью (безразмерны как и децибел).

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

Поэтому:
  • То, что октава это соотношение частот 1:2 — это мировая истина. Истина такого же порядка, как число Пи.
  • Деление октавы именно на 12 ступеней, использование равных ступеней и выбор частоты 440 Гц — это предмет соглашения между людьми. Есть другие соглашения. Они вряд ли менее правильные и вряд ли более правильные. Просто одни соглашения более популярны, а другие — менее популярны.

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

А если вам интересно, насколько отличаются частоты соответствующих нот натурального и равномерного темперированного строев:
Изображение
(Красные линии отделяют интервалы равномерно темперированного строя, а красные дроби показывают соотношения частот соседних нот. Зелёные линии и дроби выполняют аналогичную задачу для натурального строя)

Ноты в пределах октавы имеют свои названия, которые присваиваются нотам в определённой последовательности, а эта последовательность повторяется каждую октаву. Одноимённые ноты всегда имеют между собой интервал, равный целому числу октав, и в целом такие ноты считаются одинаковыми с точность до принадлежности к октавам. Выражаясь математическим языком, сравнение нот — это сравнение по модулю 12.
_________________________

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

Одновременное звучание как минимум трёх неодинаковых (!) нот называется аккордом.

Есть в музыке такое понятие, как «гармония», которое имеет тысячу значений, одно из которых — последовательность созвучий. И сами созвучия, и их последовательность при этом подчинены некоторым закономерностям. Если упростить и выкинуть из рассмотрения некоторые нестандартные и экзотические вещи, можно грубо сказать, что если рассматривать какое-то произведение, то помимо мелодической линии в нём явно или неявно присутствует последовательность аккордов, в подчинении которой находятся так или иначе все партии произведения. Нередко эти аккорды сами являются самостоятельной партией в произведении.

__________________________

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

_________________________

Классический анализатор спектра делает FFT (или не FFT, но это не так существенно сейчас) и отображает полученный результат в виде графика в прямоугольной системе координат:
Изображение
X-координата означает частоту, Y-координата — интенсивность. Я специально написал слово «интенсивность», а не, к примеру, «амплитуда», потому что в общем случае это именно интенсивность, которая может означать и амплитуду, и среднеквадратическую мощность спектральной составляющей, и уровень в децибелах и что-нибудь ещё.

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

Либо логарифмический:
Изображение

Нас, понятное дело, интересует логарифмический масштаб, потому что при нём любая октава, тон или полутон или центр (цент — одна сотая полутона равномерно темперированного строя) имеют одинаковую ширину на графике.

Итак, моя изначальная идея предельно проста:
Использовать логарифмический масштаб, но вместо декартовых координат использовать полярные.

То, что в декартовых координатах было x-координатой, — станет угловой координатой.
То, что в декартовых координатах было y-координатой, — станет радиальной координатой.

Иными словами, радиальная координата будет пропорциональна интенсивности, а углавая координата — логарифму частоты спектральной составляющей по основанию 2. Причём для угловой координаты коэффициент пропорциональности должен быть выбран таким, чтобы на один оборот приходилась одна октава.

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

Что это даёт?

Музыкальные интервалы превращаются в углы!

Полутон превращается в 30°, тон — в 60°. Цент — в 0.3°.
Октава превращается в полный оборот — 360°.

Нота «До» самой низкой октавы и нота «До» самой высокой октавы (равно как и нота «До» вообще любой октавы) в полярных координатах соответствует лучу имеющиму один и тот же угол наклона, и соответственно все эти ноты отображаются одинаково.

На данном этапе этот фактор (одинаковые ноты разных октав накладываются и сливаются в одну при полярном отображении) может рассматривать как недостаток такого способа отображения, но подождите, об этом будет сказано дальше.

Пока же — маленький пример.

Спектр органа (звучит нота «До»):
Изображение

На этой спектрограмме хорошо видно базовый тон и обертоны. Причём видно, что интенсивность 1-го,3-го и 7-го обертонов — высокая, а интенсивность 2-го, 4-го, 5-го, 6-го, 8-го и последующих обертонов — или незначительная, или неразличимо малая.

Фактически, мы вы видим четыре гармоники (гармоника — спектральная составляющая), отстающие друг от друга на одну октаву.

Если бы мы смотрели на спектр огранного звука в спектральном анализаторе, использующим полярные координаты для частоты, мы бы увидели 4 наложившихся друг на друга лепестка.

Что касается термина «лепесток». В некоторых кругах это весьма знакомый и часто-используемый термин, причём как в отношении полярных координат, так и прямоугольных.

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

Вот например, диаграмма направленности антенны:
Изображение

Надеюсь, после этой картинки как минимум понятно, что подразумевается под термином «лепесток».

Теперь вернёмся к спектру органа. Те четыре гармоники, которые в нём присутствуют (слабо проявляющиеся — не рассматриваем), на полярном анализаторе будут выглядеть вот так:
Изображение
(Латинские обозначения: стандартные латинские обозначения нот — буква «A»
для «Ля» и далее по алфавиту до следующей ноты «Ля».
Один сектор соответствует одному полутону).

Красиво, правда?

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

Поэтому важная вещь, которую я хочу постулировать: особые правила отображения наложения лепестков.

Они состоят из двух пунктов:
  • Лепестки не имеют одинакового цвета. Цвет лепестка зависит от частоты (т.е. высоты тона). Таким образом частота влияет не только на угловую координату, но и на цвет лепестка.

  • Лепестки не являются непрозрачными. Прозрачность лепестка должна иметь зависимость от интенсивности спектральной составляющей. Я не говорю о том, что это должна быть полная зависимость, но должен существовать определённый весовой коэффициент, устанавливающий такую зависимость. Приветствуется возможность изменять этот весовой коэффициент.

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

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

Касательно зависимости цвета лепестка от частоты: очевидно должны быть какие-либо формулы или кривые, выполняющие функцию сопоставления RGB- или HSB-значений частоте. Очевидно, что HSB тут значительно удобнее: можно привязать H-компоненту к частоте. Но на самом деле, нужно тщательно поизучать цветовые модели, модели смешения цветов и выбрать оптимальный вариант: оптимальный — значит такой, чтобы получать белый цвет именно тогда, когда это нужно. Вероятно, нужно цвета в цветовом пространстве представлять векторами, складывать эти векторы а потом нормализовать результирующий вектор.

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

Один интересный побочный эффект особенностей FFT: частотное разрешение падает с уменьшением частоты. Благодаря этому, лепестки не будут полностью перекрываться: НЧ-лепестки будут шире (в плане углового размера) ВЧ-лепестков. С ростом частоты, при прочих равных, ширина лепестков будет уменьшаться. Поэтому в любых случаях, белая сердцевина, полученная в результате многократных наложений лепестков, будет видна только в самом центре скопления лепестков — вдоль их оси, в то время как вокруг этой оси будет хорошо видна послойная структура всех лепестков (посмотрите ещё раз на мой самодельный рисунок (сделан в фотошопе) выше — красный лепесток наиболее широк, синий — наиболее узок).

Таким образом, с учётом разницы ширины лепестков и механизмом сложения цвета, отображение планируется примерно таким:
Изображение
(Опять же: концепт-арт в Фотошопе)

Что в целом даёт такой подход?

Вместо гармоник вы видите ноты. Вместо интервалов — углы. Вместо аккордов — фигуры из лепестков.

Немного об аккордах. Как я уже писал выше, классификация аккордов поразит вас своей объёмностью. Из всего этого безобразия можно взять небольшой пласт самых простых аккордов — трезвучия.

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

Изображение Изображение

Напомню ещё раз, что это интервал между любыми двумя нотами, не важно — какими. Поскольку мы условились делить октаву на 12 равных интервальных частей, которые мы называем полутонами, не играет роли, какие абсолютны значения имеют частоты базовых тонов двух сравниваемых нот. Играет роль только их относительное соотношение. Поскольку полутон — это отношение 1 : 21/12, малая терция — это соотношение 1 : 23/12, а большая терция — соотношение 1 : 24/12.

«В лучших традициях» комбинаторики, имея два варианта терции, мы получаем 4 возможных комбинации из этих двух интервалов:
  • Большая терция + малая терция = Мажорное трезвучие:
    Изображение

  • Малая терция + большая терция = Минорное трезвучие:
    Изображение

  • Большая терция + большая терция = Увеличенное трезвучие
    Изображение
  • Малая терция + Малая терция = Уменьшенное трезвучие
    Изображение

Причём первые два используются значительно чаще, чем вторые два, потому что первые два считаются консонирующими (благозвучными), а вторые два — диссонирующими (т.е. неблагозвучными, вызывающими ощущение диссонанса). Это свойство последних двух часто используется чтобы создать момент напряженности в произведении.

Считается, что мажорное трезвучие звучит радостно, а минорное — грустно. Даже слова «мажорный» и «минорный», как я погляжу, стали синонимами слов «радостный» и «грустный». Хотя на самом же деле это просто латинские слова major и minor, переводящиеся как «больший» и «меньший» соответственно, и они просто показывают, с какой терции (большой или малой) начинается построение трезвучия. Что же касается радостного и грустного звучания, то можно радостное произведение построить из подавляющего большинства минорных аккордов, и наоборот, так что если и говорит об эмоциональной окраске аккорда, то это «окраска в вакууме».

Аккордам дают название в соответствии с названием ноты, которая послужила базовой для построения аккорда (от которой была отложена сначала одна терция, а затем ещё одна). Например: До-минор или Фа-мажор. В латинской же системе мажорные аккорды обозначаются той же буквой, что и основной тон, а минорные — буквой ноты, ставшей основным тоном аккорда, с добавлением строчной буквы «m». Например Cm и F.

Теперь вернёмся к полярной системе координат. Терции преобразуются в углы:
Малая терция — прямой угол (90°).
Большая терция — угол 120 °.

Трезвучиям, в свою очередь, будут соответствовать комбинации из лепестков:
Изображение

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

Теперь кое-что об аккордах, потому что не-специалисты не знают.

Есть такое явление (и понятие) как обращения аккордов.

  • Вы можете самую низкую ноту аккорда перенести на октаву вверх.
  • Или самую верхнюю ноту аккорда перенести на октаву вниз.

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

Три подряд выполненных обращения дают изначальный аккорд, но перенесённый на октаву вниз или на октаву вверх.

Обращения аккорда «До-минор» на примере сетки полутонов и клавиатуры:
Изображение

Аналогичным, но зеркальным образом осуществляется обращение вниз.

Обращение в некоторой степени меняет характер звучания, но никогда не делает из мажора минор, из минора — мажор или какие-либо подобные преобразования. Аккорд остаётся принципиально тем же, чем он был.

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

Теперь немного практики:
Изображение

Какие ноты здесь играют? Если отбросить октавное дублирование, сколько нот здесь играет одновременно? Если там аккорд, то какой?
Уверен, быстрым взглядом, глядя на спектр, нельзя дать ответы на эти вопросы: гораздо проще будет положиться на слух, нежели на картинку.

Но с полярным спектроанализатором мы увидим, что это аккорд «До-минор», претерпевший одно обращение вниз, плюс сыгранная в басу нота «До»:
Изображение
(Это всего лишь неважно получившийся набросок предполагаемого вида: резкость границ лепестков не обязательно должна быть такой мутной — это всё как минимум «под вопросом», а как максимум — должно легко твикаться настройкой спектроанализатора).

Подытожу некоторые ключевые моменты и требования к анализатор, соответствующему моей концепции:
  • Полярные координаты вместо декартовых. А вообще-то анализатор должен иметь переключатель для выбора между прямоугольной и полярной системами координат.
  • Спектральные компоненты должны отображаться в виде лепестков, а не столбцов в прямоугольном режиме и секторов в полярном.
  • В полярном режиме: один оборот — одна октава.
  • Обязательное соответствие цвета лепестка частоте, которую лепесток отождествляет.
  • Обязательно сложный принцип синтеза цветов при наложении лепестков.
  • Как вариант расположение спектральной компоненты в стерео-пространстве может вносить вклад в цвет лепестка тоже.
  • Включаемый по желанию пользователя принцип синергии гармоник.
  • Куча крутилок для твикинга всего отображения.
  • Мощная сетка-оверлей, делящая окружность на сектора-интервалы. По дефолту секта должна быть настроена на 12-интервальный равномерно темперированный строй с опорной частотой 440 Гц. Ноты должен быть подписаны. По желанию пользователь может выбрать любой другой строй, поменять число интервалов, сменить стиль подписывания нот, сменить опорную частоту. Конфигурируемые субделения, например, для центов.
  • Конфигурируемый выбор между достижением максимального временнОго или достижением максимального частотного разрешения.
  • Опциональный твикинг параметров FFT и сглаживания полученных данных.
  • Маркеры-курсоры, с помощью которых пользователь может ставить метки и делать измерения.
  • Анализатор должен быть выполнен в виде VST, чтобы была возможность использовать его в любом хосте (DAW)

_______________

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

Когда я вижу секторы вместо гладких лепестков — у меня из глаз идёт кровь :)

Когда я вижу, что нет столь важного аддитивного сложения цветов — мне печально.

Но самое главное: совершенно неприемлемо низкое спектральное разрешение.

Предлагаю сравнить.
Вот скриншот неплохого бесплатного спектрального анализатора Voxengo SPAN, а на его фоне открыл TrickSpectrum. Сперва я в SPAN'е специально включил режим «запоминать максимум», сузил диапазон отображаемого окна до примерно одной октавы и прошёлся по всем полутонам октавы подряд, подовая на вход анализатора ноту, состоящую из одного только синусоидального сигнал. Получилась тёмно-зелёная гребёнка, пики которой соответствует сетке равномерно темперированного строя. Затем я в граф. редакторе подписал полученные ноты.
Изображение.
По этому скриншоту хорошо видно, что для каждой ноты в составе равномерно темперированной октавы разрешающей способности SPAN-а хватает, чтобы отобразить ноту как отдельный лепесток. Между двумя соседними нотами можно ещё нечто промежуточное умостить, и это будет видно на спектре.

На момент снятия скриншота звучит нота «До», её видно на спектре как ярко-зелёный лепесток, который не залазит на соседние ноты. Я могу легко определить, не расстроена ли случайно нота «До» на 30 центов вниз или вверх. Разрешения и метод визуализации позволяет.

Если же посмотреть на TrickSpectrum, то видно, что абсолютно та же нота отображается как нечто равное, и занимает (наберите воздуха поглубже) сектор в 2/3 октавы!!!

Это никуда не годится.

Это не имеет под собой никакого смысла.

Полярный анализатор спектра должен показывать ту же картину, что и SPAN, только она должна быть как бы обёрнута вокруг точки. Те же лепестки с той же шириной. Те же пропорции ширины лепестков и промежутков между ними.

Хотя это и ужасно само по себе, но я бы даже согласился, если бы одиночную ноту «До» он визуализировал не как изящный лепесток, а как огромный угловый 30°-ный сектор. Чёрт с ним, но 120° на одну ноту — это просто даже словами не выразить, насколько неприемлемо.

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

К сожалению, теперь похоже «первая в истории» утилита для полярного вывода спектра создана, и вроде бы как создана по моей идее, но до того, как она должна по моей задумке (с основной на рассказал о которой это программка и была создана), ей как до Китая пешком, и это обидно.

Анализатор получился неюзабельным в практическом плане: на сколько-нибудь более серьёзном заполненном спектре он показывает просто кашу и хаотически мигающие сектора с неожидаемыми границами. Как развлекательная безделушка это пойдёт, но спектроанализатор пока не удался, тем более тот, идеей которого я поделился — пока не вышел.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Круговой визуализатор спектра

Сообщение The trick » 29.03.2014 (Сб) 21:47

Спасибо за критику!
В будущей версии возможно, я исправлю недочеты, и сделаю в точности как написано. Я его писал изначально как игрушку - не более. Для высокого спектрального разрешения нужно полностью продумывать и переделывать всю схему визуализации, благо с данным постом все стало понятно что к чему. Изначально я думал Вы хотите сделать немного по другому. Можно для каждой точки растра вычислять значение цвета исходя из значения преобразования, это будет намного быстрее. Если в данной реализации увеличить спектральное разрешение (у меня ~23 гц) , то пойдет большая нагрузка на процессор (при отрисовке).
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 29.03.2014 (Сб) 21:55

SPAN не грузит у меня процессор практически никак. Т.е. не грузит так, чтобы это было заметно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 29.03.2014 (Сб) 22:09

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

Так я же говорил об этом:
Владислав
Ты хочешь идти по спектральным отсчётам и вносить изменения в растр.
Анатолий
Да, ну или наоборот
Владислав
А я предлагаю идти по растру и вносить изменения в точку согласно сразу всем спектральным отсчётам, которые влияют на эту точку растра.
Причём это нужно раздробить на две стадии.
SIMD инструкции тут очень полезны, потому что много однотипных операций над аналогичными данными.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Круговой визуализатор спектра

Сообщение The trick » 29.03.2014 (Сб) 22:13

Я изначально думал что Вы хотите это дело делать в виде замкнутой области (замкнутых лепестков с контуром, т.к. говорили что тоже самое что в SPAN только в полярных координатах), по текущим скринам я вижу что нужно совсем другое, область имеет сглаженные границы, что в случае применения FFT 16384 (разрешение ~2 гЦ) будет решаться в лоб без ухудшения качества, т.к. частоты можно начинать от 25 гц, что даст как раз 12 зон.
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 29.03.2014 (Сб) 22:16

Всё правильно: контур, огибающий все лепестки — замкнут и неразрывен. Просто он для большинства «фи» имеет «эр» равеное нулю.

Кстати, для белого шума мой анализатор даст белый круг, для розового — красноватый круг, для синего шума — синеватый :) Неожиданное свойство, только сейчас дошло
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Круговой визуализатор спектра

Сообщение The trick » 29.03.2014 (Сб) 22:21

Хакер писал(а):Всё правильно: контур, огибающий все лепестки — замкнут и неразрывен. Просто он для большинства «фи» имеет «эр» равеное нулю.

Стоп, так сам контур лепестка должен отрисовываться? Я как думаю делать - проход по растру, поиск соответствий каждой точки - индексам в FFT массиве, группировка индексов (аддитивная) и установка цвета.
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 29.03.2014 (Сб) 22:26

Кривоус Анатолий писал(а):Стоп, так сам контур лепестка должен отрисовываться?

Да. Твоё мышление мешает тебе принять факт, что контуром может быть 20 пиксельный переход от яркого к прозрачному. А может и не быть. Я написал в топике, что вопрос о резкости контура — это как минимум открытый вопрос, а в хорошем случае должно зависеть от настроек (прямо или косвенно).

Например допускаю такое параметр, как «усреднение полученный результатов». Тогда логично сделать яркий и чёткий контур при минимальном значении крутилки усреднения, и размытый контур — при максимальном.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 128
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Круговой визуализатор спектра

Сообщение Jack Ferre » 30.03.2014 (Вс) 13:45

2 Кривоус Анатолий
Интересно, красиво.

Примерно через 3 секунды звучания одной ноты или аккорда ваш анализатор перестает обращать внимание на них (я так понимаю - неизменяемая часть FFT).

2 Хакер
Вы предлагаете сделать 4 координаты, а описываете только 3:
  • градус - частота
  • H (из HSB) - октава
  • alpha - интенсивность
  • радиус - ?

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Круговой визуализатор спектра

Сообщение The trick » 30.03.2014 (Вс) 13:57

Примерно через 3 секунды звучания одной ноты или аккорда ваш анализатор перестает обращать внимание на них (я так понимаю - неизменяемая часть FFT).
Не понял, как перестает обращать внимание?
Радиус - интенсивность
Кстати этот подход не всегда будет четко виден. Например, если звук очень насыщен гармониками, то лепестки будут кратны основной частоте, но расположены не по октавам. Если же сыграть аккорд, то вполне возможно наложение обертонов.
Последний раз редактировалось The trick 30.03.2014 (Вс) 14:07, всего редактировалось 1 раз.
UA6527P

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 30.03.2014 (Вс) 13:58

Jack Ferre, скажи честно, ты весь пост прочитал, или только картинки посмотрел?

Иначе нельзя понять, как можно задавать эти вопросы. Градус оси лепестка прямо пропорционален частоте спектральной компоненты. H из HSB — не «октава», а зависит от частоты. Зависимость сложная. S и B из HSB тоже запросто могут зависеть от частоты и от разницы Л- и П- каналов.

Такой параметр как «alpha» не имеет в описанной модели синтеза цвета ни места, ни смысла.

Радиус, вернее радиальный размер лепестка — интенсивность спектральной составляющей, помноженная на весовой коэффициент соответствующей ноты, вычисленный исходя из наличия других гармоник, приходящихся на этот же «угол».
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 128
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Круговой визуализатор спектра

Сообщение Jack Ferre » 30.03.2014 (Вс) 15:40

Кривоус Анатолий писал(а):Не понял, как перестает обращать внимание?

Проведите эксперемент. Задержите голосом "Ааааааа" так, чтобы постоянно светились одинаковые сегменты. Через ~3 сек они погаснут.

Хакер писал(а):скажи честно, ты весь пост прочитал

Весь. Хотел сразу добавить: "Скорее всего я плохо понимаю происходящее", но доступ к сайту отвалился :oops:

The trick
Постоялец
Постоялец
 
Сообщения: 494
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Круговой визуализатор спектра

Сообщение The trick » 30.03.2014 (Вс) 15:47

Проведите эксперемент. Задержите голосом "Ааааааа" так, чтобы постоянно светились одинаковые сегменты. Через ~3 сек они погаснут.

Ничего такого не наблюдаю. Какие параметры установлены? Возможно что включено подавление эхо или другие эффекты.
UA6527P

Jack Ferre
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 128
Зарегистрирован: 17.02.2014 (Пн) 14:31
Откуда: Казахстан, Костанай

Re: Круговой визуализатор спектра

Сообщение Jack Ferre » 30.03.2014 (Вс) 16:08

:oops: Каюсь. Это подавление шума.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 04.04.2014 (Пт) 20:10

Mikle писал(а):Мы и так ждём с нетерпением, а пока болтаем, чтоб не скучать :)

Mikle, я ожидал от тебя комментариев каких-то.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 3769
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Круговой визуализатор спектра

Сообщение Mikle » 05.04.2014 (Сб) 10:48

Хакер писал(а): я ожидал от тебя комментариев каких-то.

Твой большой пост состоит из двух частей. Первая - теоретический ликбез, я это давно знаю, но информацию считаю полезной и доходчиво изложенной. Было бы лучше, если бы ты отделил эту часть отдельной темой или статьёй. У меня, к примеру, давно зреет идея другой статьи под условным названием "Почему 12?". Думаю, понятно о чём речь? Было бы удобно вместо того, чтобы начинать статью со своего аналогичного ликбеза, просто дать ссылку на твою статью.
Во второй части я согласен далеко не со всем. Во-первых, мне казалось, что и так ясно, что это именно игрушка, правильнее было бы назвать это светомузыкой. Иначе зачем там вообще такой параметр, как "Симметрия"? Но, если принять, что мы обсуждаем именно спектроанализатор, то идея использовать радиус для интенсивности, а цвет для частоты, мне кажется очень спорной. Радиус - это не просто скаляр, в данном случае это целый отрезок, каждый пиксель которого может нести свою информацию, мы это теряем, зато цвет - это только 3D вектор, и различимость глазом отдельных компонентов в готовом цвете довольно низкая. А на это нужно спроецировать 10 октав! Нереально. Лепесток звука органа красивый, но малоинформативный. Там совершенно не видно, что третьей гармоники октавы много, а четвёртой - мало. Набор точек вдоль радиуса гораздо информативнее. Яркость соответствует громкости (интенсивности), это и интуитивно понятнее, и ближе соответствует разрешению человеческого восприятия - что 256 градаций яркости компоненты в RGB, что 128 уровней громкости в миди - это примерно верхняя граница того, что человек различает. Так мы отобразили гораздо больше информации, хотя даже не использовали пока цвет, пока достаточно grayscale.

Правка: исправил "гармоники" на "октавы".
У меня появилась сумасшедшая идея, как задействовать с пользой цвет, пока обдумываю.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 05.04.2014 (Сб) 15:18

Mikle писал(а):Во-первых, мне казалось, что и так ясно, что это именно игрушка, правильнее было бы назвать это светомузыкой.

Подожди.

Ты понимаешь суть произошедшего? У меня давно жила идея сделать профессиональный качественный анализатор в форме VST. Не игрушку. Работающую по описанному принципу.

И я просто, так сказать, проговорился Анатолию о своей идее сделать подобный анализатор. Ждал чего-то вроде «Отличная идея» или «Да ну, отстой какой-то». Но на самом деле за пару недель он реализовал мою идею. Но реализовал с большими отступлениями. Очень большими и существенными. Получившаяся реализация по моей оценки получилась бесполезной.

Две вещи: то, что корни этого проекта растут из моего рассказа, и то, что меня упоминули как автора идеи — заставили меня рассказать о том, какая на самом деле была моя идея. Мне не очень приятно значиться автором идеи при такой реализации идеии, какая она получилась. Поэтому я большим постом как бы уточнил: вообще-то идея была именно такой.

Mikle писал(а):Иначе зачем там вообще такой параметр, как "Симметрия"?

Это полностью авторский замысел Анатолия, в моей оригинальной идеи ничего похожего не было. Как и «огня» и переключения режима между секторами и окружностями. Это не моё.

Mikle писал(а):Но, если принять, что мы обсуждаем именно спектроанализатор, то идея использовать радиус для интенсивности, а цвет для частоты, мне кажется очень спорной.

А я, как видишь, не согласен.
Тебя же не смущает, что в прямоугольной системе для интенсивности используется эквивалентная полярному радиусу декартова ордината?

Как я говорил Анатолию в личке, тут можно даже анализатор не делать, а сделать просто преобразователь картинки: брать одну картинку и оборачивать её вокруг точки.

Mikle писал(а):Радиус - это не просто скаляр, в данном случае это целый отрезок, каждый пиксель которого может нести свою информацию, мы это теряем,

Нет, мы не теряем её. Отличие цвета на протяжении радиальной оси лепестка может кодировать много чего. И я именно не настаиваю на том, чтобы кодировать какую-то одну вещь, а, напротив, вывожу факт того, что цвет можно использовать много как. Например, один из вариантов, которые я предлагал: использовать saturation-компоненту цвета, чтобы показывать синфазность сигналов. То есть есть же mid/side-эквалайзеры и mid/side-анализаторы, вот здесь мы сможем по цвету увидеть, что какие-то гармоники синфазны, а какие-то — в противофазе.

Mikle писал(а):А на это нужно спроецировать 10 октав! Нереально

Совершенно непонимаю, почему.

Раздели гладкую радугу на 9 отрезков, получишь 10 контрольных точек-цветов.
polar_spectrum_analyzer_key_color_example.png

Неужели ты не сможешь отличить их друг от друга? Причём радуга — это вовсе не то, что я предлагаю для частотно-цветового маппинга. Т.е. радуга близка, но точная модель маппинга более сложно. Я примерно имею представление, но нужно экспериментально искать лучшую модель в числах. Сейчас даже не важно, что это за отображение, важен принцип. И я считаю, что принцип — удачен.

Mikle писал(а):Лепесток звука органа красивый, но малоинформативный.

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

Так и тут.

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

Но я точно ещё не знаю, сильно уверен, что человек, которому придётся много посмотреть в такой инструмент, будет по индивидуальной картинке лепестка угадывать инструмент. (А может не будет — надо просто сделать и проверить).

Mikle писал(а): и ближе соответствует разрешению человеческого восприятия - что 256 градаций яркости компоненты в RGB, что 128 уровней громкости в миди - это примерно верхняя граница того, что человек различает.

А вот здесь, я думаю, ты сильно поторопился, когда писал, и не обдумал хорошо свои слова. Потому что мне странно от тебя слышать такие вещи.

256 градаций — это вовсе не соответствует разрешению человеческого восприятия, ибо оно гораздо выше. Число 256 оказалось выбранным только потому, что R8G8B8 оказалось удобной и компактной, а на R16G16B16 было жалко памяти, хотя 216 — это по-моему уже выше человеческого разрешения.

256 градаций это, на самом деле, настолько меньше человеческого разрешения, что невозможно просто рисовать длинные градиенты: приходится применять дишеринг:
Изображение
Сверху — с дишерингом, снизу — без.
Результат налицо: внизу видны ступеньки.

С твоим опытом работы с графикой странно заявлять такое.

Что касается MIDI: опять же, 128 восходит к техническому удобству, нежели продиктовано пределами чувствительности человека.

Считается, что динамический диапзаон человеческого слуха: около 120–140 dB. Т.е. это соотношение минимального уровня, которое ухо способно распознать, к максимальному. 256 градаций — это 48 dB, 65536 градаций — это 96 dB.

Подумай, если бы 256 градаций соответствовали разрешению человеческого слуха, почему акустические системы используют 16- и 24- битную разрядность для представления звука и соответствующие ЦАПы? Ну и можешь представить, как звучит плавно затухающий по амплитуде с 10% до 0% синус, если общая разрядность — 8 бит :)
У вас нет доступа для просмотра вложений в этом сообщении.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 3769
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Круговой визуализатор спектра

Сообщение Mikle » 05.04.2014 (Сб) 16:01

Начну с конца.
Хакер писал(а):256 градаций — это вовсе не соответствует разрешению человеческого восприятия, ибо оно гораздо выше.

Уточню, имеются ввиду 256 градаций между заданными чёрным и белым для типичного монитора.
Что такое диЗеринг, я прекрасно знаю и реализовывал его. На счёт твоих двух полосок - я не вижу разницы... нет, со зрением у меня всё в порядке (очки не в счёт:) ), просто у меня хороший монитор, я не раз сталкивался с ситуацией, когда плохой монитор усекает реальную битность изображения. Как вариант - посмотри на аналоговом CRT мониторе. Вот в цветных градиентах градации несколько виднее, в них дизеринг бывает реально полезен.
То же самое про громкость звука - попробуй в любом миди редакторе прописать несколько одинаковых нот подряд, задавая им в случайном порядке значение велосити 126 и 127, послушай, сможешь ли ты их различить.
Продолжаю.
Понятно, что числа 128 и 256 взяты из соображений технического удобства, я говорю о порядке величин, что это где-то близко, не более того.
Хакер писал(а):Раздели гладкую радугу на 9 отрезков, получишь 10 контрольных точек-цветов.
Неужели ты не сможешь отличить их друг от друга?

Конечно смогу, но как понять, цвет RGB(40,60,70), это сумма 2-й, 5-й и 8-й октав (предположим, что в чистом виде эти октавы как раз дают чистые цвета), или это сумма 4-й и 7-й октав? Имея ноту "до" с полным набором степенных гармоник, мы имеем 10 слышимых гармоник в 10-и разных октавах, у каждой гармоники своя громкость, для полноценного отображения такой картины нужно десятимерное пространство.
Хакер писал(а):И я просто, так сказать, проговорился Анатолию о своей идее сделать подобный анализатор.

Ясно, я только сейчас обратил внимание на фразу:
Кривоус Анатолий писал(а):Данную идею мне предложил Хакер ,только в его задумке немного по другому должен был отображаться спектр в виде кривой, я сделал в виде секторов.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 06.04.2014 (Вс) 14:43

Mikle писал(а): На счёт твоих двух полосок - я не вижу разницы... нет, со зрением у меня всё в порядке (очки не в счёт:) ), просто у меня хороший монитор,

Почему хороший? Ведь это просто зависит от контрастности. У меня контрастность и яркость выкручены на максимум, поэтому и видно. Но есть, кстати, люди, которые просто не чувствительны к малейшей разницы в цветах.

Mikle писал(а):То же самое про громкость звука - попробуй в любом миди редакторе прописать несколько одинаковых нот подряд, задавая им в случайном порядке значение велосити 126 и 127, послушай, сможешь ли ты их различить.

Эээ... это очень плохой пример и эксперимент.

Во-первых, есть разные «инструменты» с разным маппингом velocity на реальную громкость. Зависимости может не быть никакой, она может быть линейной или очень нелинейной, или разные velocity могут вызывать звучания вообще разных звуков (или разных комбинаций).

Во-вторых, различимость зависит от крутизны атаки и релиза двух нот, и временнЫм интервалом между ними. Чем меньше крутизна и больше интервал, тем мене заметна разница.

Как аналогию могу предложить задачу: определить, какой отрезок на 1 px короче. Но отрезки не показываются одновременно.


Mikle писал(а):Имея ноту "до" с полным набором степенных гармоник, мы имеем 10 слышимых гармоник в 10-и разных октавах, у каждой гармоники своя громкость, для полноценного отображения такой картины нужно десятимерное пространство.


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

Итак:
Декартова система — два измерения.
Полярная система — два измерения.

Но в полярной системе несколько меняется правило эквивалентности точек. Поэтому я ввожу третье измерение — цвет.

Вопрос, почему нота «До» с десятью обертонами не требует десятимерного пространства при прямоугольном отображении спектра, и внезапно требует десятимерного пространства при полярном отображении спектра?

Mikle писал(а):Конечно смогу, но как понять, цвет RGB(40,60,70), это сумма 2-й, 5-й и 8-й октав (предположим, что в чистом виде эти октавы как раз дают чистые цвета), или это сумма 4-й и 7-й октав?

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

Mikle писал(а):Ясно, я только сейчас обратил внимание на фразу:

То есть ты думал, что Анатолий просто сделал анализатор, а потом я пришёл и написал огромный пост с позиции «ты знаешь, на мой взгляд тебе лучше было сделать вот так»?

На самом деле, история такой. С позволения Анатолия цитирую переписку:
Владислав писал(а):Кстати, насчёт FFT.
Я вот хочу в свободное время (которого нет вообще ни на что, лол) написать анализатор спектра.
Только частота должна отсчитывать не в декартовых, а в полярных координатах.
Не встречал таких анализаторов спектра?
Я вот искал долго-долго и по-моему их вообще нет.

Анатолий писал(а):Так. Я не совсем понял что вы имеете в виду. Подаем на вход FFT комплексные значения амплитуд, прямое преобразование выход комплексные коэффициенты (грубо говоря R- перед cos, I - перед sin)
Что нужно?
Я делал обычный анализатор
Также для вейвлет
преобразования

Владислав писал(а):Я предлагаю просто иной способ отображения результата FFT.
Когда ты смотришь на спектр в прямоугольных координатах...
... у тебя по горизонтальной оси — частота, а по вертикальной — амплитуда.
То, что я предлагаю: частота — это «фи» (угловая координата), амплитуда — это радиальная координата.
Кроме того.
Частота должна влиять на цвет.

Анатолий писал(а):Я понял

Владислав писал(а):Круговой период должен быть одна октава.
Понимаешь, в чём выигрыш такой схемы?

Анатолий писал(а):Да, одни и теже ноты по одну линию

Владислав писал(а):Не только одни и те же ноты.
Но и обертоны будут очень хорошо отображаться.
Музыкальные интервалы превращаются в углы.

Анатолий писал(а):Что мешает сделать преобразование из прямоугольной в круговую?
У меня есть модуль я в прямоугольной отображал

Владислав писал(а):В смысле, что мешает?
Ничего не мешает.
Нужно просто найти время и написать VST
Готовый, нормальный и юзабельный.
С красивым отображением.
Для меня удивительно, что нет таких готовых.

Анатолий писал(а):VST - можно, майкл у меня спрашивал уже насчет этого, я не писал, но читал немного об этом
Я делал синтезатор, может видели я сегодня на форуме выкладывал
Но не VST
Нужно просто разбираться в VST, нужно изучать документацию
можно сделать для всей системы
такой анализатор
т.е. все звуки в системе будет показывать
без VST

Владислав писал(а):Ну это какой-то уже частный случай. Не вижу в нём смысла.
Файл Carribean Dance 02.ogg
У меня интерес был именно в VST.

Анатолий писал(а):На VB6?

Владислав писал(а):Да нет, мне без разницы, на чём. Скорее не на VB.

Анатолий писал(а):На C++ можно написать
точнее сделать прототип на VB6, Отладить, а потом переписать уже под C++ Для создания VST плага
Я работаю в VS6 тоже
Только она на 7x64 глючит иногда
А дотнет я не перивариваю
с другими не работал

Владислав писал(а):Но ты не встречал такие спектральные анализаторы?

Анатолий писал(а):Нет, именно таких нет
Анатолий
Посмотрите в Harmor Vsti
Там есть анализатор, только он не круговой

Владислав писал(а):Но это же синтезатор
Он скорее всего свой собственный сигнал показывает.


Это было 12 марта.

Потом 26-го марта:

Анатолий писал(а):Добрый вечер!
Хотел у Вас спросить про циркулярный спектроанализатор
Я сделал размер FFT 4096
Правда не VST
а общисистемный
Если заинтересует могу скинуть, прада еще пока не полностью готов

Владислав писал(а):Добрый.
Хотелось бы 8192

Анатолий писал(а):Сейчас


Потом было много разговоров про математрику происходящего.

Потом:

Анатолий писал(а):Вы говорили о спецефическом способе отображения
И дали определение какая куда координата указывает
Если сделать FFT к примеру 16384 и взять частоту в районе 50 ГЦ то уже можно будет попытаться сделать разрешение на НЧ
побольше
Но тут лучше вейвлет

Владислав писал(а):Разрешение в частотной области тут вообще не играет роли.
Оно может быть любым.
Это не влияет на идею способа отображения.
Очевидно, НЧ-составляющие дадут более широкие лепестки.
А ВЧ-составляющие более узкие.
Ну и хорошо.
Но фоне широких красных лепестков будут узкие голубые.

Анатолий писал(а):Извините, может я туплю, но не легче сразу нарисовать сектор, шириной с разрешение?

Владислав писал(а):Нет.

Анатолий писал(а):На нч, он будет большой

Владислав писал(а):Какой сектор.
Никаких секторов.
Сектор при полярном отображении соответствует прямоугольнику при декартовом отображении.
Но ты же не видишь прямоугольников в обычных анализаторах спектра?


Потом опять шло много разговоров о разном способе отображения, сглаживания, о частотном разрешении.

На следующее утро:

Анатолий писал(а):Добрый день!
Владислав, не имеет же принципиальной разницы вид, сделаю я кривыми или секторами?
Я думаю секторами будет ратится меньша процессорного времени, чем если я буду рисовать петли
Также при высоких частотах - эти петли превратятся в иголки
Можно их просто линиями отрисовать
Что Вы думаете по этому поводу?
И еще я хотел спросить, важна ли разрешающая способность в отображении? Например при FFT 8192 размер одной частотной составляющей на высоких частотах будет меньше пикселя
Например делать динамическое изменение разрешения что быстрее, либо усреднять все выборки между соседними пикселями что медленней?

Владислав писал(а):Секторами неприемлемо.

Анатолий писал(а):Анатолий
Почему?

Владислав писал(а):Это совершенно противоречит моей идее.
Никаких острых углов быть не должно.

Анатолий писал(а):Тогда можно сделать, но только без заливки
Например интерполировать сплайном

Владислав писал(а):С заливкой.
С разной степенью прозрачности в каждой точке.
Со сложением цветов.

Анатолий писал(а):Я думаю это будет очень накладно 8192 отсчета заливать
тем более с прозрачностью

Владислав писал(а):Какой порядок FFT у того же SPAN-а?

Анатолий писал(а):А там разве все 8192 выводятся?
сразу
У нас все одновременно должны выводится
Т.к. круговая

Владислав писал(а):В каком плане одновременно?

Анатолий писал(а):Ну все 8192 одновременно, т.к. они унас закручены

Владислав писал(а):Речь о выводе или о пост-процессинге спектральных отсчётов?

Анатолий писал(а):Выводе на экран

Владислав писал(а):Выводит он всю полосу. От самых низких частот до самых высоких.

Анатолий писал(а):получается при FFT 8192 - 4096 точек должно быть на графике
12 оборотов
12 октав
на первом обороте - 1 круг только
на втором - 2 точки
т.е. 1 петля будет максимум
если всплеск

Владислав писал(а):Первый круг это какие частоты?

Анатолий писал(а):нулевой - общий уровень средний, 1 - SampleRate/FFTSize
2 = 1 *2
3 = 2 * 2

Владислав писал(а):Ты о нулевом отсчёте?

Анатолий писал(а):Нет, я не могу понять как грамотно вывести на экран. Просто если заливать сплайн с 4096 точками очень накладно
Легче сделать сектора - это только будет визуально отличаться от петель
А в остальном тоже самое

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


Немного разговоров о GDI+ vs. SetDIBitsToDevice...

Потом:
Анатолий писал(а):Хорошо я уже отказался от секторов
И хочу сделать заливку
У нас цвет соответствует частоте по октаве, или по частоте непосредственно?
Т.е. ноты на одной октаве одним цветом?

Владислав писал(а):Ни в коем случае.

Цвет соответствует высоте тона.
Скажем так, в центах.
Кроме того, цвет соответствует интенсивности спектрального отсчёта.
И была ещё идея, чтобы цвет зависел от панорамы.
Т.е. если спектральная составляющая есть только в одном канале — цвет один. Если в другом — цвет другой.
Если по центру — смесь этих цветов.
Но тут вся соль задмуки в том, что как только она на базовом уровне сделана, надо долго сидеть и твикать механизм цветообразования.


На следующий день (27 марта):
Анатолий писал(а):Короче я решил сделать немного по своему
Это очень муторно
Сделал два вида
Можно на форум выложить?
Я на несколько выложил уже
На vbStreets Тоже хотел
Как раз посмотрите
Там второй вариант визуализации почти такой как Вы говорили
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 3769
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Круговой визуализатор спектра

Сообщение Mikle » 06.04.2014 (Вс) 16:54

Хакер писал(а):У меня контрастность и яркость выкручены на максимум, поэтому и видно

Речь о правильно настроенном мониторе, а не когда всё на максимуме, естественно, ты повысил разницу между соседними линиями.
Хакер писал(а):это очень плохой пример и эксперимент.
Во-первых, есть разные «инструменты» с разным маппингом velocity на реальную громкость. Зависимости может не быть никакой, она может быть линейной или очень нелинейной, или разные velocity могут вызывать звучания вообще разных звуков (или разных комбинаций).
Во-вторых, различимость зависит от крутизны атаки и релиза двух нот, и временнЫм интервалом между ними.

Хорошо, велосити - действительно не самый подходящий параметр, поставь на два разных миди канала ноты с одинаковыми всеми параметрами - велосити, длительность, патч(инструмент), все эффекты - на ноль, ноты должны следовать через одинаковые временнЫе промежутки и чередоваться между каналами в случайном порядке, темп должен быть достаточно быстрым, чтобы "впечатление" от прозвучавшей ноты не пропадало до начала звучания следующей. Громкость на одном канале должна быть 127, а на другом - 126. Так понятней?
Всё вышенаписанное я могу написать ещё в несколько раз подробнее, но у меня ощущение, что ты всё понял и так, понял, о какой различимости я вел речь изначально. Мы только зря тратим время на оффтоп, лучше приступить к действительно интересным вопросам.
Так же по твоей переписке с Кривоус Анатолий - я понял, что идея изначально твоя, но он сделал по-своему, о чём и написал.

К делу:
Декартова система — два измерения.
Полярная система — два измерения.

В декартовой системе мы имеем фактически график однозначной функции, определённой на всём диапазоне. Каждому X однозначно соответствует некоторый Y. Если мы "свернём" этот график в полярную систему по предложенному методу (октава на оборот)- мы получаем семейство однозначных функций (по числу октав) на одном графике. Это по-прежнему читабельно, но уже трудно отследить, какая из линий соответствует какой октаве.
Теперь мы меняем тип функции с метрической (координата), на яркость. Теперь в декартовой системе информативность практически не поменялась, теперь вместо 2D графика у нас 1D отрезок, каждая точка которого имеет свою яркость. Но, сворачивая такой график в кольцо, мы уже не частично, а полностью теряем информацию об октавах. Эту информацию можно попытаться передать цветом точек, но, как я уже писал, очень неточно.
Но у этого представления графика есть одно положительное свойство - одинаковые ноты занимают одно и то же место, в результате, в результате мы получаем возможность более наглядно наблюдать музыкальную гармонию.
Теперь то, что я предлагаю - свернуть 1D отрезок не в круг, а в архимедову спираль
Изображение
, точно так же сохранив одну октаву на оборот.
И вот у нас сохранена вся информация, которую нам давала декартова система, при этом мы видим гармонию, как в твоём варианте - одинаковые ноты выстраиваются в радиусы.
Это не так красиво, как лепестки? Ну так речь же не про игрушку, а про инструмент.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16039
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Круговой визуализатор спектра

Сообщение Хакер » 06.04.2014 (Вс) 17:01

Mikle писал(а):Громкость на одном канале должна быть 127, а на другом - 126. Так понятней?

Я поставил эксперимент.
Не слышу разницы между 126 и 127. Прекрасно слышу разницу между 2 и 3.

Потому что Velocity to Amplitude видимо в моём случае имело линейный характер, а восприятие громкости — логарифмическое.

____

Прочитал твой текст, но увы, не понял, почему нужно переходить от 2D к 1D-отрезку?
Причём разрыв непонимания ещё больше: то ты говорил, что измерений не хватает (и нужно 10-мерное пространство для 10 октав), но так и не объяснил, почему. Теперь же ты предлагаешь отказаться от одного измерения.

Несколько раз видел фразы типа «теряем информацию» и «сохранена вся информация»: по прежнему не понимаю, какая информация теряется при моём подходе?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList