Код для музыки

На первый взгляд программисты и музыканты мало похожи, однако между их формами работы можно найти много общего. Об этом 29 марта рассказал слушателям Владимир Красильщик — эксперт по программированию на Java с пятнадцатилетним стажем работы. На лекции он провел параллели между двумя искусствами и рассказал, как создание музыки на компьютере с помощью программы Sonic Pi может помочь людям не бросать обучение.

Иллюстрация: Дмитрий Лисовский
Иллюстрация: Дмитрий Лисовский

Как профессиональный Java-программист с опытом разработки программных обеспечений для таких компаний, как «Яндекс. Маркет» и Дойче Банка, обычно я выступаю на конференциях и рассказываю об этом языке. Но, помимо профессиональный карьеры, я с детства увлекаюсь и занимаюсь музыкой: окончил музыкальную школу по классу фортепиано, освоил гитару, играл в различных коллективах на некоммерческой основе. С опытом профессиональной деятельности и хобби я пришел к выводу, что музыка и программирование очень похожи.

Чем похожи программист и музыкант

И музыка, и программирование — это искусство. То есть некая сфера деятельности, которая не предполагает точного пути к успеху. Нет готовых алгоритмов «сделай так и получи музыкальный хит», либо «сделай эдак и разработай игру-бестселлер». Все очень неопределенно. Даже самый главный литературный труд по программированию автор Дональд Кнут назвал «Искусство программирования». Внутри формулы, алгоритмы, код, а название книжки как бы намекает на то, что, несмотря на наши попытки формализовать нашу область, это все равно достаточно неопределенная вещь.

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

Источник: shutterstock.com
Источник: shutterstock.com

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

Этапы создания музыкального произведения или видеоигры тоже похожи. У человека появляется идея, он собирает команду, затем ищет деньги от инвесторов, сделав что-то маленькое — сингл или демо. Получив средства, коллектив заседает в одном месте и усиленно работает над конечным продуктом.

В чем еще схожесть музыкантов и программистов? И тем, и другим очень важно рабочее окружение. Мы очень придирчивы к тому, с кем мы будет играть, делать музыку или писать программы. В одной из компаний я работал в одной комнате с 16 людьми на протяжение трех лет. За это время в коллективе образовалось четыре пары, и три из них поженились. Настолько нам важно окружение.

Общие проблемы

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

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

Лекция Владимира Красильщика «Программирование музыки на Sonic Pi»
Лекция Владимира Красильщика «Программирование музыки на Sonic Pi»

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

Как можно решить проблему?

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

Хочется дать людям что-то простое и понятное, как пульт от квадрокоптера. На этом устройстве всего два джойстика и несколько кнопок. Любой ребенок спустя полчаса уже полетит. Конечно, полет не совсем настоящий, но опыт какой-никакой уже есть, и дальше можно наращивать сложность.

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

Сэм Аарон. Источник: cc.au.dk
Сэм Аарон. Источник: cc.au.dk

В 2016 году участвовал в конференции по Java и познакомился с Сэмом Аароном. Он приехал в Петербург и показывал инструмент для программирования музыки Sonic Pi. На вечеринке в честь закрытия мероприятия Сэм работал как диджей в течение двух часов, используя только Sonic Pi. После того дня я и захотел научиться работать в программе.

Что из себя представляет программа

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

Сколько наш звук может звучать, в течение какого времени звук спадает, темп — все это можно регулировать с помощью Sonic Pi. Кроме того, программа поддерживает звуки многих музыкальных инструментов и сэмплов, а также позволяет записывать композиции в стерео.

Владимир Красильщик
Владимир Красильщик

Междисциплинарный подход

В какой стране лучшее образование в мире? Это сложный вопрос, но в последние годы все часто говорят о Финляндии — в скандинавской стране недавно отменили школьные предметы. Как теперь проходят занятия для детей и подростков? Ученики приходят не на уроки, а участвуют в проектах – к примеру, приготовление особого блюда. Вместе с ними в процессе приготовления участвуют разные учителя, и каждый из них рассказывает о своей в теме в контексте проекта: где растут ингредиенты, какая это почва, когда придумали блюдо, что это за национальная кухня. В результате, дети получают множество знаний в разных областях и учатся работать вместе с ними. Это современный междисциплинарный подход к образованию.

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

Будущее программы

Создатель программы Сэм Аарон ушел из Кембриджа, чтобы посвящать все свое время инструменту. В данный момент он продолжает улучшать программу, записывает с ее помощью музыку и готовит первый альбом. Совсем недавно состоялось знаковое событие — в лондонском Альберт-холле оркестр играл программу на тысячу инструментов, и одним из них был Sonic Pi. Еще одну амбициозную цель поставили себе юзеры — они хотят создать целый оркестр из пользователей и играть музыку одновременно.

Лекция Владимира Красильщика «Программирование музыки на Sonic Pi»
Лекция Владимира Красильщика «Программирование музыки на Sonic Pi»

Скачать Sonic Pi можно бесплатно по ссылке

Дмитрий Лисовский, ITMO.NEWS

456 views·8 shares