Однажды вечером, бесцельно бродя по Интернету, я наткнулся на Искусство кода, потрясающую речь Дилана Битти, в которой он обсуждает множество способов, которыми код может быть использован для создания и даже самого искусства. Если еще не видели, очень рекомендую. Во время этого выступления я впервые узнал о Sonic Pi, бесплатном, простом, но мощном инструменте для создания музыки с использованием кода на основе Ruby. Вдохновленный презентацией, я решил развивать свой творческий потенциал и написать сценарий в Sonic Pi, который воспроизводит цифры числа Пи как музыкальные ноты. Поиграв немного с этим невероятно забавным инструментом, я решил поделиться с вами своими знаниями, так что давайте углубимся.

Во-первых, нам нужно установить Sonic Pi, перейдя на эту страницу и скачав установщик для вашей операционной системы. Sonic Pi доступен для Windows, macOS и ОС Raspberry Pi.

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

Начнем с воспроизведения ноты. Мы можем сделать это, написав play, а затем двоеточие и примечание. Давайте сыграем ноту C.

Чтобы прослушать нашу первую ноту, нажмите кнопку воспроизведения или Alt+R. Мы можем определить октаву, добавив число после ноты. Давайте сыграем до из пятой октавы.

Мы также можем воспроизводить несколько нот одновременно, написав несколько инструкций играть.

Если мы хотим воспроизвести ноты последовательно, мы можем добавить между ними команду засыпать.

Параметр sleep представляет продолжительность паузы. Например, sleep 1 означает паузу на 1 такт. По умолчанию SonicPi настроен на 60 ударов в минуту (bpm), поэтому в данном случае это означает паузу в 1 секунду. Мы также можем определить количество ударов в минуту, написав use_bpm и желаемое значение.

Теперь, когда нам удалось воспроизвести несколько нот, давайте создадим цикл, который воспроизводит ноты 2 раза.

Мы можем создать цикл, написав x.times do, где x — количество раз, которое мы хотим повторить. После этого мы пишем инструкции, которые хотим зациклить, и, наконец, закрываем цикл с помощью endключевого слова. Кроме того, обратите внимание, что теперь мы играем со скоростью 120 ударов в минуту.

Также можно зацикливаться бесконечно, написав loop do вместо x.times do. Напишем такой пример.

Теперь, когда мы знаем основы, давайте напишем скрипт для воспроизведения константы Пи. Мы поместим цифры Пи в переменную, будем перебирать каждую цифру и играть ноту. Мы сопоставим цифры с гаммой до мажор. Поскольку в гамме до мажор 8 нот, мы перенесем оставшиеся цифры в более высокую октаву. По сути, всякий раз, когда мы сталкивались с 0, мы играли C4, для 1 D4, для 7 C5, для 8 D5 и так далее. Итак, давайте напишем код.

Сценарий можно настроить для любого количества цифр числа Пи, которое мы хотим. Вы даже можете использовать первые 100 000 цифр числа Пи, если хотите. Я создал YouTube-канал, где можно послушать звук Пи или Е константы. Вы также можете найти код и другую музыку, связанную с математикой, на Github.

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

Надеюсь, этой небольшой статьей я пробудил ваш интерес к Sonic Pi. Дайте мне знать, что вы думаете о Sonic Pi, что вы хотите создать с его помощью или что мне следует создать дальше. С удовольствием слушаю ваши творения!