Вход

Просмотр полной версии : Специфика работы AY’ка ...



Robus
05.09.2009, 09:41
Сейчас у меня нет доступа к реальному AY’ку, от чего не могу провести исследования. Очень интересует вопрос по работе AY’ка. Как известно, если записать в регистры AY’ка R11 и R12 вначале, допустим, значение 8000, а через 100 мс снова их перезаписать, то счётчик внутри сбрасывается в ноль и огибающая начинает играть заново. Теперь, собственно вопрос(ы):

1. Происходит ли то же самое с R0(1), R2(3) и R4(5), в тон генераторе ?
2. Если я обновлю только R11 или только R12, сбросится ли счётчик ?

Спасибо, жду ответов ...

Barmaley_m
05.09.2009, 17:50
А тебя заинтересует частичный ответ на вопрос или мысли, которые могли бы помочь делу? Или только полный и окончательный ответ?

Robus
05.09.2009, 22:44
, которые могли бы помочь делу?
Конечно заинтересуют ... Любые размышления ... В итоге, безусловно, я постораюсь добиться истины ... Но в зависимости от того какие я получу в данный момент ответы, будет выбран путь действий ...

Вообще-то, я жду ответа, что счётчик таки сбрасывается ... Я не могу этого утверждать прямо сейчас, поскольку делал эмулятор AY'ка в 2000 году, и не помню всех тонкостей. Но я заметил, что я единственный, кто сбрасывает этот счётчик. В 99% случаев это не заметно в музыке. Хотя люди с хорошим слухом должны заметить щелчки. Но в данном случае меня крайне интересует этот 1%.

Вопрос не просто так рождён ... Мало того, эта тонкость работы генераторов звука как у AY, так и у SID'ов, была использована в CMC(Chaos Music Compouser)(Atari). Там из 2 и 3 каналов делали один средний со специфическим звучанием. И было это сделано благодаря тому, что этот счётчик тона сбрасывался ...

Могу гарантировать одно, что эмуляторы не сбрасывают этот счётчик. Проверял в Unreal, ZXSpin и EmuZWin ...

goodboy
05.09.2009, 23:54
напиши програмку для проверки и я тебе отвечу.

newart
06.09.2009, 00:50
Могу гарантировать одно, что эмуляторы не сбрасывают этот счётчик. Проверял в Unreal, ZXSpin и EmuZWin ...
Ay Emul, AY Fly, ZX Tune?

Barmaley_m
06.09.2009, 20:34
Конечно заинтересуют ...
В таком случае поделюсь.

Эту тему когда-то подробно исследовал ASC при разработке своего музыкального редактора ASM. И он мне рассказывал (в 1994 году), что счетчики не сбрасываются, и вообще не существует никакой возможности узнать их текущее состояние или предсказуемым образом изменить его. Его эта тема тоже интересовала с точки зрения возможности реализации особых спецэффектов.

Так что то, что в эмуляторах они тоже не сбрасываются, является правильным.

Robus
06.09.2009, 21:06
Так что то, что в эмуляторах они тоже не сбрасываются, является правильным.
Вот и я пришёл к этому же выводу ... И это трагично, поскольку из-за этого становится в 10 раз меньше возможностей эффектов ... Собственно я пока только увидел лишь один выгодный эффект. С другой стороны это упростит редактор. Но какие эффекты получаются, если бы сбрасывался счётчик ...

А жаль ...

---------- Post added at 20:06 ---------- Previous post was at 20:05 ----------


напиши програмку для проверки и я тебе отвечу.
Но всё же я напишу маленькую програмку для теста, хотя думаю, что она ничего не даст ...

newart
06.09.2009, 21:32
Но какие эффекты получаются, если бы сбрасывался счётчик ...
Какие?
Расскажи.

psb
06.09.2009, 22:36
сдается мне, что все эти эффекты будут привязаны ко времянке компа => на всех компах будут звучать по-разному. +усложнился бы плеер. т.е. сейчас на каждом прерывании пишутся все регистры кроме огибающих, а тогда бы пришлось делать хитрее. +всякие слайды звучали бы со щелчками или подобными дефектами.

Robus
07.09.2009, 08:41
+всякие слайды звучали бы со щелчками или подобными дефектами
Щелчи были бы только при смене громкости, но не тона ... А вот в данном случае и получается "лажа". Допустим генерируется тон с значением частоты 300, а ты меняешь его на 150, но в силу вступит он, в худшем случае, через 300 тактов что эквиванлентно задержке в 2.7 мс. Соответственно, чем чаще ты будешь менять тон, тем сильнее ты будешь слышать биение. Биение уже слышно при двойном инте(100 раз в секунду), очень не приятное. А разница в компах будет не важна, поскольку я не генерирую звук, я лишь вмешиваюсь в форму сигнала. Влияние будет только если частота от компа к компу будет отличаться на 20-30%, и то не факт, что будет заметно. А вот в данном случае меняй звук 16 раз за инт или 32, и пи этом частота процессора будет отличаться хоть на 100%, звук будет одинаково паршивый и раздражающий ухо(ухи).


Какие?
Расскажи.
Рассказать сложно. Но бассы получаются добротные и очень разнообразные. Чем-то смахивают на звуки от SID'а, вобщем сразу напомнило Atari. Но всё это в "топку", поскольку не повторимо на реальном Speccy. Для таких звуков у меня есть более удобный инструмент - Wild Sound. Он создан для управлением WaveForm'ы.

psb
07.09.2009, 12:05
Соответственно, чем чаще ты будешь менять тон, тем сильнее ты будешь слышать биение.
на каждой смене тона у тебя будут возникать не контроллируемые тычки (имп. разной ширины), не думаю, что это хорошо. скорее даже это будет портачить звук, если делать медленный слайд. но как обычно, рассудит нас тока Barmaley_m:)

Barmaley_m
07.09.2009, 14:18
Что касается щелчков при слайдах, то 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 определяется им в каждом случае индивидуально, учитывая старое и новое значение.

Barmaley_m
07.09.2009, 17:05
Я тут кое-что еще придумал.

Сбросить счетчики AY точно может и нельзя, но приблизительно можно.
Если я правильно понимаю архитектуру AY, то там декрементирующие счетчики, в которые загружаются константы из регистров периода каждый раз, когда эти счетчики досчитывают до нуля.

Таким образом, если запрограммировать AY на воспроизведение максимально возможной частоты, то состояние счетчиков в любой момент времени будет предсказуемо в каких-то узких пределах. И если в этот момент записать в регистры периода другие числа, то счетчики начнут считать с более-менее предсказуемого исходного положения. Такой предсказуемости может быть достаточно для реализации спецэффектов. Можно также заблокировать прохождение высокой частоты на выход путем установки соответствующих битов в регистре 7.

DDp
07.09.2009, 21:30
http://ivr.webzone.ru/articles/mus_sopr/index.htm

Barmaley_m
08.09.2009, 01:53
Хм... Что-то тут не то. Нужно провести эксперименты, однозначно. ASC измерял, вероятнее, всего, AY-3-8912 (у него был фирменный ZX Spectrum +2). Не исключено, что именно тот AY отличается в своем поведении от 8910/YM.

Robus
08.09.2009, 20:50
каждый раз, когда эти счетчики досчитывают до нуля.
Да ... Я уже думал об этом ... Но для этого нужно записать в регистр тона "0", потом наверняка дождаться окончания, звучания предыдущего тона, потом уже устанавливать новое значение ... Это всё приведёт к большим проблемам ...


http://ivr.webzone.ru/articles/mus_sopr/index.htm
Хорогая статья ... Но она так же говорит о том, что генератор тона не сбрасывается, а сбрасывается лишь огибающая.


Хм... Что-то тут не то. Нужно провести эксперименты, однозначно.
Сейчас сделаю програмку ... Сброшу в TRD, сможешь перевести на диск и запустить на реальном Speccy ? У тебя пентагон ?

Robus
08.09.2009, 22:40
----------------------------------------------
Пентагон или Реал, - всё равно ... Вот програмка прикреплена ... При запуске, чёрный экран, это она будет определять пентагон или что-то другое.

Управление:
"1". 16 раз за инт частота отличается в два раза за каждые 1/8 инта.
"2". 16 раз за инт, частота всегда одна.
"3". 1 раз за инт, частота одна.

Желательно записать звук в ежиме "1". Если режим "2" и "3" будут отличаться по звучанию, значит счётчик сбрасывается.

psb
09.09.2009, 02:53
готов спорить, что не сбрасывается он.

Barmaley_m
09.09.2009, 14:06
сможешь перевести на диск и запустить на реальном Speccy ? У тебя пентагон ?
У меня сейчас тоже нет доступа к реалу, так что сорри :(

molodcov_alex
11.09.2009, 17:29
Еще актуально?
По десять секунд на каждую кнопку сойдет?
Вроде как 2 и 3 не отличаются.
Profi (времянки пентокрыла), AY38912A/P (Microchip'овский), каналы замешаны в моно, сжимать не стал: http://narod.ru/disk/13033750000/ay_test1.rar.html

YM есть на скорпе, но он не в очень рабочем состоянии (все провода отпаяны, думаю как бы грамотнее оформить все в разъемах)

alone
11.09.2009, 20:52
Фазу (0 или 1) предсказать невозможно. Может быть, она сбрасывается сигналом RES. Тогда можно на ATM ею управлять.

Robus
13.09.2009, 09:47
Еще актуально?
Актуально ... Спасибо ...

Вообщем не сбрасывается ... Значит я когда-то ошибся, когла его сбрасывал ... Убрал уже ...

Но всё же очень жаль, что он не сбрасывается ...

---------- Post added at 08:47 ---------- Previous post was at 08:40 ----------


Фазу (0 или 1) предсказать невозможно. Может быть, она сбрасывается сигналом RES. Тогда можно на ATM ею управлять.
Я об этом думал ... Но это не подходит, поскольку не совместимо с стандартом. Практически все манипуляции с тоном выше 2 раз за инт бесполезны, поскольку появляются раздражающие призвуки ...

Я вот начал задумываться, что очень удивительно, как так сложилось, что нормально слушается один раз за инт. И я замечал, что часто музыканты с хорошим слухом говорили, что булькающие эффекты им не приятны. Скорее всего они слышат эти огрехи.

Но ничего ... В инте можно управлять не только тоном ... =)

Barmaley_m
14.09.2009, 03:23
И я замечал, что часто музыканты с хорошим слухом говорили, что булькающие эффекты им не приятны. Скорее всего они слышат эти огрехи.
Для того, чтобы отделить мух от котлет, можно синтезировать эти самые булькающие эффекты на PC без огрехов. И показать их этим музыкантам.