на каждой смене тона у тебя будут возникать не контроллируемые тычки (имп. разной ширины), не думаю, что это хорошо. скорее даже это будет портачить звук, если делать медленный слайд. но как обычно, рассудит нас тока Barmaley_m:)
Вид для печати
Что касается щелчков при слайдах, то ASC рассказывал мне еще об одной особенности AY, которую он обнаружил и поборол в своем плеере ASM, и о которой многие не знают.
При выводе таблицы чисел в регистры AY даже размотанным циклом, новые значения попадают в регистры неодновременно. И если имеется незначительное изменение частоты тона в районе границы байта (FF->100 или 100->FF и т.д.) из-за неодновременности записи двух байт в регистры частоты тона, то во времени это будет выглядеть так:
время Reg0 Reg1
0 FF 00
1 00 00
2 00 01
То есть на короткое время оба регистра частоты тона будут иметь значение 00, что соответствует очень высокой частоте. Поэтому в процессе переключения генератора с частоты FF на частоту 100 будет сгенерировано несколько импульсов на выходе, что соответствует ощутимому на слух щелчку. Проверить очень просто, если сделать в любом (кроме ASM) муз. редакторе слайд от низких частот к высоким или наоборот, так чтобы частота генератора перешла через границу байта.
Просто изменение порядка вывода в регистры AY не решает эту проблему, так как слайд в другом направлении снова создаст вышеописанную ситуацию и вызовет щелчок. Код плеера ASM я не смотрел и точно не знаю, как ASC ее решил, но с его слов, порядок записи двух байт в регистры AY определяется им в каждом случае индивидуально, учитывая старое и новое значение.
Я тут кое-что еще придумал.
Сбросить счетчики AY точно может и нельзя, но приблизительно можно.
Если я правильно понимаю архитектуру AY, то там декрементирующие счетчики, в которые загружаются константы из регистров периода каждый раз, когда эти счетчики досчитывают до нуля.
Таким образом, если запрограммировать AY на воспроизведение максимально возможной частоты, то состояние счетчиков в любой момент времени будет предсказуемо в каких-то узких пределах. И если в этот момент записать в регистры периода другие числа, то счетчики начнут считать с более-менее предсказуемого исходного положения. Такой предсказуемости может быть достаточно для реализации спецэффектов. Можно также заблокировать прохождение высокой частоты на выход путем установки соответствующих битов в регистре 7.
Хм... Что-то тут не то. Нужно провести эксперименты, однозначно. ASC измерял, вероятнее, всего, AY-3-8912 (у него был фирменный ZX Spectrum +2). Не исключено, что именно тот AY отличается в своем поведении от 8910/YM.
Да ... Я уже думал об этом ... Но для этого нужно записать в регистр тона "0", потом наверняка дождаться окончания, звучания предыдущего тона, потом уже устанавливать новое значение ... Это всё приведёт к большим проблемам ...
Хорогая статья ... Но она так же говорит о том, что генератор тона не сбрасывается, а сбрасывается лишь огибающая.
Сейчас сделаю програмку ... Сброшу в TRD, сможешь перевести на диск и запустить на реальном Speccy ? У тебя пентагон ?
----------------------------------------------
Пентагон или Реал, - всё равно ... Вот програмка прикреплена ... При запуске, чёрный экран, это она будет определять пентагон или что-то другое.
Управление:
"1". 16 раз за инт частота отличается в два раза за каждые 1/8 инта.
"2". 16 раз за инт, частота всегда одна.
"3". 1 раз за инт, частота одна.
Желательно записать звук в ежиме "1". Если режим "2" и "3" будут отличаться по звучанию, значит счётчик сбрасывается.
готов спорить, что не сбрасывается он.
Еще актуально?
По десять секунд на каждую кнопку сойдет?
Вроде как 2 и 3 не отличаются.
Profi (времянки пентокрыла), AY38912A/P (Microchip'овский), каналы замешаны в моно, сжимать не стал: http://narod.ru/disk/13033750000/ay_test1.rar.html
YM есть на скорпе, но он не в очень рабочем состоянии (все провода отпаяны, думаю как бы грамотнее оформить все в разъемах)