Гласс вспоминает, как на одном из занятий его наставница, Надя Буланже, вдруг начала беспокоиться о его здоровье: «Вы не больны, голова не болит? Не хотите сходить к терапевту или к психиатру? Это можно устроить так, что никто не узнает». Когда он заверил ее, что совершенно здоров, она развернулась в своем кресле и, указывая на упражнение по хоралам, которое он выполнил на той неделе, завопила: «Тогда как вы объясняете это?!» И действительно, Гласс увидел, что в альтовой и басовой партиях, которые он написал, притаились скрытые квинты.
Творческий мыслитель отличается склонностью к разрыву с традиционными правилами. В случае программы AlphaGo мы видели такой разрыв в 37-м ходе второй партии. Точно так же Бах иногда нарушает в своих хоралах правило о недопустимости параллельных квинт. Но значит ли это, что у него получается плохой хорал? Как объясняла мне моя наставница Эмили, удовольствие от сочинения музыки отчасти и состоит в нарушении таких правил. Это открывает лучший путь к преобразовательному творчеству по Боден.
Гармонизация хорала имеет два измерения. Гармония должна быть осмысленной в вертикальном направлении, но в самих партиях, взятых по отдельности, в горизонтальном направлении, также должны быть логика и созвучность. Написать хорал так, чтобы эти два измерения сливались в единое целое, – трудная задача для композитора-человека.
Тогда, может быть, этим смогут заняться новые алгоритмы, основанные на машинном обучении? Можно ли извлечь из опубликованных хоралов Баха секрет его мастерства? В качестве одного из способов проверки этого предположения можно было бы провести статистический анализ, чтобы попытаться угадать наиболее вероятное направление, в котором будет идти развитие каждого голоса, исходя из того, как он развивался до данного момента. Например, можно обнаружить, что в одном из сопровождающих голосов в разных хоралах несколько раз встречается последовательность нот «ля— си – до – си – ля». Затем можно провести статистический анализ нот, следующих после ля. В BWV 396 следующая нота ниже – соль-диез. Но если взять данные BWV 228 (аббревиатура BWV означает номер в
Трудность такого подхода, как обнаружил Коуп, когда пытался выявить характерные музыкальные фразы композиторов, состоит в установлении количества нот, определяющих каждое следующее решение. Если взять слишком мало, мелодия может пойти в любом произвольном направлении. Если взять слишком много, последовательность станет переопределенной и будет просто воспроизводить то, что уже создал Бах. А кроме того, нужно учесть не только высоту тона, но и ритмические рисунки.
Продвижение слева направо с постепенным построением голосов на основе того, что происходило раньше, кажется наиболее очевидным методом, поскольку именно таким образом мы слушаем музыку. Но это не единственный возможный способ статистического анализа произведения. Алгоритм DeepBach, который разработал в качестве диссертационного проекта музыковед Гаэтан Аджер, работавший под руководством Франсуа Паше и Франка Нильсена, пытается анализировать хоралы Баха, выводя их за пределы времени и рассматривая хоралы как двумерные геометрические конструкции. Если из геометрической конструкции удалить какую-то часть и проанализировать окружающую ее картину, можно предположить, как заполнил бы этот пробел Бах. Поэтому алгоритм не сочиняет в прямом хронологическом порядке, а рассматривает части произведения, продвигаясь назад. Это стандартный прием решения головоломки: нужно начать с конечного состояния и попытаться понять, как к нему можно прийти. Но можно брать и отрывки из середины произведения и выяснять, чем Бах заполнял эти участки.
Такой многомерный анализ приводит к более структурно связанным хоралам, чем те, которые получаются у алгоритмов, пробирающихся от начала к концу, не зная, куда именно ведет их извилистый путь, и ориентируясь только по тому, что произошло в прошлом. Тем не менее и этот анализ на самом деле производится лишь на локальном уровне. Алгоритм рассматривает сферу, окружающую каждую ноту, и пытается определить ноту, исходя из содержимого сферы, но размер сферы ограничен. В случае DeepBach он рассматривает по четыре такта в обе стороны от данной ноты. Насколько же успешно работает этот алгоритм?