Визуализация композиций Konnakol — GSoC ’22 Обновление 2

Прошло 6 недель с момента начала официального периода кодирования в рамках Google Summer of Code ’22. Последние три недели были как интересными, так и суматошными. Нужно было изучить множество новых концепций, просмотреть и понять сотни строк кода и попытаться добраться до того самого неуловимого финального плана, который решит, как пройдут мои следующие 6 недель.

Визуализация композиций

После исправления нескольких мелких ошибок в поколениях Korvais и Mohras, следующим шагом была разработка методов визуализации композиций. Это означало прохождение через пакет Diagrams и поиск методов визуализации композиций в структуре, подобной сетке.

Первая идея, которая возникла у меня при визуализации Корвайса, заключалась в том, чтобы изобразить фразы одним цветом, а промежутки — другим. Каждый ряд представлял бы новый ритмический цикл. По мере разработки функций для этого, я понял, что будет лучше, если вместо одного цвета будет градиент. Фразы имели бы убывающий градиент, где скорость убывания зависела бы от длины фразы. То же самое можно было бы сделать и для пробелов, но с увеличивающимся градиентом. Еще одна замечательная идея, которую посоветовал мой наставник Алекс Маклин, заключалась в том, чтобы иметь заголовок, который помог бы понять, где будут располагаться биты.

Пример генерации для обычного числового паттерна выглядит следующим образом:

Другая подобная визуализация для Korvai выглядит следующим образом:

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

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

Одна из таких мохра, сгенерированная системой, приведена ниже:

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

Более ранняя композиция, визуализированная в двух разных временных подписях, приведена ниже:

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

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

Когда я закончил с диаграммами, осталось только создать пакет и загрузить его на hackage. Ссылка на пакет приведена ниже:

konnakol: Формализация правил коннакола, индийской ударной формы искусства.

hackage.haskell.org

Прослушивание коннакола

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

Чтобы использовать образцы вместе с композициями, сгенерированными системой, мне пришлось определить методы, которые конвертировали бы эти композиции в мини-нотацию, а также подходящее значение, на которое нужно замедлить композиции, чтобы они достигли оптимального темпа. Как только я это сделал, осталось только установить пакет konnakol, импортировать его в tidal и начать кодировать Konnakol в реальном времени!

Код генерации звука был написан таким образом, что любой человек с базовым пониманием Konnakol сможет сгенерировать Mohra или Korvai с помощью всего одной строки кода. Например, чтобы сгенерировать Мохру, достаточно ввести

d1 $ (tidalM Khanda rupaka Khanda (mkStdGen 112)) 
Войти в полноэкранный режим Выйти из полноэкранного режима

Чтобы сделать звук лучше, можно использовать другие функции и аудиообразцы, доступные в Tidal Cycles. Один из таких примеров приведен ниже:

do
  resetCycles
  d1 $ jux (fast 2) $ (tidalK Chaturasra thriputa Chaturasra (mkStdGen 112232)) # gain 1.3

d2 $ sound "bd sd ~ sd" # gain 1

d5 $ sound "arpy(<3 5>, 8)" # gain 1.1
Войти в полноэкранный режим Выход из полноэкранного режима

Сгенерированные примеры аудио можно найти в репозитории кода, ссылка на который приведена в конце документа.

Что дальше?

Основной целью второй половины проекта является разработка системы внутри TidalCycles, которая сможет работать с последовательностями. Я также буду работать над

Посмотреть разработанный код, а также подробное описание Konnakol можно здесь:

tidalcycles / konnakol-gsoc

Репозиторий для экспериментов Konnakol во время GSOC 2022

GSOC Konnakol

Репозиторий экспериментов, проведенных в рамках Google Summer of Code 2022.

Соавтор : Аравинд МохандасНаставник: Алекс МакЛин

Чтобы прочитать больше о Konnakol, посетите здесь

Чтобы понять, какие типы данных и функции используются, посетите здесь

Чтобы посмотреть на сгенерированные примеры диаграмм, посетите здесь

Чтобы запустить код и создать музыку: Визуализация композиций Konnakol — GSoC ’22 Update 2. (NB: загрузите аудиофайлы с файлом запуска SC, чтобы услышать звук)

Аудиообразцы

Образцы мридангама (c) Артур Каработт, распространяется по лицензии CC-BY-SA https://creativecommons.org/licenses/by-sa/4.0/, исполняет Harishankar V Menon.

Посмотреть на GitHub

Аудио образцы

Образцы мридангам (c) Артур Каработт, распространяется по лицензии CC-BY-SA https://creativecommons.org/licenses/by-sa/4.0/, исполняет Harishankar V Menon.

Оцените статью
devanswers.ru
Добавить комментарий