В этой небольшой статье вкратце расскажу о том, что такое 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 — это простейший “UGen” (Unit Generator). ознакомиться с набором UGen’ов (Unit Generators) можно в соответствующем разделе помощи.
2) Тоже самое, но стерео
3) Стерео, но разные фазы в каждый канал
или, как пример многоканального расширения (в примере на 4 канала, с разностью фаз = pi/4)
4) Переведение сигнала из одного канала в другой c частотой регулируемой положением курсора мыши (от 0.1 до 50 Гц) по горизонтали
5) Модулирование частоты сигнала и частоты переведения из одного канала в другой
6) Тоже самое, но с треугольной огибающей
Теперь создадим синт:
и “сыграем” на нём паттерн:
Pbind, Pseq, Pseries — это одни их базовых элементов для создания мелодий и ритмических рисунков. Кроме них, есть множество других (например Pfsm для использования модели finite-state-machine), которые можно комбинировать. Конечно, никто не запрещает писать свои паттерны используя нужный алгоритм.
· Сайт проекта
· Примеры кода с возможностью послушать
· Документация
· Книжка The SuperCollider Book (охватывает все аспекты SC и даже больше — must have)
SuperCollider подойдет для тех кому не хватает классических DAW (digital audio workstation) и кто хочет получить более гибкий инструмент для создания музыки, живых выступлений и прочих аудио (и визуальных) экспериментов.
Среда
В качестве среды разработки, в зависимости от платформы, может использоваться нативный редактор (в случае 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) и кто хочет получить более гибкий инструмент для создания музыки, живых выступлений и прочих аудио (и визуальных) экспериментов.