Как я открыл для себя SID



Так уж повелось, что Московским демосценерам собраться и потусить, собственно, в Москве, совершенно ломает. Для того, чтобы выпить пива и посмотреть демки, нужно пилить в другой город и, желательно, по адовой Нижегородской трассе. Так как предание о зимнем Дихальте уже давно кануло в пучине бытия, народ чуток приуныл. Но дело спас Shuran33, внезапно решив отбыть из Нерезиновска в славный город Владимир. Тут, что называется, все карты легли как надо, вплоть до Нижегородской трассы. Но, как известно, демосценер – человек затейливый, его хлебом не корми, дай только прод выкатить. Естественно, сразу же начались разговоры о том, что с пустыми руками в гости не ездят, и надобно чего-нибудь изваять. Но эти разговоры, как обычно, так бы ими и остались, если бы Великий и Ужасный, тот, имя которого нельзя называть, внезапно бы не объявил о желании написать код для бездуховного исчадия загнивающего запада – компьютера Commandore 64. Тут-то все и завертелось.

Как вы уже, наверное, поняли, музыкальное сопровождение выдалось писать мне. И хотя мои духовные скрепы гнулись как могли, дьявольское искушение вкусить запретный плод SIDа взяло верх.

Начал я с поиска подходящего музредактора. Беглое гугление сразу же привело меня к кросс-редактору Goat Tracker II. Причем поминание имени его всуе всегда сопровождалось восторженными комментами клятых буржуинов. В общем, установил и увидел:



Goat tracker представлял из себя жудкое черное окно, под завязку набитое числами. Нет, я не впервые видел трекер, но тут программисты превзошли себя. Устанавливая программу под Windows, я наивно предполагал, что там будет куда потыкать мышкой – ан нет, все на хоткеях, описание которых запрятано в одно из дальних окон. И все бы ничего, но в Windows версии не было поддержки Midi-клавиатуры. Нет, можно конечно, как в старые добрые времена тыкать ноты на обычной клаве, но, черт возьми: «Я слишком стар для этого дерьма» (ц) не помню кто.
Далее мой взор упал на мультиплатформенный кросс-трекер DefleMask.



Интерфейс у него оказался весьма приятным, все и везде тыкалось мышкой, и миди-клава пела и плясала сразу и из коробки. Все бы хорошо, если бы не одно но: компилировать эта штука не умела. Вернее умела, но в один непонятный файл без указания адресов для плейера и т.п. В общем, тоже оказалась непригодной.

И вот, когда я уже почти отчаялся, нелегкая привела меня к нативному трекеру SID-Wizard. Ввиду отсутствия живого «комода», запустил я его через эмулятор WinVICE.



От SID-Wizard мышино-оконного интерфейса я, конечно же, не ожидал. Тот же набор чисел, как и в Goad Tracker, те же хоткеи… но, восьмибитный дух, который хлынул бушующим потоком из открытого окна эмулятора, вдохновлял неистово. К тому же, порывшись в настройках WinWICE я нашел включение midi keyboard, а в настройках самого SID-Wizard – ее поддержку! Вот это было то, что надо, и то, чего я от нативного редактора совсем не ожидал.



В общем, можно было начинать работать, причем на работу эту оставалась пара вечеров с суммарным временем в 3-4 часа. Далее нужно было изучить сам SID и понять, как извлекать из него звуки. Тут стоит отметить, что SID в корне отличается от теплого, лампового и всенародно любимого AY. И вот что он может:
во-первых, у него, как и у AY, три независимых генератора тона. Однако, в отличие от AY, они могут генерировать не только меандр, но и пилу, треугольный сигнал, а также белый шум (отдельно каждый)



во-вторых, он имеет три отдельных генератора огибающих стандарта ADSR (Attack, Decay, Sustain, Release). К слову сказать, единственный генератор огибающей есть и у AY, но он куда более ущербный – в нем можно управлять лишь общей «длиной» огибающей и ее заранее заданной формой. Тогда как в SID можно управлять каждой отдельной частью ADSR, делая звучание инструмента так, как вам хочется. Именно поэтому при написании музыки для AY обычно формируют огибающую, напрямую управляя регистрами громкости, а штатный генератор ADSR используют не по прямому назначению, а для извлечения нестандартных форм сигнала (обычно пилообразных).

Еще одна фишка, которая есть у SID – это многорежимный фильтр. Несмотря на то, что разобраться с ней мне не хватило времени, штука крутая и позволяет мутить совершенно волшебные басы.



Редактор инструментов в SID-wizard предоставляет возможность в числовом виде (читай – в виде HEX кодов) задавать все эти параметры для каждого инструмента, тем самым определяя его звучание. Кроме этого, в теле инструмента с помощью WAV-таблиц эти параметры можно динамически менять в процессе звучания. В общем, все оказалось безумно интересно, но времени на изучение требовалось явно больше пары часов, и я принял решение «тырнуть» готовые инструменты из примеров и чуток подкрутить их под себя.

Редактор паттернов в SID Wizard имеет вполне привычный для любого трекерщика вид. Нотная колонка, колонка с инструментами и двойная колонка с эффектами. В отличие от спектрумовских трекеров – нет колонки с громкостями, но, как я понял, SID напрямую это не умеет, и эффект «эха» мне пришлось делать с помощью эффекта с кодом 5, позволяющего задавать смещение в ADSR огибающей.

Еще одно отличие – редактор позиций. Если в том же Vortex Tracker позиция задается для всего трехканального паттерна, то в SID-Wizard ее можно прописывать для каждого канала. То есть, например, когда нужно повторять только басовую партию, а остальное будет другим – просто указываем номер в тройке параметров позиции, а не делаем новый паттерн каждый раз.

В общем, такого беглого изучения мне хватило, чтобы написать коротенький трек, конечно, не претендующий на патийную шедевральность, однако вполне годящийся для нашего Fast Demo.

Дема получилась простенькая, но веселенькая, и посмотреть ее можно здесь:
www.pouet.net/prod.php?which=66989
Трек отдельно вы можете послушать у меня в SoundCloud:
soundcloud.com/ejkot
А почитать исчерпывающий мануал по SID – Wizard здесь:
www.witchmastercreations.com/files/creating_chiptunes_with_sid-wizard_second_edition.pdf

16 комментариев

avatar
очень хорошо, что ты смог не поддаться соблазну кросс-платформенности козлотрекера (я в аналогичной ситуации, решил, уж лучше под виндой, чем из-под эмуля), а пошел дальше и осилил, судя по всему, крутой sid-wizard — буду у тебя советы спрашивать, когда понадобится :)
avatar
К басам «комода» добавить высокие AY'ка, сказочный бы звук получился.
avatar
Вообще, там осциляторы могут меандр генерировать как и у AY. Вот только не знаю, толи отсутствие прямого управления амплитудой канала, толи просто сложившийся стиль написания музыки на нем мешает делать звуки как на спектруме
avatar
По-моему, здесь просто сказывается привычка слушать AY и когда в музыке для SID не слышится привычных эффектов, кажется, что чего-то не хватает. Т.е. да, тут скорее дело в стиле.
avatar
В SID есть master volume. 16 уровней (общий для всех каналов). Почему в данном редакторе не используется — не знаю. Сейчас в SID музыке всё чаще используют сэмплы (чисто чтобы разнообразить звучание), они, по идее, делаются как раз через volume (хотя врать не буду — вроде это не единственный способ).

Вот хороший пример достижений в SID музыке: csdb.dk/release/?id=72563 (там есть ссылка на mp3)
--------
Bits 0-3 (VOLO-VOL3) select 1 of 16 overall Volume levels
for the final composite audio output. The output volume
levels range from no output (0) to maximum volume (15 or
#F) in 16 linear steps. This control can be used as a
static volume control for balancing levels in multi-chip
systems or for creating dynamic volume effects, such as
Tremolo.

www.6502.org/documents/datasheets/mos/mos_6581_sid.pdf
----------
p.s. Приятный трек в soundcloud :)
avatar
Вот в том то и дело, что это управление глобальной громкостью, а не каждого отдельного осциялтора, как я понял. Хотя до конца не разобрался я еще.
avatar
Для каждого генератора раздельно — нет
avatar
а можно ли сэмулить на ADSR-огибающей? (в смысле сразу перейти на sustain, а для него можно задавать уровень сигнала)
avatar
Наверное можно, но я сделал по другому: Сделал плавно падающую огибающую и использовал команду смещения начала в ней. Чем дальше смещение-тем тише звук
avatar
Так и делается. Но есть проблема, огибающая там обязательно проходит через максимум, прежде чем дойти до sustain, даже при максимальной скорости атаки.
avatar
«Я слишком стар для этого дерьма» (ц) не помню кто.

Брюс Уиллис из «Последний бойскаут» устами древнего переводчика.

По DefleMask согласен, он всегда выдает не пойми что, разработчик молчит аки Зоя Космодемьянская.
avatar
еще в смертельном оружии этот момент обыграли, к концу оно трансформировалось в «я не стар для этого дерьма».
неистово плюсую, надо будет тоже попробовать)
avatar
не, в «Смертельном оружии» был эпизод, когда Мел Гибсон считал дни до пенсии, это же обыграли в Last Action Hero (:
avatar
Еще одно отличие – редактор позиций. Если в том же Vortex Tracker позиция задается для всего трехканального паттерна, то в SID-Wizard ее можно прописывать для каждого канала. То есть, например, когда нужно повторять только басовую партию, а остальное будет другим – просто указываем номер в тройке параметров позиции, а не делаем новый паттерн каждый раз.
Буржуйский SQ-Tracker поддерживает точно такую же модель одноканальных паттернов. Всякие там ProTracker/VortexTracker в общем-то тоже, но только на уровне данных, подозреваю для возможной экономии места на убирании дублирующихся треков.
avatar
Давно хотел спросить: почему на спеке, а также в MOD/XM позиции задаются для всего паттерна? Неужели не будет никакой экономии, если задавать для каждого канала отдельно?
  • tsl
  • 0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.