Установка 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
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
endiniCps = p5
iFn = 1
aOut1 oscil iAmp, iCps, iFn
out aOut1
Номер инструмента (в данн. случае 1) нам понадобится, чтобы из партитуры передавать ему данные (длительность, частота и пр.). Входные параметры, передаваемые из партитуры, доступны внутри инструмента как переменные с названием pn. Переменные, передающиеся всегда:
p1 - номер инструмента
p2 - время старта от начала партитуры, сек.
p3 - длительность звучания, сек.
Остальные можно использовать по желанию, в данном случае четвертым параметром передается амплитуда в единицах уровня (максимально - примерно 32000, короче какая-то степень двойки, сейчас не помню), пятым - частота в герцах.
Внутри инструмента заведем для этих данных переменные - просто для удобства. Имя переменной начинается с буквы, обозначающей ее тип. Т.к. переданные через pn параметры не меняются на протяжении звучания одной ноты, мы используем переменные с первой буквой i, фактически это не переменная, а константа.
iAmp = p4
iCps = p5
iFn = 1
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
; 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
i 1 3 2 10000 660
i 1 6 2 10000 880
e