я тут некоторое время отсутствовал, вот.
>Очень даже не плохо, только при чём тут это ? Лишь бы ляпнуть ?
>Если ты будешь миксить в аналоге, то ничего не потеряешь, и фиолетово где
>у тебя и сколько бит и какие частоты.
а ты за разговором вообще следишь? или читаешь только последнее слово?
или тебе только бы поспорить без разницы про что?
я говорил о том, что нафиг не надо 18 битного цапа, что хватит 16 бит,
и те 1-2 потерявшихся бита ты не услышишь. а 16 бит - это и так хорошее
качество! а в случае с GS цифровой аппаратный миксинг удешевляет конструкцию!
>Ладно, разговор беспредметен и пора его заканчивать.
похоже что да, ибо ты не хочешь включить мозг и подумать.. только слюни, что
самое крутое это винил, лента и аналоговые устройства.
>>на Z80 это сложновато будет.
>Заметь, сам сказал!
Сложновато без ухудшения качества. я бы даже сказал, невозможно
а если без интерполяции, то может быть и возможно.
на текущий момент и у DMA USC пока 4 канала. да, можно сделать и 8, и больше..
только лично мне в этом не нравится больше всего, что корёжится архитектура
спека.. меняются времянки, используется память спека и выч.ресурсы. к простому
128к DMA USC хрен так просто подключишь.. ну и, чтобы её программить, надо
во многом разбираться. а у GS есть вполне законченный набор команд и все
работает без вникания в дебри.
>Ну что ты, Спенсор, ПСБ щас напишет алгоритм интерполяции в два такта.
ты еще прикалываешься? иди и снова учи матчасть, если мне не веришь
ты только словами бросаешься, а я видел как это делается, а что-то и сам
делал.
>А можно предоставить на обозрение алгоритм этой интерполяции? А то как то
>громко звучит, но слабо верится.
почему громко?нормально звучит
это линейная интерполяция, в ней нет ничего
особо ресурсоемкого. попробовал бы реализовать - увидел бы, что это не долго.
>Имеем проц Z80 на частоте 12MHz, имеем переодические немаскируемые прерывания с частотой 37500Гц.
неправильно, МАСКИРУЕМЫЕ прерывания.
>На один период приходится 320 тактов процессора, или иначе говоря
>80 элементарных операций.
правильно.
>За это время проц должен: прослушать порты команд и данных,
неправильно, он делает это в СВОБОДНОЕ время.
>выполнить команды посылаемые основным процом,
тоже неправильно.
>послать данные в 8 регистров ЦАП,
и тут неправильно! зачем постоянно посылать данные в 8 цапов?? только в 4.
а в громкость пишется не каждый раз, а через определенный период.
>произвести досчет канальных счетчиков,
это да, но это все в звукогенераторах.
>завершить выполнение всех действий, и при этом еще успеть выполнить некую интерполяцию.
>Хотелось бы понять, что за хитрая такая интерполяция расчет которой производится
>по самым оптимистичным прикидкам за 10 элементарных операций
>(если исходить из того что у нас остается 40 (50%) элементарных операций на
>период и имеем 4 канала).
смысл такой. есть основной цикл, в котором обрабатываются пользовательские
команды. этот цикл никаким образом не связан со звукогенераторами и выполняется
в фоне.
есть звукогенераторы. они висят на прерываниях. состоят из процедуры проигрывания
буфера(!), которая очень быстрая и маленькая. когда 1 буфер кончился, включается
другой, если есть, и начинается заполнение освободившегося новыми данными. это
заполнение и делают саундгенераторы, в которые встроено интерполирование. после
заполнения N-ного кол-ва буферов, вызывается интерпретация модуля.
вкратце: интерполяция есть 2 кратная, 3х, .., не помню-скольки-кратная.
на каждую написана своя процедура генерации звука. процедура эта разлупленная,
состоит из одинаковых кусков.
2х кратная делается просто: берется следующий сэмпл, складывается с текущим,
делится на 2. сохраняется сначала полусумма, потом новый сэмпл. что тут долгого?
3х кратная делается по таблице. тоже ниче долгого.
на 4 тоже просто. и т.д. все. и это все работает уже 10 лет.
или вы мне все еще не верите? изучайте исходники тогда, они открыты.





это линейная интерполяция, в ней нет ничего
Ответить с цитированием