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

Ruby - мощный объектно-ориентированный язык программирования. Он может сделать ОЧЕНЬ много, особенно при разработке веб-приложений, но он редко используется для обработки звука. Помимо нескольких драгоценных камней, аудио и Ruby почти не взаимодействуют (SonicPi является огромным исключением из этого правила).

SoX - это инструмент для обработки звука из командной строки, часто называемый швейцарским армейским ножом для обработки звука. Беглый просмотр обширной документации показывает, что возможности огромны. SoX может делать многое из того, что вы можете себе представить, со звуком, а также с некоторыми другими. После установки SoX вы сможете ощутить волшебство с помощью простой команды для записи звука прямо с микрофона вашего компьютера (Ctrl + C остановит запись).

rec -t .wav output.wav

SoX и Ruby пересекаются в способности Ruby вызывать системные команды. В этом посте мы быстро рассмотрим, как можно начать связывать команды SoX вместе с Ruby.

В этом кратком руководстве предполагается, что у вас установлены SoX и Ruby. Я использую VS Code в качестве текстового редактора.

Шаг 1: в пустом каталоге откройте новый файл Ruby. Чтобы проверить, работает ли SoX, напишите простой метод Ruby, который будет вызывать системную команду для записи короткого аудиофайла в каталог, в котором вы работаете.

Шаг 2. Сохраните файл и запустите его в своем терминале. Вы увидите, что SoX выполняет команду, переданную ему через метод Ruby.

Шаг 3. Проявите творческий подход, используя методы Ruby и SoX. Прочтите руководство по SoX, есть масса интересных вещей, которые можно попробовать. Вы можете генерировать синусоидальные волны, склеивать аудиофайлы, добавлять эффекты и многое другое. Ruby может зацикливать команды, и, очевидно, вы можете написать методы, которые будут следовать один за другим. Передача только что записанных аудиофайлов из одного метода в другой открывает возможности обширных манипуляций за один запуск вашей программы Ruby.

Знакомясь с этим, я решил, что хочу попытаться вызвать в воображении некую «звуковую мульчу». Я решил записать несколько клипов, объединить их вместе, повторить это аналогичными методами, а затем наложить результаты. В качестве бонуса я также решил связать способность SoX генерировать спектрограммы в качестве последнего шага моей программы.

Как видите, мои первые два метода записывают по два аудиоклипа каждый. sleep () «вставляет» паузы между записями. Следующие два метода объединяют результаты первых двух методов в свои собственные файлы, «recordingcombined.wav» и «outputcombined.wav». Затем метод merge_audios берет эти два файла, накладывает их друг на друга и экспортирует их в «record_output_combined.wav». Наконец, последний удар моей скромной программы - метод спектрограмм. Все файлы, создаваемые этими методами, будут находиться в каталоге, из которого вы работаете. Перемещение их в отдельную папку упрощает повторный запуск программы без изменения параметров имени файла в вашем коде.

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

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

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

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

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

(работа над этим сообщением продолжается)