by TS-Labs » Thu, 26.01.2017 15:10:15
Взялся за API вейвсинтеза. Изначальный концепт такой.
Есть N (32 для начала) независимых каналов. Каждый канал может играть свой сэмпл. Управлять каналами вейвсинтеза можно как с хоста, так и с внутреннего плеера трекерных модулей. При достаточном количестве каналов это позволяет играть музон и использовать звуковые эффекты.
Для каждого канала задается громкость в левом/правом ухе. Это позволяет управлять панорамой.
Задается также нота, как коэффициент для частоты С-5 в формате 8.16 бит (1 байт - целая часть, 2 - дробная). (В модулях по хорошему все сэмплы должны быть оцифрованы на ноте "до" 3 октавы (С-5) и для этой ноты им указан сэмплрейт. Например, если лежит сэмпл с частотой оцифровки 16кГц, то если его проиграть на частоте 16кГц, мы услышим ноту С-5.) Следовательно, если указать сэмплу коэфф. 1 (1, 0), мы услышим С-5, если 2 (2, 0), то С-6, если 0.25 (0, 16384), то С-3 и т.д.
Каналу указывается номер сэмпла, который нужно играть и который должен быть предварительно загружен в чип.
Для канала есть регистр управления, который указывает следующие признаки: 1) канал разрешен, 2) сэмпл в канале будет перезапущен со стартовой точки при применении параметров, иначе - только поменяются параметры (громкость, нота и т.д.).
Все параметры загружаются в банкируемые регистры, банк выбирается регистром выбора канала. После загрузки всех параметров всех каналов выполняется команда "применить параметры". При этом параметры всех каналов апдейтятся атомарно.
(далее...)