Как работают алгоритм и музыка вместе:
статья на языке Pascal
Как работают алгоритм и музыка вместе: статья на языке Pascal
Из разговора с Алексеем Наджаровым становится понятно, программирование – неотъемлемая часть в работе с электронной музыкой. В рамках нашего спецпроекта коресспондент журнала reMusik.org Елизавета Голева подготовила статью об алгоритмической музыке и программировании и предлагает читателю с помощью языка Pascal погрузиться в материал.
program Матемпсихоз
function Нет никакого откровения в том, что многие великие учёные и исследователи в сфере точных наук и техники были ещё и замечательными музыкантами или ценителями музыкального искусства. Почему физиков так тянет к лирике и что из этого получается?
begin
Спросите любого знакомого программиста, к чему его тянет в свободное время, и он с огромной вероятностью ответит, что это походы (любой спорт) и/или музыка. Походы оставим на лето, а сейчас зацепимся ухом за второй ответ. Да, опера и множество музыкальных друзей химика Бородина, как и скрипка физика Эйнштейна ― не случайные происшествия: ещё Пифагор рассказал всем про «музыку сфер» и изобрёл монохорд для своих музыкальных измерений. Это всё люди учёные, находившиеся в сфере точных наук, откуда у них поэтические настроения? Но вернёмся к IT.
Программирование выросло из математики, а математика родилась вместе с музыкой, и обе эти стихии равно прекрасны и удивительно точны. Они давно ― от Пифагора ― идут вместе. Музыка в Средневековье и в цветущую эпоху Rinascimento ― часть математических дисциплин, математика в это время ― один из способов создавать музыку. Например, популярна была изоритмическая техника, когда на протяжение всего многоголосного сочинения многократно повторяется один ритмический рисунок, независимо от проведения мелодии в том же голосе. Повторяемая ритмическая фигура называется талья (талеа), повторяемая мелодическая линия ― колор.
Разнообразность звучания здесь достигается тем, что ритмический рисунок и звуковысотная линия содержат несовпадающее количество единиц (в примере это последовательности из 8 единиц в ритмической части и 12 единиц в мелодии, паузы не учитываются), а значит, накладываются друг на друга. Главное, мы видим работу с двумя заданными параметрами ― ритмом и высотой звука. Налицо операция, подозрительно похожая на алгоритм.
if
Алгоритм ― «инструкция, точное описание способа действия с использованием простых, общепонятных элементов». Выходит, ноты, клавиры-партитуры как раз и есть та самая инструкция, созданная композитором. Общепонятность здесь условна, строго говоря, «операцию» по нотам выполнить может тот, кто ноты понимает и умеет читать. Впрочем, некоторые используют ноты как подсказки в картинках и просто следуют за восходящими и нисходящими линиями, что тоже способ, однако точность при таком подходе дело спорное.
then
Выходит, все партитуры ― алгоритмы, композиторы ― программисты, а Гвидо Аретинский создал Python для музыкантов [cоздатель Python – Гвидо ван Россум. – прим. ред.]? Можно сказать и так.
else
…Георг Фридрих Харсдёрффер ― немецкий писатель, переводчик, поэт, эрудит и изобретатель. Любитель комбинаторной литературы, он в XVII веке придумал диск из пяти колец, каждое из которых, во-первых, содержало те или иные части слова (круг с префиксами, круг с суффиксами, с корнями и окончаниями и так далее), во-вторых, вращалось независимо от других. Барочный агрегатор слов стал популярен и разошёлся не просто за пределы Германии, но за пределы литературы, так что в XVIII веке Европа вовсю пользовалась музыкальными генераторами по образу Харсдёрфферова кольца с непереводимым названием.
Конструкция позволяла сооружать небольшие пьесы в разных жанрах, независимо от уровня музыкальной подготовки игрока: нужно было крутить диск и составлять из выпавших музыкальных кусочков собственный занятный сувенир. Так, немецкий теоретик музыки Иоганн Филипп Кирнбергер в 1757 году создал свой диск «Всегда готовый сочинитель менуэтов и полонезов» (The Ever-Ready Minuet and Polonaise Composer), при помощи которой можно было собрать полонез из одного шеститактного и одного восьмитактного периодов, или менуэт и трио по восемь тактов в каждом. Подобные игры были весьма популярны, так что авторство одной из них даже приписывается Моцарту, но это не подтверждено.
Далее XX век. Вот полетел первый самолёт, вот Тесла научил мир беспроводной передаче электричества, вот из литературы на нас сверзился «Улисс» (все помнят, что в «Улиссе» изложение ― это поток/и сознания, а форма ― и есть содержание?). Cтановилось всё очевидней, что мир звучит, что он всегда звучал, что звук первостихия и поток, а значит ― часть всего, основа порядка, поверяемая алгеброй субстанция. Поиск и изобретение систем в музыке всегда были увлекательны: от двенадцати полутонов при темперации клавишных инструментов во времена Баха до двенадцатитоновой техники письма нововенцев, от невм Гвидо Аретинского до вербальной партитуры Штокхаузена.
try
Тем не менее, не Кейджем единым.
except
Кейдж и его «4’33» известны так же, как «Чёрный квадрат» Малевича, и точно так же для многих знаменуют абсолют авангардной мысли. Это не должно заставлять нас думать, будто ничего больше рядом не было. Штокхаузен, например, был одним из тех, кто экспериментировал с нотацией, то есть с графическим обозначением звучания и соотнесением означающего с означаемым. С середины 50-х годов он так увлекался, изобретая свою уникальную систему нотации чуть ли не для каждого нового произведения, что ему приходилось сопровождать каждый опус объёмным комментарием. В конце концов, им была создана вербальная партитура, в которой не было ни намёка на нотный стан или что-то ещё из музыкальной графики, только текст, описывающий, как должно исполнять его новую музыку. Сочинение называется «Aus den Sieben Tagen».
writeLn
Так что мы можем сказать о программировании и алгоритмической музыке?
Начнём с того, что речь о стихиях и потоках не была сплошной аффектацией. Многие популярные программы и приложения, нацеленные на обработку и создание музыки, работают в концепции потока данных (Dataflow). Порядок работы примерно таков: программист задаёт исходные данные (частота, пути взаимодействия элементов), программа обрабатывает запрос и выдаёт результат. Как правило, у таких агрегаторов есть библиотека, из которой случайным образом выбираются элементы для каждой новой композиции. Случайность крайне важна, так же, как и достаточно большое количество вариантов исходных данных, из которых будет выбирать программа, иначе, по закону алгоритма, результат всегда будет один и тот же. Это, кстати, пересекается с подходом Джона Кейджа, который открыл все возможные шлюзы и позволил звуковому потоку прорваться и царствовать. Он сознательно оперировал случайными процессами, используя привычную нотацию для упорядочивания внемузыкального: например, партитура “Imaginary Landscape № 4” создана для двенадцати радиоприемников. В ней указаны моменты включения и выключения приемников, даны указания насчет употребления определенных диапазонов волн, всё это при помощи традиционных нотных знаков и пауз, с прописанной партией для каждого приёмника на манер оркестровой партитуры, вот только никогда заранее неизвестно, что будет звучать в данный момент на данном диапазоне радиоволны, поэтому результат всегда случайный и никогда – повторяющийся. Попробовать, а значит, понять как это работает, можно в музыкальном генераторе WebernUhrWerk, в основе которого додекафонная серия Антона фон Веберна, яркого нововенца, или в приложении Max/MS.
Заметное место в программировании всего, в том числе и музыки, занимает обучение искусственных нейронных сетей. Процесс трудоёмкий, поскольку компьютер необходимо научить различать музыкальные стили, составлять «правильные» соединения музыкальных элементов, то есть научить компьютер воспринимать, квалифицировать и генерировать музыку, начиная от интервалов и заканчивая целыми периодами. Примерно как провести будущего композитора по пути от музыкальной школы до консерватории.
write
Как работает алгоритм? Он оперирует данными и инструкциями к этим данным, включая условия (если…, то…). Мы берём данные (жанр, тембр, набор инструментов, etc) и пропускаем их через определённый порядок действий. Можно попробовать сделать это в программе WolframeTones. Идея этой программы в том, чтобы на базе музыкальной теории и при помощи языка программирования Wolframe составлять музыкальные комбинации, не существовавшие ранее.
Конечно, Стивен Вольфрам, разработчик WolframeTones, далеко не единственный, кто создаёт площадки для генерирования компьютерной музыки. Например, музыкант и разработчик Карлхайнц Эссль создал программу Lexikon-Sonate, которая на основе характерных закономерностей музыки разных эпох и стилей генерирует музыкальные композиции. Композитор Янис Ксенакис разработал GENDYN, программу, основанную на стохастике. Разработкой и исследованием современных технологий в области музыки занимаются целые институты и специальные организации ― такие как IRCAM в Париже, CCRMA в Калифорнии и Лаборатория Новых Медиа в Петербурге.
write
Важное направление в современной электроакустической музыке ― интерактивные выступления. Как именно: вы приходите на мероприятие с живой компьютерной музыкой, композитор/программист/исполнитель (часто это одно и то же лицо) просит проделать некоторые манипуляции с вашим смартфоном (перейти на сайт или загрузить определённое приложение), а затем, следуя указаниям, стать одним из исполнителей. Люди любят играть, особенно, если процесс подразумевает творчество. Вспомнить только недавний эксперимент Google Arts and Culture, где вследствие машинного обучения четыре пузыря имитировали оперный ансамбль. Речь о Blob Opera. На мой взгляд, это замечательная иллюстрация к использованию нейронных сетей и интерактивному компьютерному творчеству.
write
Что делать композитору, если некоторые компьютеры уже научились составлять уникальные музыкальные произведения, а те, у которых по-прежнему отсутствуют нейронные сети, способны прогнать алгоритм и всё равно выдать результат?
Вот что говорят об этом композиторы XX века:
Янис Ксенакис: «С появлением компьютеров композитор станет чем-то вроде пилота: ему останется только нажимать на кнопки, вводя координаты, и осуществлять контроль над путешествием корабля в пространстве музыки»;
Джон Кейдж: «Я оперирую случайным: это помогает мне пребывать в состоянии медитации, а также избегать субъективизма в моих пристрастиях и антипатиях»;
Владимир Мартынов: «Музыка перестала быть тем, чем она являлась начиная с эпохи барокко, а именно: она перестала быть искусством выражения и изложения. Более того, ныне музыка стремится стать тем, чем она была до Перотина, а именно: музыка стремится стать потоком. <…> Настал конец времени композиторов».
Подведем итог: стало очевидным непрерывное перевоплощение музыки в математику и математики в музыку. Этот процесс можно назвать матемузыкальным «метемпсихозом». «Матемпсихоз» существовал всегда, поскольку музыка ― это поток и вселенская гармония, а композитор ― пилот/штурман/ азартный игрок/оператор, определяющий путь, прокладывающий маршрут, комбинирующий некоторое количество сочетаний, жонглирующий математическими моделями, чтущий премудрость марковых цепей, стохастики и планкалкюля, чуткий художник и настоящий учёный, который просчитывает вероятности и слышит музыку сфер даже в конце времён.
end.
Пояснения от автора:
Оформление текста стилизовано под программу, написанную в Pascal – на самом простом языке программирования, который проходят в школе. Использован синтаксис этого языка, где begin и end. – команды начала и конца, program – название программы, function – подпрограмма, определяющая единственное значение, if..then..else – операторы условия, write и writeLn – команды, выводящие на экран текст. Команды и операторы выделены другим шрифтом (Consolas).
Литература:
Бундин А. С. Теория и практика современной электроакустической композиции: автореферат диссертации на соискание ученой степени кандидата искусствоведения : специальность 17.00.02 <Музыкальное искусство> / Бундин Андрей Сергеевич ; [Рос. гос. пед. ун-т им. А. И. Герцена]. — Санкт-Петербург, 2013. — 24 с.
Горбунова И. Б., Заливадный М. С., Кибиткина Э. В. Музыкальное программирование: учебное пособие для студентов высших учебных заведений, обучающихся по направлению 050100 — Педагогическое образование / Горбунова И.Б., Заливадный М. С., Кибиткина Э.В. ; Федер. гос. бюджет. образоват. учреждение высш. проф. образования «Рос. гос. пед. ун-т им. А.И. Герцена». — Санкт-Петербург: Изд-во РГПУ, 2012. — 195 с.
Зарипов Р. Х. Кибернетика и музыка / Р. Х. Зарипов; отв. ред. В. В. Иванов. — Изд. 3-е. — Москва: URSS: Либроком, 2014. — 232 c.
Мартынов В. И. Конец времени композиторов / Послесл. Т. Чередниченко. — М.: Русский путь, 2002. – 296 с.
Hedges, Stephen A. “Dice Music in the Eighteenth Century.” Music & Letters, vol. 59, no. 2, 1978, pp. 180–187. JSTOR, www.jstor.org/stable/734136. Accessed 13 Apr. 2021.
Nierhaus, Gerhard. “Algorithmic composition: paradigms of automated music generation”. — Wien; New York: Springer, 2009, 287 p.