- PVSM.RU - https://www.pvsm.ru -

Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня)

Продолжаем тему музыкального программирования [1] — ранее мы говорили о языках Csound, SuperCollider и Pure Data, а сегодня рассказываем Python и библиотеках FoxDot, Pippi и Music-Code.

Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня) - 1 [2]
Фото Conor Samuel [3] / Unsplash

FoxDot [4]

Это — библиотека для начинающих муз. программистов. Его разработал [5] инженер Райан Киркбрайд (Ryan Kirkbride) в 2015 году. FoxDot задумывался как личный проект — с его помощью Райан устаивал live-сессии под псевдонимом Qirky [6] — однако теперь с инструментом работают [7] по всему миру.

Библиотека использует возможности пакетного протокола Open Sound Control [8] (OCS) и виртуальной среды для аудиосинтеза SuperCollider [9], которая была разработана в 1996-м, но до сих пор активно поддерживается [10] сообществом. Программист создает объекты с аргументами, обозначающими инструмент, высоту тона, продолжительность звучания. Звуки можно выстраивать в паттерны и зацикливать, чтобы создавать сложные музыкальные конструкции. Код превращается в музыку в реальном времени — вот пример работы [11] с библиотекой:

Если вы хотите изучить инструмент самостоятельно, имеет смысл начать знакомство с подробной официальной документации [12]. Ответы на многие вопросы есть на тематическом форуме [13]. Свои предложения и пожелания с новыми функциями можно оставлять в репозитории на GitHub [14].

Pippi [15]

Эту библиотеку разработал один из представителей инди-лейбла LuvSound, поддерживающего новую музыку и молодых исполнителей. В своём составе она имеет [15] несколько структур для работы со звуком, включая распространенные SoundBuffer и Wavetable. Предназначение Pippi — работа с уже имеющимися звуками — инструмент позволяет объединять и модифицировать загруженные семплы.

from pippi import dsp

sound1 = dsp.read('sound1.wav')
sound2 = dsp.read('sound2.flac')

# Mix two sounds
both = sound1 & sound2

Он также дает возможность строить на основе семплов абсолютно новые акустические конструкции — например, формировать «гранулированные» звуки. Это — метод, при котором семпл разбивают [16] на множество коротких отрезков («гранул») и перемешивают их. Вот код для создания 10-секундного сигнала такого формата из звука в переменной enveloped:

# Synthesize a 10 second graincloud from the sound,
# with grain length modulating between 20ms and 2s
# over a triangle shaped curve.
cloudy = enveloped.cloud(10, grainlength=dsp.win('tri', dsp.MS*20, 2))

Библиотека Pippi не позволяет воспроизводить музыку в реальном времени, поэтому сама по себе плохо подходит для «живых» концертов. Однако в тематическом треде на Hacker News автор рассказал, что разработал [17] сторонний интерфейс — Astrid [18]. Он автоматически перезапускает музыкальный файл после сохранения, тем самым открывая возможности для выступлений на сцене.

Music-Code [19]

Эту небольшую библиотеку написал дата-саентист Уэсли Лоуренс (Wesley Laurence [20]). Она умеет генерировать аккорды, звуки барабанов и бас-гитар. Свой инструмент автор использует, чтобы создавать семплы для моделей машинного обучения. Библиотека позволяет работать с секвенсорами, агрегаторами, семплерами и различными акустическими эффектами. Кроме музыки, Music-Code позволяет готовить визуализации для муз.композиций.

Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня) - 2
Фото Tanner Boriack [21] / Unsplash

Пока что у Music-Code совсем небольшая аудитория, так как библиотека довольно молодая — она была опубликована на GitHub [19] всего три месяца назад. Однако автор планирует развивать свой инструмент и надеется, что ему удастся привлечь новых пользователей — особенно среди специалистов в области систем ИИ. Автор планирует записать и выложить видео с инструкциями о том, как подступиться к Music-Code.


Дополнительное чтение в «Мире Hi-Fi»:

Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня) - 3 Что такое музыкальное программирование — кто и почему им занимается [22]
Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня) - 4 Где взять аудио для машинного обучения: подборка открытых библиотек [23]
Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня) - 5 Как устроен Sporth — ЯП для музыкальных live-сессий [24]
Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня) - 6 Где брать аудио для разработки игр и других проектов [25]
Как писать музыку на Python — помогут три тематические библиотеки (для специалистов разного уровня) - 7 Звуки для UI: подборка тематических ресурсов [26]


Автор: Audioman

Источник [27]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/python/356897

Ссылки в тексте:

[1] музыкального программирования: https://habr.com/ru/company/audiomania/blog/496138/

[2] Image: https://habr.com/ru/company/audiomania/blog/518824/

[3] Conor Samuel: https://unsplash.com/photos/AdnHBOr09i8

[4] FoxDot: https://foxdot.org/

[5] разработал: https://ryan-kirkbride.github.io/

[6] Qirky: https://qirky.github.io/

[7] работают: https://forum.toplap.org/t/artist-who-use-foxdot/881

[8] Open Sound Control: https://ru.wikipedia.org/wiki/Open_Sound_Control

[9] SuperCollider: https://www.audiomania.ru/content/art-7405.html

[10] активно поддерживается: https://supercollider.github.io/download

[11] пример работы: https://www.youtube.com/watch?v=CXrkq7u69vU

[12] официальной документации: https://foxdot.org/docs/

[13] тематическом форуме: https://toplap.lurk.org/c/communities/foxdot

[14] репозитории на GitHub: https://github.com/Qirky/FoxDot

[15] Pippi: https://github.com/luvsound/pippi

[16] разбивают: https://www.izotope.com/en/learn/the-basics-of-granular-synthesis.html

[17] разработал: https://news.ycombinator.com/item?id=24290920

[18] Astrid: https://github.com/luvsound/astrid

[19] Music-Code: https://github.com/wesleyLaurence/Music-Code

[20] Wesley Laurence: https://github.com/wesleyLaurence

[21] Tanner Boriack: https://unsplash.com/photos/hxnBkzz9iL4

[22] Что такое музыкальное программирование — кто и почему им занимается: https://www.audiomania.ru/content/art-6815.html

[23] Где взять аудио для машинного обучения: подборка открытых библиотек: https://www.audiomania.ru/content/art-7382.html

[24] Как устроен Sporth — ЯП для музыкальных live-сессий: https://www.audiomania.ru/content/art-7140.html

[25] Где брать аудио для разработки игр и других проектов: https://www.audiomania.ru/content/art-6948.html

[26] Звуки для UI: подборка тематических ресурсов: https://www.audiomania.ru/content/art-6930.html

[27] Источник: https://habr.com/ru/post/518824/?utm_source=habrahabr&utm_medium=rss&utm_campaign=518824