Яндекс.Метрика

Содержание • Coagula • Еще несколько программ

CPS

freeware

http://cps.bonneville.nl

    Название программы расшифровывается как "cycles per second", другими словами, просто "частота".

    Интерактивность. CPS относится к программам реального времени, которые используются для различных перформансов, звуковых инсталляций, "живых" электронных композиций (live electronics) и в других случаях, когда требуется интерактивное взаимодействие исполнителей и компьютера. Такие программы позволяют создавать звуковые и логические схемы, которые в процессе исполнения создают или обрабатывают звук, в том числе звук традиционных инструментов, голоса или речи, меняя свои параметры в зависимости от запрограммированных событий: громкости, тембра, высоты тона; либо при получении данных с каких-либо контроллеров. Практически все real time программы в качестве управляющих сигналов на входе могут использовать MIDI сообщения, в виду простоты и удобности этого стандарта. Однако спектр возможных контроллеров отнюдь не ограничивается MIDI инструментами, он гораздо шире, так как абсолютно любой сигнал (видео, например), полученный компьютером, в принципе можно конвертировать в MIDI сообщение.

    Объекты и патчи. Как и другие программы этого рода (наиболее известны из них: MaxMSP и PureDate), CPS состоит из достаточно большого набора так называемых "объектов", поэтому ее можно рассматривать как объектно-ориентированный язык музыкального программирования или, другими словами, весьма большой музыкальный конструктор, из которого, в принципе, можно сделать все что угодно, имеющее отношение к звуку: синтезатор, сэмплер, секвенсор, любой эффект и т. д. Большое количество самых разнообразных примеров этих и других устройств, собранных из объектов, прилагается к программе. Каждый объект выполненяет какую-либо одну операцию с данными. Схема, составленная из некоторого количества объектов, называется патчем (patch). Группа объектов, выполняющая законченную операцию, может быть объединена в субпатч, который в дальнейшем будет представлен на экране как один объект и может быть использован в других схемах (patches).

    Контроллеры. В качестве контроллеров, помимо аудио- и MIDI данных, CPS имеет схемы, которые конвертируют в управляющие сигналы координаты мыши, джойстика и нажатие компьютерной клавиатуры. На выходе программы, помимо тех же аудио и MIDI, предусмотрена возможность управления светом через Enttec Open DMX USB Interface. Заметьте также, что многие мультимедийные программы и устройства способны принимать MIDI сообщения как управляющие сигналы, поэтому программы класса CPS могут управлять звуком, светом, видео и вообще всем, что как-то можно связать с MIDI интерфейсом.

    Совместимость с VST. Программа может работать самостоятельно (stand-alone), в качестве плагина к программе Macromedia Director и VST плагина с любым VST хостом, придавая программе хосту интерактивные возможности. Для этого надо переместить CPS2VST.dll из папки CPS/sdk/VST/bin/ в папку VST плагинов нужной программы. CPS сама может быть VST хостом, где VST инструменты или эффекты становятся объектами программы. Здесь, правда, есть проблемы, потому что далеко не все VST устройства поддерживаются. Во всяком случае, большинство плагинов без собственного графическго интерфейса успешно работает, а вот с графическим интерфейсом - как повезет.

    Аудиочастота и контрольная частота. Аудиоданные представлены в программе в стандарте MPEG-4 Structured Audio, т. е. в диапазоне -1 +1. Выполнение логических операций многими сотнями объектов на аудиочастоте может перегрузить процессор, поэтому большая часть действий происходит не на частоте звукового потока (A-rate, обычно 44100), а на так называемой контрольной частоте (K-rate), которая равна частному от деления частоты аудиовыборки на размер аудиобуфера (sample rate/buffer size). Таким образом, единицей аудиоданных оказывается количество сэмплов, содержащееся в аудиобуфере (по умолчанию — 512, но можно выставить любое значение). При необходимости, есть возможность работать и с отдельными сэмплами, такой режим работы объекта называется "sample precision". В этом случае можно получить задержку (delay), например, даже на один сэмпл, но пользоваться этим следует с осторожностью, по причинам, изложенным выше. Результаты разного рода преобразований данных на контрольной частоте (K-rate) управляют аудиопотоком, меняя его параметры, преобразуют звук, включают и выключают различные устройства и т. п.

    MIDI и аудио. Работа с MIDI данными, конечно, значительно проще, так как они изначально полностью структурированы и имеют гораздо меньший объем. Важной особенностью CPS является то, что аудио- и MIDI потоки, конвертированные в данные, на контрольной частоте друг от друга отличаются только тем, что одни передаются синхронно, пусть и на значительно меньшей частоте (аудио), а другие (MIDI), естественно, асинхронно, как и весь MIDI интерфейс. Других отличий нет, что позволяет этим двум потокам данных взаимодействовать любым образом, управлять друг другом, конвертироваться и т. д.

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

    Интерфейс. Программа имеет два окна: левое — рабочее и правое — информационное. В нем появляются сообщения о ваших ошибках — неправильных соединениях, недопустимых значениях аргументов, а также подсказки и описания свойств некоторых объектов (таблиц, например). Там же находится клавиша запускающая аудиопроцесс. В целом, объекты могут подключаться на лету, без остановки аудио, однако иногда случаются глюки, так что не забывайте почаще сохранять результаты работы. Обязательно аудио надо останавливать при смене аудиоустройства, изменении размера буфера или количества буферов.

    Меню объектов открывается кликом мыши в свободном пространстве рабочего окна программы.

    Audio: аудиовход и выход (звуковые устройства можно выбирать, если раскрыть эти объекты), запись на диск и воспроизведение, ограничитель клипов, LFO для аудио и контрольных сигналов, несколько примеров аудиосубпатчей: тремоло, фленджер, панорама, реверберация. Некоторые из них сами по себе достаточно сложные устройства. Например: ревербератор состоит (включая субпатчи на нескольких уровнях) приблизительно из сотни простых объектов.

    MIDI: входы и выходы, запись и чтение, виртуальная клавиатура, объекты и субпатчи (здесь они называются "макросы") для распознавания и создания отдельных типов сообщений: нот, контоллеров, эксклюзивных системных сообщений.

    Extrn: подключаемые субпатчи и плагины. Довольно большое количество макросов самого разного содержания. Их описания в help файле нет, поэтому в их назначении придется разбираться самостоятельно. Некоторые из них имеют комментарии внутри схемы. Здесь же можно подключить VST плагины.

    Meta: склад самых разных объектов, которые не поддаются систематизации. Autostart — это понятно, float — объект, запоминающий значение, orderобъект, при помощи которого можно назначить последовательность работы нескольких одинаковых объектов (иначе программа может впасть в ступор), и многое, многое другое. Здесь же, почему-то, находится такое типичное аудиоустройство как компрессор (вообще, логику расположения объектов в меню иногда понять трудно).

    Display: фейдеры, кнопки, окна для ввода или контроля каких-либо цифр, окна для записи комментариев.

    Conversion: два подменю. В первом (Rate) нахадятся объекты для преобразования аудиоданных (A-rate) в контрольные (K-rate) и обратно. Во втором (Pitch) то же самое, но для MIDI.

    Oscillator: разнообразные генераторы колебаний, как аудио, так и на контрольной частоте. Вообще почти все объекты могут работать на этих двух частотах. Переключение — клавиши "PgUp", "PgDn". Здесь же находятся преобразователи джойстика, мыши, компьютерной клавиатуры.

    Operator: логические операторы — логическое сложение, умножение, отрицание, операторы "равно", "больше чем", "меньше чем", и т. д. и т. д. Как правило, именно логические операторы являются сердцевиной, главными элементами большинства схем.

    Math: объекты для выполнения различных математических действий и преобразований.

    Table: таблицы. В них должны содержаться числовые наборы данных, необходимые для работы множества других объектов. Например: для работы осциллятора должна быть задана форма колебания. При заполнения таблицы знание каких-либо математических формул может потребоваться только в исключительных случаях, так как они снабжены большим количеством пресетов, а в информационной панели появляются подсказки и примеры заполнения таблицы данного типа. Во многих случаях можно воспользоваться готовыми таблицами, которые предлагаются тут же: представлены все основные формы колебаний, используемых в синтезе, различные типы шума, некоторые математические кривые и др. Данные, содержащиеся в таблице, могут быть записаны на харддиск и прочитаны с него: например, в таблицу можно загрузить сэмпл. С помощью других объектов из этого же меню можно работать с материалом таблиц: ограничивать длину сэмпла или создавать в нем петлю, менять в реальном времени величину гармоник в синтезируемом звуке, тем самым меняя его тембр в реальном времени и многое другое. Таблицы используются не только при синтезе звука, с их помощью можно задавать последовательность любых событий.

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

    Noise: генераторы шума или случайных чисел (на частоте K-rate). Очень большой выбор. Объекты работают в разных диапазонах, с разным распределением чисел, с разными управляющими сигналами.

    Filter: различные частотные фильтры, из которых можно собрать эквалайзер на любой вкус.

    Spectral: объекты, выполняющие прямые и обратные преобразования Фурье, и любопытный объект под названием "Apollo", который весьма уверенно определяет высоту тона.

    Amplifier: всего один объект "rms", определяющий громкость звука и конвертирующий ее в контрольный сигнал.

    Delay: несколько линий задержки, в том числе и для контрольных сигналов.

    Network: программа позволяет коллективную работу с участием нескольких компьютеров, объединенных в сеть.

    Light: управление светом (упоминалось выше).

    Patch: объекты, необходимые для создания субпатчей (схем, которые могут выглядеть как один объект). Для соединения таких объектов с другими объектами необходимо создать в этих схемах входы и выходы (APatchOut, APatchIn, KPatchIn, KPatchOut).

    Help и образцы. Для подробного ознакомления со свойствами многих объектов файла помощи недостаточно. Он слишком краток, расчитан на людей уже ориентирующихся в приемах работы с цифровым звуком и помнящих хотя бы школьную математику. К счастью, автор снабдил программу очень большим количеством примеров и заготовок. Каждый объект проиллюстрирован схемой, в которой он является ключевым элементом (CPS/Examples/Object examples/), и, если не полениться и дать себе труд разобраться в предложенном материале, количество темных мест быстро начинает сокращаться.

    Пример. Теперь — конкретный пример создания несложной схемы (patch). Для демонстрации выберем что-нибудь интерактивное, так как среди приложенных к программе патчей и макросов по настоящему интерактивных мало. Допустим, требуется схема, которая в условиях концерта или спектакля сама, без вмешательства человека, начинала бы воспроизведение звукового файла. Условием начала воспроизведения будет превышение определенного уровня громкости. Ситуаций, когда такого рода схема пригодится, можно себе представить сколько угодно. Это может быть абсолютно точное вступление фонограммы вместе с певцом или синхронизация с каким-нибудь громким музыкальным событием (вступлением ударных, например), крик или выстрел на сцене, фейерверк или просто переход на повышенные тона.

    Начало и конец схемы понятны, так как они определены задачей. В левом верхнем углу располагаем объект "audioIn", внизу — "audioFromDisk" и соединяем его с "audioOut". Назначаем аудиовход и выход, раскрывая соответствующие объекты, а в объекте "audioFromDisk" назначаем нужный звуковой файл. Сразу запомним, что на вход "audioFromDisk" нам нужно подать цифру "1", потому, что проигрывается первый файл. Если бы файлов было несколько, нужна была бы цифра, соответствующая номеру фа��ла.

    Преобразование сигнала. Следующая задача — преобразовать аудиопоток на входе в контрольный сигнал. Сделать это можно при помощи нескольких объектов: audioControl, decimate, downsamp, rms. В данной схеме можно использовать любой из них, но так как обычно в таких случаях используется "downsamp", так и поступим. На выходе объекта поставим цифровое окошко "number Fild" (1) для того, чтобы визуально определить порядок значений в этой части схемы.

    Логический оператор. Теперь необходимо устройство, которое будет пропускать сигнал только выше определенного порога. Наиболее подходящие для этой цели объекты — операторы "меньше чем" или "больше чем". Разницы никакой нет, только в первом случае сигнал надо будет получать на выходе "true", во втором — "false". Принцип работы оператора следующий: — на левый вход (left argument), с помощью числового окна (number field 2), подадим некоторое постоянное пороговое значение сигнала, на центральный (right argument) — текущее. Если постоянное значение становится меньше текущего, оператор пропускает сигнал на левый выход (true). Самый правый вход оператора называется "evaluate", при получении любого сигнала он дает команду на вычисление, в данном случае на операцию сравнения. Продублируем на него сигнал с объекта "downsamp". Таким образом, при поступлении каждого сигнала на центральный вход, со входа "evaluate" будет поступать команда на сравнение аргументов.

    Отладка. Приступим к отладке схемы. Чтобы облегчить ее, создадим цифровое окно "number field 3", которое будет регистрировать факт прохождение сигнала через оператор. Конкретные значения сигнала на всех этапах зависят от элементов звукового тракта: микрофона, пульта, звуковой карты, даже от акустики помещения; они будут разными в каждом конкретном случае. Поэтому схема должна отлаживаться в тех же условиях, в которых она будет работать. В нашем случае фоновый уровень был около 0.001 (number field 1), а пиковый (хлопок в ладони) больше 0.01 (number field 3). Методом проб и ошибок находим пороговый уровень между этими двумя величинами. Получается примерно 0.003 (number field 2). При больших значениях не каждый хлопок в ладони проходит, при меньших — много ложных срабатываний.

Теперь нужно превратить достаточно случайное число на выходе оператора в "1", так как проигрывается первый файл. Это совсем просто. Используем объект "constant", который при поступлении на вход любого сигнала на выходе дает фиксированное значение.

    Обратная связь. Схема уже вполне работоспособна, однако имеет один недостаток. Так как уровень входящего аудиосигнала часто имеет, даже в громких фрагментах, большие перепады амплитуды, то и переход через пороговое значение будет происходить много раз, что приведет к многократному срабатыванию схемы, то есть к эффекту заикания или просто к треску. Чтобы не допустить этого, немного усовершенствуем схему, добавив в нее обратную связь. Соединим выход объекта "constant 1" со входом числового окна "number field 2". Теперь после прохождения сигнала через оператор, значение "1" через числовое окно будет подано на левый вход оператора и надежно его запрет.

    Для того чтобы снова привести схему в рабочее состояние, создадим объект "constant 2" с известным уже пороговым значением и подсоединим к нему кнопку "Reset", при нажатии на которую пороговое значение "0.003" будет возвращено на левый вход оператора и схема перейдет в состояние ожидания.

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

    Варианты схемы. Схему можно улучшать и дальше. Можно поставить низкочастотный фильтр на входе, тогда уменьшится вероятность ложного срабатывания от случайных ударов или шагов, можно создать еще одну обратную связь, соединив выход "constant 1" и вход кнопки "Reset", вставив по дороге задержку (delayEvent). Тогда через заданное время схема сама будет возвращаться в рабочее состоние.

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

    Несмотря на большое количество очевидных багов (упомянутые выше проблемы с подключением VST, экранные глюки, зависания при подключении "на лету" аудио субпатчей и др.), расставаться с программой очень не хочется. Уж больно она легкая, удобная и современная - если сравнить ее с аналогами (pd, MaxMSP). Синтаксис и логика построения схемы однозначны (аудио поток - слева направо, контрольный поток - сверху вниз). Сравните с pd, где объект "recive" может оказаться в любом месте схемы по отношению к объекту "send", и найти именно его часто не так просто, не говоря уже о том, что это ��ораздо менее наглядно.

    И еще много всяких логичных и удобных вещей - начиная от естественного сегодня неограниченного undo, до возможности прямого подключения сенсоров системы ICubeX и нескольких систем управления светом. Там есть еще и возможность управления видео. Она, правда очень глубоко спрятана, в скрытых функциях. Читайте внимательно help и запаситесь бубном - может понадобиться.

    Но самая симпатичная возможность программы - это возможность подключения VST эффектов. Дело в том, что создание логических схем и схем интерактивного управления аудио потоком доступны любому здравомыслящему человеку. А вот создание качественных аудио схем (синтеза и обработки) занятие куда более сложное и немногие музыканты способны с нуля сделать нечто приличное. Во всяком случае, нужен определенный опыт. Поэтому возможность легкого подключения готовых plugins - очень большое преимущество. Увы, именно в этом пункте и самые большие проблемы.

    Написал я примерно все это автору (Niels Gorisse). Сначала он пытался свалить все на спецификацию VST, но потом согласился, что это все же баг программы. Как я понял, дело в последовательности запуска нескольких процессов, которая однозначно действительно не прописана в спецификации VST, а программа понимает только один вариант. Причем конкретная очередность запуска процессов зависит от сочетания множества факторов и напрямую не зависит от типа процессора, системы и платформы. Поэтому на разных компьютерах, даже одинаковых, результаты получаются разные. А заниматься этим сейчас ему некогда, денег за это не платят, может быть "когда-нибудь". Очень обидно.

    Все же дам несколько рекомендаций для тех, кто рискнет. Я, вот, CPS все же студентам даю как первую интерактивную программу. Начинать с pd, как то негуманно.

1. Прочитайте внимательно F.A.Q. на сайте. Это снимет половину проблем.

2. Перебрав довольно большое количество VST эффектов, я отобрал достаточно большую группу, которая работает на большинстве компьютеров. Если не пользоваться графическим интерфейсом, то работают они все, с графическим интерфейсом - как повезет. Могу поделиться списком.

3. Перед подключением и отключением плагинов и субпатчей останавливайте аудио процесс. И почаще сохраняйте свой патч, автосохранения здесь нет.

4. Есть проблемы при использовании ASIO драйверов некоторых профессиональных карт (digidesign, например). Если не удасться справиться, используйте драйвер попроще (ASIO4All). Собственно эта проблема описана в F.A.Q.

Из F.A.Q.:-

            Is CPS dead?

            Well, yes and no....

 

наверх

Hosted by uCoz