Первоначальные представления о компьютерном композиторе-контрапункте XVI века

Идея

Вот идея: создать компьютерную программу, которая будет сочинять духовную хоровую музыку 16-го века (которую я часто называю «Мотет» и/или «Григорианский распев»). Некоторые наиболее известные имена, связанные с этим стилем, — Джованни Палестрина, Роланд де Лассус и Томас Таллис. эпический образец стиля.

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

Почему?

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

Что?

У проекта есть как минимум два аспекта:

  1. Учим компьютер писать музыку в этом стиле.
  2. На самом деле компьютер пишет музыку.

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

Как?

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

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

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

  • Преимущественно пошаговое движение: «Этот стиль отличается в основном пошаговым движением. В общем, чем больше мелодический интервал, тем реже он встречается» (Голдин, 17 лет).
  • Ритмическое ускорение: «начальная фраза композиции… может начинаться с относительно длинных нот, за которыми следуют ноты все более короткой продолжительности» (Голдин, 23 года).

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

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

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

MIDI — это очень упрощенный последовательный формат музыкальных данных, который был стандартизирован в 1980-х годах и до сих пор широко используется. Он обеспечивает простой формат для кодирования музыкальной информации, такой как высота тона, продолжительность и громкость. В исходном стандарте для всех значений использовались числа 0–255. Формат MIDI можно рассматривать как цифровой эквивалент пианино. В рояле рулон бумаги проходит через механизм, который превращает отверстия в рулоне бумаги в клавиши, играемые на пианино (хорошую справочную информацию см. в статье в Википедии). Этих элементарных данных достаточно, чтобы записать целое музыкальное произведение и воспроизвести исполнение. MIDI-данные часто визуализируются так же, как пианино.

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

  1. Шаг: примечание (в этой точке данных можно закодировать паузы, поэтому я не включаю их здесь отдельно)
  2. Продолжительность: как долго звучит нота (стандарт MIDI кодирует продолжительность неинтуитивным способом, но для однострочных данных MIDI это не имеет значения)

Этих двух элементов, соединенных вместе, достаточно, чтобы воплотить и обеспечить соблюдение критериев, описанных г-ном Голдином в его главе «Мелодическое письмо с белыми нотами» (Голдину, 15 лет). Обратите внимание, что динамическая маркировка не была стандартной для этого стиля, поэтому объем не нужно учитывать. Конечно, любая настройка лирики должна учитывать лирические акценты и очертания, что совсем другое дело и выходит за рамки проекта в его нынешнем виде.

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

Следующие шаги

Прежде всего, как анализировать MIDI-файлы. Сейчас я работаю на Python, и, к счастью, для этого есть библиотека: Mido.

Теперь пришло время научить компьютер теории музыки! Для меня сейчас проще дать компьютеру какие-то правила, чем пытаться научить его учиться, поэтому я, пожалуй, начну с этого. Создание простой мелодической линии, в которой не будет «слишком много пиков и впадин», которая не будет «слишком трезвучной» или «слишком статической» (Голдин в 20 лет), должна быть достаточной отправной точкой, чтобы оставаться в академических пределах. уместность.

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

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