Главная страница
Гостевая книга
21.09.05

Установка Csound. Простейшая программа.

Для начала займемся "классическим" Csound, без всяких штучек-дрючек, т.е. написанием простейшей программы на на языке Csound, аналог, наверное, - "Hello, world!" для универсальных языков программирования. Это очень полезно, хотя и скучновато поначалу. Зато если сразу позагружать себе всякие модные front-ends, после будут проблемы сделать что-то свое … или тогда уже сразу надо визуальную среду разработки осваивать, типа Max/MSP или Reactor.

Установка Csound под Windows

Качаем и разархиваруем куда вам нравится, например, создадим c:\Program Files\csound. В архиве 2 exe-файла: winsound.exe и winsound64.exe, последний соответственно, для 64-битной обработки (не знаю, не пробовал). Должен заработать сразу, правда в инструкции по установке рекомендуется прописать пути.

Сделайте ярлык для winsound.exe и пропишите путь до директории в переменной PATH (это если надо будет plugins для Csound устанавливать, будете их сливать в ту же директорию). До переменной PATH добираются так (перед глазами Windows Server 2003, подозреваю что в 2000 аналогично): Start -> Settings -> Control Panel -> System -> Advanced -> Environment Variables, здесь нам нужно окно System Variables. Ищем там PATH и добавляем ; c:\Program Files\csound


Теперь немного упорядочим места хранения наших партитур, семплов и т.д. (хотя этого можно и не делать, все и так работает). Создайте директории Analysis, Output и Samples (можно называть как угодно). Смысл их такой: Analysis - используется, если установлены некие дополнительные пакеты, сейчас она нам не потребеутся, но пусть будет. В Samples хранятся семплы, используемые при создании наших нетленных опусов. В Output складываются результаты рендеринга партитур, т.е. готовые композиции.

Переменные окружения, необходимые для нахождения указанных папок
Имя переменной Путь (пример) Для какой директории переменная
SFDIR c:\hector\music\csound_files\sfdir Output
SSDIR c:\hector\music\csound_files\ssdir Samples
SADIR c:\hector\music\csound_files\sadir Analysis

Вот практически и все. Даже слишком много. Как видите, установка Csound проста и незатейлива.

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

Файл первый - обычно с расширением orc, содержит описание генерации звука, т.е. как бы "устройств", используемых Вами для получения и обработки сигналов (как собственно звуковых, так и различных управляющих).

Второй файл - расширение sco, содержит описание некоторых ресурсов, типа волновых таблиц, а так же партитуру, т.е. как бы ноты, которые исполняет "девайс", описанный в файле *.orc.

Для начала надо настроить общие параметры генерации звука, сиречь прописать 4 переменные. Вот что нужно поместить в файл first.orc:

sr=44100
kr=441
ksmps=100
nchnls=1


sr - частота представления звуковых сигналов. Соответственно, чем меньше - тем быстрее работает программа, но конечно тем хуже качество звука.
kr - частота управляющих сигналов (типа амплитудной огибающей и пр.)
ksmps - отношение sr к kr, оно должно быть целым числом (не очень понятен смысл параметра, но он есть)
nchnls - число каналов (1, 2, 4 насчет больше - не помню, смотрите доки, если надо).


Попробуем извлечь синусоидальный сигнал. Единственный "прибор" у нас будет примитивный семплер, который загружает содержимое волновой таблицы (позже мы ее заполним отрезком синуса). Опишем "инструмент" с нужными нам функциями

instr 1
iAmp = p4
iCps = p5
iFn = 1
aOut1 oscil iAmp, iCps, iFn
out aOut1
endin


Номер инструмента (в данн. случае 1) нам понадобится, чтобы из партитуры передавать ему данные (длительность, частота и пр.). Входные параметры, передаваемые из партитуры, доступны внутри инструмента как переменные с названием pn. Переменные, передающиеся всегда:
p1 - номер инструмента
p2 - время старта от начала партитуры, сек.
p3 - длительность звучания, сек.
Остальные можно использовать по желанию, в данном случае четвертым параметром передается амплитуда в единицах уровня (максимально - примерно 32000, короче какая-то степень двойки, сейчас не помню), пятым - частота в герцах.

Внутри инструмента заведем для этих данных переменные - просто для удобства. Имя переменной начинается с буквы, обозначающей ее тип. Т.к. переданные через pn параметры не меняются на протяжении звучания одной ноты, мы используем переменные с первой буквой i, фактически это не переменная, а константа.

iAmp = p4
iCps = p5
iFn = 1



Для звуковых данных используются имена, начинающиеся с a. В данном случае переменной aOut1 передается результат работы осциллятора oscil, воспроизводящего содержимое волновой таблицы с номером iFn с частотой iCps и амплитудой iAmp. Чтобы вывести звук в файл, используется оператор out.

Теперь создадим файл first.sco, в котором заполним волновую таблицу синусом

f 1 0 16384 10 1


и поставим одну нотку длительностью 2 секунды и частотой 440 герц (символ ; используется для комментирования символов от места появления ; до конца строки).

; p1 - номер инструмента
; p2 - начало ноты
; p3 - длительность
; p4 - амплитуда
; p5 - частота
;
;  p1  p2  p3  p4     p5
;
i  1   0   2   10000  440
e


Теперь открываем Csound, в поле Orchestra помещаем файл first.orc, в поле Score - first.sco. Название звукового файла для сохранения результатов обработки нашей партитуры пишем в Output File (например first.wav). В рамке Format выбираем формат звукового файла, рядом можно выбрать его разрядность. Внизу нажимаем кнопку Render. Если в файлах партитуры и "оркестра" нет синтаксических ошибок, создастся файл first.wav, содержащий 2 секунды синусоидального тона частоты 440 герц.

Таким же образом можно извлечь незатейливую мелодию - основной тон, квинта, октава

i 1 0 2 10000 440
i 1 3 2 10000 660
i 1 6 2 10000 880
e






csounds@yandex.ru

Hosted by uCoz