Использование музыкально-компьютерных технологий для решения музыкальных творческих задач

IX Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Использование музыкально-компьютерных технологий для решения музыкальных творческих задач

Горюшина К.А. 1
1ГБОУ СОШ №5 « ОЦ «Лидер» г. о Кинель
Ионова Т.Ю. 1Лобанков А.А. 2
1ГБОУ СОШ №5 « ОЦ «Лидер» г.о. Кинель
2федеральное государственное автономное образовательное учреждение высшего образования «Самарский национальный исследовательский университет имени академика С.П. Королева» (Самарский университет)
Автор работы награжден дипломом победителя III степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Введение

Я уже очень давно занимаюсь музыкой. Моя жизнь без нее просто невообразима.

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

Так возникла тема моего исследования – «Использование музыкально-компьютерных технологий для решения музыкальных творческих задач».

Целью представленной исследовательской работы является изучение основ музыкально-компьютерных технологий и создание музыки с помощью этих технологий

Для достижения поставленной цели я поставила следующие задачи:

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

Изучить основы музыкально-компьютерных технологий в целом и музыкального программирования в частности.

Запрограммировать свою собственную музыку.

Описать технологию создания музыки на языке программирования музыки Sonic Pi.

Объектом данного исследования являются музыкально-компьютерные технологии, применяемые для программирования музыки.

Предметом исследования выступает процесс изучения основ музыкального программирования.

Гипотезы исследования:

Современная музыка не может существовать отдельно от компьютерных технологий.

Для изучения основ музыкального программирования требуются дополнительные знания в области музыкальной теории и практики.

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

Методы исследования:

сбор информации;

изучение литературы по теме исследования;

изучение программ для музыкального программирования;

обобщение;

анализ полученных результатов.

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

Глава 1

Компьютерная музыка

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

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

Компьютерная музыка появилась относительно недавно, с тех пор, как появились сами компьютеры. И как термин она использовалась профессиональными специалистами для обозначения в области инженерных разработок, так или иначе связанных со звуком, цифровой обработкой звука, цифровым синтезатором звуков. В настоящее время термин «Компьютерная музыка» используют все. Но в основном, это музыкальные слушатели и исполнители. Он применяется к клубной музыке, а также любой другой музыке, которая создана с применением музыкально-компьютерных технологий. Считается музыкой XXI века. Сейчас музыку на компьютере можно не только обрабатывать, но и создавать с нуля. [1]

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

Даже такие немузыкальные звуки, как, например, хлопанье двери, можно записать с помощью цифрового кода, а затем ускорить, замедлить или музыкально скомбинировать его с другими звуками. [2]

1.2. Музыкально-компьютерные технологии

Новые информационные технологии сегодня внедряются во многие сферы профессиональной деятельности, в том числе и в музыкальный творческий процесс в виде музыкально-компьютерных технологий (МКТ). Компьютеры являются неотъемлемой частью производства современной музыки: она сочиняется на компьютере, партитуры распространяются электронными способами, исполнители играют на компьютеризированных инструментах, и, наконец, сама композиция записывается и обрабатывается в цифровом виде [3]. Появляется всё больше проектов, синтезирующих разнообразные творческие направления и виды искусств и использующих для этих целей мультимедиа-технологии, в которых аудио-составляющая занимает важное место (звуковое сопровождение к кино- и видеоматериалам, 2D и 3D компьютерным играм, веб-проектам). МКТ позволяют "перепоручать" вычислительной машине выполнение различных алгоритмических действий над звуковыми и музыкальными данными, если они чётко описаны на "понятном" ей языке, т.е. запрограммированы. Заметим, что "музыка, ввиду своей абстрактной природы, была первым видом искусства, предпринявшим попытку примирить художественное творчество и научную мысль" Данные технологии открывают новые возможности для творческого эксперимента, расширения музыкального кругозора, и это делает обучение владению ими особенно актуальным[4].

Элементы программирования и алгоритмической деятельности  присутствуют как в МКТ, так и в теоретических аспектах музыки:

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

Основные понятия музыкальной теории (например, длительность, размер, интервал, аккорд, лад, композиционная структура и т.д.) выражаются посредством чисел или числовых рядов. При этом ряд музыкальных "операций" (таких как транспозиция, инверсия, дублирование и проч.) легко выражается через математические формулы как функции. Оказалось возможным даже записать все соотношения интервалов, аккордов и тональностей на языке математической теории групп. Примеры применения математического аппарата можно найти, например, в работах [5].

Звук как волна описывается математической функцией, изменяя параметры которой можно модифицировать и получающийся звуковой сигнал. Любой существующий сегодня вид синтеза музыкальных звуков предполагает программирование. Анализ звука требует подобных же операций: например, разложение в ряд Фурье при спектральном анализе звуковой волны. Обработка звука чаще всего представляет собой настройку и применение фильтра или набора фильтров или операций – т.е. задание параметров функций и их композиции.

Компьютерная аранжировка и запись звука предполагают соединение различных модулей посредством шин, настройку разнообразных параметров фильтров и многие другие аспекты, требующие навыков программирования (иногда некоторые составляющие данного вида деятельности называются programming – программирование).

Самым же непосредственным образом соприкасаются с программированием специалисты в области создания различных МКТ, поскольку потребности музыкантов ставят всё новые задачи по проектированию и реализации специализированных музыкальных приложений и сред, совершенствованию их интерфейса. [6]

Языки для музыкального программирования

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

Одни из самых популярных языков программирования музыки:

ChucK —язык программирования, предназначенный для написания музыки, синтеза звука в реальном времени и организации взаимодействия различной специализированной периферии. ChucK является интерпретируемым языком. Нативно поддерживает параллельное исполнение нескольких потоков (так называемых «thread») программы, причем исполнение этих потоков происходит в соответствии с определенными циклами, что позволяет производить их синхронизацию силами самого Чака. ChucK является мультипарадигменным языком со строгой типизацией данных и не совсем обычным синтаксисом, связанным с особенностью области применения. [7]

При всей простоте, дружелюбности и интуитивной понятности, в ChucK встречаются и проблемы.

Среда разработки – miniAudicle – конечно, мало пригодна для таковой. Да, есть подсветка синтаксиса, обзор устройств, контроль виртуальной машины, консоль. Но – нет даже элементарного поиска/замены.

Однако данный язык программирования музыки довольно сложный для восприятия и имеет запутанный интерфейс

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

Однако данный язык программирования музыки довольно сложный для восприятия и имеет запутанный интерфейс.

Sonic Pi— среда программирования в реальном времени для создания электронной музыки. Была разработана участниками компьютерной лаборатории Кембриджского университета и Raspberry Pi Foundation. [8] Sonic Pi позволяет писать музыку путём написания кода на Ruby. Для проигрывания музыки добавлено несколько простых, пригодных для обучения функций, таких как play, позволяющая проигрывать ноту по. Мелодия может быть записана посредством последовательности вызовов play и sleep, или с помощью функции play_pattern. Для задания темпа исполнения служит функция use_bpm, а для выбора текущего инструмента — use_synth. Для синтеза звука в реальном времени Sonic Pi использует SuperCollider и другие технологии, также проект получил поддержку для проведения новых исследований и разработки от фонда Nesta.

Sonic Pi отлично подходит для меня. Здесь можно легко программировать в реальном времени.

Глава 2

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

У вас есть только пустой открытый блокнот. Вы пишете одну команду, вторую, третью — и в результате рендеринга появляется Звук. Сначала он очень примитивен. Шум или, может быть, тон частотой 440 Гц.

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

2.1. Пользовательский интерфейс и основные команды языка SonicPi

У Sonic Pi очень простой интерфейс для кодирования музыки (рис.1).

рис. 1 – интерфейс языка Sonic Pi

A - Управление воспроизведением, B - Управление редактором, C - Помощь и справка, D - Редактор кода, E - Панель настроек.

A. Управление Воспроизведением

Эти розовые кнопки - главные элементы для запуска и остановки звука. Есть кнопка «Выполнить» для запуска кода из редактора, «Остановить» для остановки всего выполняющегося кода, «Сохранить» для сохранения кода в файл и «Запись» для создания записи того, что вы слышите в звуковой файл в формате WAV.

B. Управление редактором

Эти оранжевые кнопки позволяют управлять редактором кода. Кнопки «размер +» и «размер - » позволяют сделать текст больше и меньше.

C. Помощь и справка

Данные синие кнопки дают вам доступ к информации и настройкам. Кнопка Информация открывает справочное окно, в котором находится информация о самом Sonic Pi - главной команде разработчиков, истории, помощниках и сообществе. Кнопка Помощь включает систему помощи (F), а кнопка Параметры включает панель настроек, где можно менять некоторые базовые параметры приложения.

D. Редактор кода

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

E. Панель настроек

В Sonic Pi есть множество настраиваемых параметров. Доступ к ним можно получить, нажав кнопку «Параметры» в наборе кнопок «Помощь и справка». Она переключит видимость панели настроек, в которой представлено множество вариантов, доступных для изменения. Примерами являются режим моно, инвертированное стерео, включение вывода детальных сообщений, ползунок громкости и выбор аудиовыхода Raspberry Pi. [9]

Основные команды языка Sonic Pi:

Play. С помощью этой команды можно сыграть любую ноту. Существует 2 способа набора нот:

Цифрами. Числа имеют прямое отношение к клавишам пианино. play 47 означает «сыграй сорок седьмую ноту на пианино». То есть play 48 - это на одну ноту выше (следующая клавиша справа). Так сложилось, что нота “До” четвертой октавы имеет номер 60. Для меня этот способ достаточно неудобен. Чтобы понять, какую цифру нужно поставить, надо от «До» четвертой октавы отсчитать нужную ноту. Это происходит очень долго. Для меня более удобен 2 способ набора нот.

Латинскими буквами. Каждая нота имеет свое название латинской буквой. Например, нота «До» обозначается буквой «С», «Ре» - «D», «Ми» - «E», «Фа» - «F», «Соль» - «G», «Ля» - «A», «Си» - «В». К данным буквам можно приписать знак # (диез), букву «s», которая обозначает повышение на полтона (как и диез) и букву «b», которая обозначает понижение на полтона (как и бемоль). Соответственно рядом с латинской буквой должна стоят цифра – нумерация октав ( если смотреть на фортепиано, то слева на право будет 7 октав – от одной ноты «До» - до другой ноты «До»). В качестве примера можно привести такое: play :C3#.

Чтобы играть мелодию, необходимо между нотами поставить паузу. В Sonic Pi паузы обозначаются командой sleep. После данной команды следует поставить цифру – количество секунд. Например, sleep 1 обозначает паузу продолжительностью 1 секунду.

Другой отличный способ сочинять музыку - использовать заранее записанные звуки. Они называются sample. В Sonic Pi можно делать много забавных вещей с сэмплами. Помимо 90 встроенных сэмплов со свободной лицензией, программа даёт возможность играть с собственными. Пример сампла: sample :ambi_lunar_land.

Иногда нам приходиться повторять одно и тоже место несколько раз. Для этого мы пишем одну и ту же команду. Это очень неудобно. В Sonic Pi, чтобы сделать цикл, существует блок do/end. Если в редакторе кода поместить команды в этот блок, и нажать на кнопку «Выполнить», то вы услышите тишину. Помимо этого блока, к слову do нужно поместить еще несколько слов. Если мы добавим сочетание 2.times do, то данный блок будет повторяться 2 раза и т.д. Можно также написать в редакторе кода выражение loop do. В данном случае, этот цикл будет повторяться бесконечное количество раз. Как только начинает выполняться цикл, выйти из него уже нельзя, не нажав кнопку “Остановить”. Обернув первый цикл в do/end блок типа in_thread, мы заставляем Sonic Pi выполнять содержимое блока do/end точно в то же самое время, когда начинается следующее выражение после блока do/end.

2.2 Описание процесса программирования и отладки музыкального произведения на языке Sonicpi

В своей практической части я хочу спрограммировать 2 произведения – классику (в моем случае отрывок из произведения Л. Бетховена «К Элизе») и произведение собственного сочинения.

2.2.1. Людвиг ван Бетховен «К Элизе»

Для программирования классической музыки я в основном буду использовать команды play и sleep.

Для начала я установила на компьютер приложение «Sonic Pi», нашла в сети Интернет ноты данного произведения и выбрала отрывок, который буду программировать (рис.2).

рис. 2 – ноты Л. Бетховен «К Элизе»

Далее я открыла бесплатное приложение «Sonic Pi» и выбрала свободный буфер (рис.3).

рис. 3 – приложение «Sonic Pi»

Следующим этапом было начало программирования. Я, смотря на ноты, писала код в «Sonic Pi» с помощью команд playиsleep и названий нот на латинице. Время «сна» я выбрала 0.3 секунды – это оптимальное время для этого произведения, которое было определено подбором, основываясь на моем музыкальном слухе (рис.4).

рис. 4 – начало программирования

Спустя несколько часов я наконец-то закончила программировать отрывок произведения Людвига ван Бетховена «К Элизе». Это было достаточно легко, т.к. я уже на протяжение 7 лет учусь в музыкальной школе, а вся сложность этого программирования состояла в том, чтобы, смотря на ноты писать их названия и номер октавы (рис.5). Другими словами, человеку, без знаний нотной грамоты и не имеющему представления о теоретических основах музыки было бы довольно не просто запрограммировать данное произведение.

рис. 5 – окончание программирования отрывка из произведения Людвига ван Бетховена «К Элизе»

После окончания программирования, я записала данное произведение в формат «wav» с помощью кнопки на панели управления воспроизведения «Rec» или «Запись».

2.2.2. Собственное произведение

Программировать собственное произведение я буду с помощью сэмплов.

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

Как и в предыдущем случае, программирование начинается с открытия среды разработки «Sonic Pi» и выбора свободного буфера. Среда программирования для языка Sonic Pi включает в себя систему автодополнения (рис.6). Нужно просто начать набирать название группы сэмплов, например sample :ambi, и появится выпадающее меню с названиями сэмплов на выбор.

С помощью блока do/end типа n.times, я пишу значение n = 4 и заполняю этот блок сэмплом sample :bd_tek с паузой в 0.43 секунды. У нас получается своеобразный ритм или бит. Перебрав несколько сотен различных сочетаний значений параметров я пришла к оптимальным, на мой взгляд, значениям для того звучания, которого хотела добиться (рис.7).

рис.6 – система автодополнения

рис. 7 - Программирование ритма или бита произведения

После этого, я создала блок do/end типа in_thread, поместила туда блок do/end типа n.timesсо значение n=1, а в него пару сэмплов (рис. 8). В этом блоке есть такие сэмплы, как sample :loop_amen_full, amp: 0.5, и sample :bass_hard_c, attack: 0.5,где после самого сэмпла стоят слова ampиattack. Эти слова – это огибающие сэмплов. Напримерamp – это амплитуда звука, а attack – фаза атаки. По умолчанию фаза атаки равна 0 для всех синтов, что значит их амплитуда меняется от 0 до 1 мгновенно. Поэтому начальный звук синта похож на удар. Но вам может понадобиться плавно вывести звук.

рис.8 – Программирование звучания барабанов

Д алее я сделала «сон» 2 секунды и добавила команду use_synth :mod_beep. Синты могут генерировать новые звуки в зависимости от того, как вы ими управляете, в отличие от сэмплов. В этом синте, с помощью команды play, я добавила несколько звуков цифрами. Получилась красивая мелодия(рис.9).

рис. 9 – Программирование мелодии в синтезаторе mod_beep

Прослушав получившуюся мелодию, следом я добавила блок do/end типа in_thread, поместила туда блок do/end типа loop и поместила внутрь бит, который мы уже добавляли в начале моего сочинения - sample :bd_tek со «сном» в 0.43 секунды (рис.10).

рис. 10 – Программирование ритма или бита произведения

Следующим моим шагом было создание блока do/end типа n.timesсо значение n=8. В него я поместила несколько сэмплов, а также сэмпл с огибающими ampиattack(рис.11).

рис.11 – Программирование звука «сломанного робота».

В конце написания своей музыки, я создала блок do/end типа in_thread и добавила туда сэмпл с огибающей атакой, равной 0.5 (рис12).

рис.12 –Программирование звука бассов

После окончания программирования, я записала данное произведение в формат «wav» с помощью кнопки на панели управления воспроизведения «Rec» или «Запись».

Заключение

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

В ходе исследования я пришла к следующим результатам и выводам:

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

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

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

в процессе изучения музыкального языка программирования я познакомилась с основами процедурного программирования, что, несомненно, пригодится в моей дальнейшей работе;

Sonic Pi – превосходный язык с простой и понятной средой для музыкального программирования, осилить который под силу даже школьнику.

Таким образом, мои гипотезы подтвердились.

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

Список использованной литературы

Berg, P. «Abstracting the future: The Search for Musical Constructs» Computer Music Journal 20(3), 1996 - 27с.

Лора Ван Тайл. Журнал «Америка», №369 (август), 1987 – 61с.

Кинтцель Т. Программирование звука на ПК. – М.: ДМК Пресс, 2005 – 250c.

Xenakis I. Formalized Music: Thought and Mathematics in Composition. – Bloomington, London: Indiana University Press, 1970 – 133c.

Эйлер Л. Опыт новой теории музыки, ясно изложенной в соответствии с непреложными принципами гармонии. / Отв. ред. Казанский Н.Н. / Санкт-Петербургский научный центр РАН. – СПб.: "Нестор-История", 2007 – 271c.

Roads C. The Computer Music Tutorial. – Cambridge, London: The MIT Press, 1999 – 818с.

Wang, Ge The ChucK Audio Programming Language: A Strongly-timed and On-the-fly Environ/mentality (Ph.D.). Princeton University, 2008 – 590с.

ЛесПаундер. Sonic Pi: Ну-ка, пошумим! // LinuxFormat.— 2015.— Октябрь (№ 10 (201)).— 95с.

Sam Aaron. Sonic Pi, 2012 – 86 с.

Просмотров работы: 1303