Креативное написание кода в классе с Sonic Pi

(Эта статья была опубликована в issue 9 of the Hello World Magazine, источник на английском)

Код - один из самых креативных инструментов, созданных людьми. Изначально непонятные символы скобок и лямбд не просто глубоко укоренились в науке и математике. Они - самое близкое, чего нам удалось достичь практике в произнесении заклинаний, подобно Гендальфу и Гарри Поттеру. Я думаю, что это даёт нам мощные средства вовлечения в наши пространства обучения. С помощью магии кода мы можем сотворить индивидуально значимые истории и поучительный опыт.

Мы окружены чудесными событиями. От ловкости рук фокусника, заставляющего шар исчезнуть в воздухе, до удивительного зрелища выступления любимой группы на большой сцене. Именно эти моменты “вау” вдохновляют нас взять в руки книгу по магии и выучить “Французский Сброс” или начать играть пауэр-аккорды на старой гитаре. Как мы можем создать такое же глубокое и продолжительное чувство удивления, которое будет мотивировать людей заниматься и изучать основы программирования?

Musical Engines and Notation

Истории музыки и компьютеров причудливо переплелись с момента появления вычислительных машин, или просто “машин”, как называли мощный аналитический вычислитель Чарльза Бэббиджа. Ещё в 1842 году математик Ада Лавлейс, тесно сотрудничавшая с Бэббиджем, увидела творческий потенциал этих машин. Хотя эти первые машины изначально были разработаны для точного решения сложных математических задач, Ада мечтала создавать с их помощью музыку:

“… машина могла бы сочинять сложные и глубокие научные произведения любой степени сложности и протяженности”. Ада Лавлейс, 1842 год.

Конечно, сегодня, в 2019 году, большая часть нашей музыки, независимо от жанра, либо сочинена, либо спродюсирована, либо сведена с помощью цифрового компьютера. Мечта Ады сбылась. Можно даже проследить историю еще дальше. Если рассматривать программирование как искусство написания последовательностей специальных символов, которые дают компьютеру инструкции для выполнения определенных действий, то музыкальная композиция - это очень похожая практика. В западной музыке символы - это черные точки, расположенные на нотной линейке, которые указывают музыканту, какие ноты и когда играть. Интересно, что если мы проследим корни западной музыкальной нотации до итальянского монаха-бенедиктинца Гвидо д’Ареццо, то обнаружим, что система точек и линий, которую используют современные оркестры, является лишь одной из нескольких систем нотации, над которыми он работал. Некоторые из них были гораздо ближе к тому, что мы сейчас считаем кодом.

Get

Sonic Pi Performances

Лайв-кодинг

Sonic Pi использовался для выступлений в самых разных местах, таких как школьные залы, ночные клубы, открытые сцены на музыкальных фестивалях, часовни колледжей и престижные музыкальные заведения. Например, удивительный проект Convo, в рамках которого 1000 детей собрались в Королевском Альберт-холле, чтобы исполнить амбициозную новую композицию композитора Шарлотты Хардинг. Произведение было написано для традиционных инструментов, хора, перкуссии и кода Sonic Pi. Поп-артистка Jylda также выступила с Sonic Pi в Sage Gateshead на конференции Thinking Digital Conference, где она создала уникальный импровизированный live-coded ремикс на свою песню Reeled.

Sonic Pi в Королевском Альберт-холле Sonic Pi используется как один из инструментов в рамках Convo в Королевском Альберт-холле. Фотография предоставлена Питом Джонсом.

Live coding в классе

Sonic Pi – это инструмент для создания и исполнения музыки на основе кода, который опирается на все эти идеи. В отличие от большинства компьютерных образовательных программ, он одновременно достаточно прост для использования в учебных заведениях и достаточно мощный для профессионалов. Он использовалась для выступлений на международных музыкальных фестивалях, для создания композиций в различных стилях – от классики до EDM и хэви-метала, и даже получил рецензию в журнале Rolling Stone. Sonic Pi поддерживает разнообразное сообщество, насчитывающее более 1,5 миллионов лайвкодеров с различным опытом, которые учатся и делятся своими идеями и мыслями с помощью кода. Его можно бесплатно скачать для Mac, PC и Raspberry Pi, и он включает в себя удобный учебник, который подразумевает, что вы ничего не знаете ни о коде, ни о музыке.

Sonic Pi был изначально задуман как ответ на новую учебную программу по информатике, выпущенную в Великобритании в 2014 году. Цель состояла в том, чтобы найти мотивирующий и веселый способ обучения основам программирования. Оказалось, что между ними много общего, и это очень весело – объяснять последовательность как мелодию, итерацию как ритм, условия как музыкальное разнообразие. Я разработал первоначальный дизайн и первые итерации платформы вместе с Кэрри Энн Филбин, которая привнесла в проект взгляд преподавателя. С тех пор Sonic Pi подвергалась итерационным улучшениям благодаря обратной связи, полученной от наблюдения за учащимися и непосредственного сотрудничества с педагогами в классе. Основная философия дизайна заключалась в том, чтобы никогда не добавлять функции, которым нельзя было бы легко обучить 10-летнего ребенка. Это означало, что большинство идей пришлось сильно дорабатывать и переделывать, пока они не стали достаточно простыми. Сделать вещи простыми, сохранив при этом их мощь, по-прежнему остается самой трудной частью проекта.

Чтобы обеспечить необходимую мотивацию, дизайн Sonic Pi никогда не ограничивался исключительно сферой образования. В идеале должны быть известные музыканты и исполнители, использующие Sonic Pi в качестве стандартного инструмента наряду с гитарами, барабанами, вокалом, синтезаторами, скрипками и т. д. Эти исполнители выступали бы в качестве мотивирующих ролевых моделей, демонстрирующих творческий потенциал кода. Для того чтобы это стало возможным, необходимо было уделить достаточное внимание и приложить усилия, чтобы сделать Sonic Pi мощным инструментом, но при этом достаточно простым для восприятия 10-летними детьми. Помимо педагогов, на ранних стадиях разработки я также работал непосредственно с различными художниками в классах, художественных галереях, студиях и местах. Это обеспечило важную обратную связь, которая позволила Sonic Pi развиваться и в конечном итоге расцвести как инструменту для творческого самовыражения.

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

Сообщество Sonic Pi продолжает расти и делиться удивительными программными композициями, планами уроков, музыкальными алгоритмами и многим другим. Многое из этого происходит на нашем форуме in_thread (in-thread.sonic-pi.net), который является домом для очень разнообразной группы людей, включающей педагогов, музыкантов, программистов, художников и создателей. Это настоящая радость – видеть, как люди учатся использовать код, чтобы выразить себя по-новому, и как это, в свою очередь, вдохновляет других делать то же самое.

Некоторые интересные возможности

С точки зрения информатики, Sonic Pi предоставляет вам строительные блоки для обучения основам, предусмотренным учебной программой Великобритании, таким как последовательность, итерации, условия, функции, структуры данных, алгоритмы и др. Однако он также опирается на ряд важных и актуальных концепций, которые стали общепринятыми в промышленности, таких как параллелизм, события, сопоставление шаблонов, распределенные вычисления и детерминизм – и при этом все достаточно просто, чтобы объяснить 10-летнему ребенку.

Get

play 70

Мелодия может быть построена с помощью ещё одной команды – sleep:

play 72
sleep 0.5
play 75
sleep 0.5
play 79

В этом примере мы играем ноту 70 (примерно 70-я нота на фортепиано), ждем 1 секунду, играем ноту 72, ждем полсекунды и затем играем ноту 75. Интересно то, что с помощью всего двух команд мы имеем доступ практически ко всей западной нотации (какие ноты играть и когда), и учащиеся могут запрограммировать любую мелодию, которую они когда-либо слышали. Это приводит к огромному разнообразию выразительных результатов, в то же время концентрируясь на одной и той же вычислительной концепции: последовательности в данном случае.

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

sample :loop_amen

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

sample :loop_amen, rate: 0.5

В 90-е годы ряд музыкальных площадок взорвался новой технологией, которая позволила артистам разрезать подобные барабанные брейки на части и собирать их в другом порядке. Например:

sample :loop_amen

случайный