Pull to refresh

Введение в SuperCollider

Sound
Sandbox
В этой небольшой статье вкратце расскажу о том, что такое SuperCollider и продемонстрирую примеры его использования. SuperCollider — это open-source кроссплотформенное клиент-серверное приложение, среда разработки и язык программирования для аудиосинтеза в реальном (и не только) времени. Первый релиз увидел свет в 1996 году под авторством James McCartney, это был open-source продолжение его предыдущих изысканий в программном аудиосинтезе. Со временем к проекту присоединилось еще несколько человек. Сайт проекта хоститься на sourceforge.net. Есть версии для Linux ( в т.ч. ubuntu ppa ), Windows, MacOS (так же готовятся iPhone и Android версии).

Среда


В качестве среды разработки, в зависимости от платформы, может использоваться нативный редактор (в случае Windows или Mac) или плагин к gedit, vim, emacs (Linux). Всё что нужно — это разобраться с комбинациями клавиш для запуска сервера и интерпретатора. Так же с сервером можно «общаться» по протоколу Open Sound Control (OSC) используя другие языки, но на мой взгляд интереснее разобраться с “родным” языком.

Язык


Первоначально в качестве основы языка была взята концепция Smalltalk, но со временем язык по утверждению авторов приобрёл черты других языков. В итоге получился весьма экспрессивный и компактный язык. Ниже приведу несколько примеров, а подробное описание языка можно найти в документации в разделе “Language Reference”.
Можно писать GUI к своим аудио экспериментам — есть много полезных заготовок: слайдеры, кнобы, анализаторы и прочее. Кроме того в качестве контроллеров можно использовать устройства MIDI, Wiimote и другие HID (human input device).

Примеры


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

Начнём с простого “синта” и пойдем дальше:

1) Синусоидальный сигнал 200Гц в один канал (1-ый — левый по-умолчанию)

{ SinOsc.ar(200) }.play;

SinOsc — это простейший “UGen” (Unit Generator). ознакомиться с набором UGen’ов (Unit Generators) можно в соответствующем разделе помощи.

2) Тоже самое, но стерео

{ SinOsc.ar(200) ! 2 }.play;

3) Стерео, но разные фазы в каждый канал

{ Mix2.ar(SinOsc.ar(200, pi/2), SinOsc.ar(200)) }.play;

или, как пример многоканального расширения (в примере на 4 канала, с разностью фаз = pi/4)

{ SinOsc.ar(200, [0, pi/4, pi/2, pi/4*3]) }.play;

4) Переведение сигнала из одного канала в другой c частотой регулируемой положением курсора мыши (от 0.1 до 50 Гц) по горизонтали

{ Pan2.ar(SinOsc.ar(200), SinOsc.kr(MouseX.kr(0.1,50))) }.play;

5) Модулирование частоты сигнала и частоты переведения из одного канала в другой

{ Pan2.ar(SinOsc.ar(150, add: SinOsc.kr(50, mul: 20)), SinOsc.kr(SinOsc.kr(0.1).abs*10)) }.play;

6) Тоже самое, но с треугольной огибающей

{ Pan2.ar(SinOsc.ar(150, add: SinOsc.kr(50, mul: 20)), SinOsc.kr(SinOsc.kr(0.1).abs*25), 1) * EnvGen.ar(Env.triangle(20, 1)) }.play;

Теперь создадим синт:

SynthDef(\simple_synth, { |freq = 60, dur = 0.25, amp = 0.8, out|
Out.ar(out, SinOsc.ar(freq)*EnvGen.ar(Env.triangle(dur, amp), doneAction:2) ! 2);
}).add;


и “сыграем” на нём паттерн:

Pbind(
\freq, Pseq([ Pseries(50, 10, 50), Pseries(550, -20, 25) ], inf),
\dur, 1/8
).play;


Pbind, Pseq, Pseries — это одни их базовых элементов для создания мелодий и ритмических рисунков. Кроме них, есть множество других (например Pfsm для использования модели finite-state-machine), которые можно комбинировать. Конечно, никто не запрещает писать свои паттерны используя нужный алгоритм.

Ссылки


· Сайт проекта
· Примеры кода с возможностью послушать
· Документация
· Книжка The SuperCollider Book (охватывает все аспекты SC и даже больше — must have)

Итого


SuperCollider подойдет для тех кому не хватает классических DAW (digital audio workstation) и кто хочет получить более гибкий инструмент для создания музыки, живых выступлений и прочих аудио (и визуальных) экспериментов.
Tags:
Hubs:
Total votes 16: ↑15 and ↓1 +14
Views 5.8K
Comments Comments 25