Просмотр полной версии : "Народный" AY (YM) звук для УКНЦ (параллельный порт)
Начну тему чтобы не потерялась, буду выкладывать по мере продвижения:
схема от Ув. Titus
https://pic.maxiol.com/thumbs2/1579878841.630666996.20200124210951.png (https://pic.maxiol.com/?v=1579878841.630666996.20200124210951.png&dp=2)
инфа BB55
https://yadi.sk/i/NXKje_dOEVPU7w
инфа от RDC:
https://pic.maxiol.com/thumbs2/1581164801.630666996.ay38910doc542.png (https://pic.maxiol.com/?v=1581164801.630666996.ay38910doc542.png&dp=2)
распиновка параллельного порта:
https://yadi.sk/i/kKKXiWjXNKADZQ
- - - Добавлено - - -
Схема ЦАП на порт А:
https://pic.maxiol.com/thumbs2/1583416987.630666996.covox.png (https://pic.maxiol.com/?v=1583416987.630666996.covox.png&dp=2)
- - - Добавлено - - -
Видео "девайс в работе":
https://yadi.sk/i/fiMU2h9dZNBMwA
Вопрос к Ув. Titus, помнится вы говорили об оптимизаации записи.. (я не спешу, просто идет процесс накопления информации и укладывания в ячейки моей памяти )
А на БК как сделано, что первое обращение (177714) селект - регистр второе -данные, там какой-то аппаратный ксор воткнули? (Схему не смотрел, не просите, все равно не пойму).
Если нужно четыре операции.. вынесем в отдельную процедуру.
Я не знаю, как на БК, схему там не видел. Но у нас нет никаких аппаратных средств для сокращения числа записей в порт для засылки данных в каждый регистр. Ну может быть одну команду можно сократить.
Не надо выносить в отдельную процедуру, лучше ее сделать развернутой, чтобы не было лишних тормозов.
Поигрался со светодиодами:
1. Порт работает.
2. Запись словами.
Осталось допаять и вывод PSG доделать.
Процедура проигрывания PSG:
MUZA::
MOV R0,-(SP)
MOV PC,R0 ;Вычислить адрес программы обработки
ADD #Sndm-.,R0 ;прерываний от программируемого таймера
MOV R0,@#100 ;Загрузить этот адрес в вектор прерывания
MOV PC,R0 ;Вычислить адрес программы обработки
ADD #MUZON-.,R0 ;музыкой
MOV R0,BEGIN ;Загрузить этот адрес в ячейку BEGIN
MOV R0,ADRESS ;Загрузить этот адрес в ячейку ADRESS
MOV (SP)+,R0
RTS PC
BEGIN: .WORD 0 ;Ячейка хранения начального адреса массива
ADRESS: .WORD 0 ;Ячейка хранения текущего адреса
Sndm:
BIS #400,@#177054
MTPS #0 ; Разрешить все прерывания
MOV R0,-(SP)
MOV R1,-(SP)
MOV R2,-(SP)
MOV R3,-(SP)
MOV ADRESS, R1
MOV #177101, R2
MOV #177102, R3
1$:
CLR R0
BISB (R1)+,R0
CMPB R0 , #375 ;375
BNE 2$
MOV BEGIN,R1
BR 4$
2$:
CMPB R0, #377
BEQ 4$
3$:
MOV #177777, (R3); @#177102 COM #0 подготавливаем шину
COM R0
MOV R0, (R2) ;@#177101 ; передали № регистра
MOV #177774,(R3) ; @#177102 ; COM #3 записали № регистра
CLR R0
BISB (R1)+,R0
MOV #177777,(R3) ; @#177102 ; COM #0 подготавливаем шину
COM R0
MOV R0, (R2) ;@#177101 ; передали данные регистра
MOV #177775,(R3) ; @#177102 ; COM #2 записали данные регистра
BR 1$
4$:
MOV R1, ADRESS
MOV (SP)+,R3
MOV (SP)+,R2
MOV (SP)+,R1
MOV (SP)+,R0
MTPS #340 ; Запрет для гарантии окончания V100
BIC #400,@#177054 ; Включить сетевой таймер в ПП
RTI
MUZON:
.BYTE 377,0, 337, 1, 3, 2, 65, 4, 12, 5, 1, 7, 20, 10, 17, 11
.BYTE 13, 12, 17, 13, 120, 15, 14, 377, 1, 5, 2, 117, 4, 326, 5, 0
.BYTE 7, 70, 11, 14, 12, 16, 377, 1, 7, 2, 237, 4, 76, 5, 1, 10
.BYTE 16, 11, 15, 12, 15, 377, 1, 11, 4, 12, 10, 14, 377, 1, 1, 4
.BYTE 326, 5, 0, 7, 71, 10, 20, 12, 14, 377, 2, 236, 4, 76, 5, 1
проверено - работает.
- - - Добавлено - - -
Структура PSG-формата
Offset Number of byte Description
+0 3 Identifier 'PSG'
+3 1 Marker “End of Text” (1Ah)
+4 1 Version number
+5 1 Player frequency (for versions 10+)
+6 10 Data
Data — последовательности пар байтов записи в регистр.
Первый байт — номер регистра (от 0 до 0x0F), второй — значение.
Вместо номера регистра могут быть специальные маркеры: 0xFF, 0xFE или 0xFD
0xFD — конец композиции.
0xFF — маркер начала прерывания.
0xFE — следующий байт показывает сколько раз выждать по 80 мс.
Схему собрал, только что-то пиликает когда пальцем AYка касаешься. Кварц не работает?
Схему собрал, только что-то пиликает когда пальцем AYка касаешься. Кварц не работает?
Осциллограф на CLK поможет это определить отцу русской демократии)
Был бы осциллограф.. не было бы вопросов :(
Был бы осциллограф..
https://youtu.be/9uuj8tI-4FU
Хобот, он не подойдет, он низкочастотный.
NEO SPECTRUMAN
05.02.2020, 12:47
Хобот, он не подойдет, он низкочастотный.
а "народные" умельцы не освоили пиляние стробирующих осциллографов из говна и палок?
тут можно было бы обойтись и одной звуковой картой
микросхемы 74HC02
https://pic.maxiol.com/thumbs2/1580905369.531453796.15641.jpg (https://pic.maxiol.com/?v=1580905369.531453796.15641.jpg&dp=2)
Номиналы компонентов могут существенно отличаться от указанных на схеме.
Указанная 1564ЛЕ1 есть аналог 74HC02
А CLOCK с какой ноги берем? C 10й?
А CLOCK с какой ноги берем? C 10й?
Да !
Заработало!!!
Спасибо ММ. (Действовал бессистемно, до кучи еще и кварц поменял и схему включения изменил)..
PSG поет (правда не все каналы - нужно микшер посмотреть, что-то напутал).. но уже дело сдвинулось :)
Первые "чарующие звуки" на УКНЦ.... :)
Нужен другой формат (pt2, pt3).. PSG сильно прожорливый - 2 минуты 30кб.
Нужен другой формат
https://www.ixbt.com/soft/track_editors.shtml
Согласен с hobot, нафиг AY, трекеры рулят, на БК вон тоже ковоксной музыкой увлеклись.
Но если всё таки хочется AYшной музыки в pt2, pt3, то вот тут мои наработки: http://gid.pdp-11.ru/src/PT3.rar
В архиве исходники разных модулей воспроизведения с комментариями, естественно для БК, т.е. чтоб под RT-11 собрать, надо качественно переработать длинные имена меток в короткие 6 символьные.
Модуль SQT глючит, т.к. я так и не смог отловить место, где я там с знаковой/беззнаковой операцией сложения/вычитания облажался, когда переписывал с спековского асма на наш асм.
нафиг AY, трекеры рулят
Чем же вам не угодил AY? По сравнению с штатной перделкой - это же откровение :)
Для COVOX на УКНЦ памяти маловато и расширений типа СМК-512 не предвидится.. + ресурсоемко и мало-применимо например в игрушках для фоновой музыки.
А проигрывание музыки ради музыки мне малоинтересно, мое желание добавить нормальный звук в игру, а не этот жуткий пердеж который имеет место быть.
- - - Добавлено - - -
ПП УКНЦ отлично подходит для проигрывания фоновой музыки. Ещё бы страничек памяти ..надцать и частоту >6МГц.. и было бы счастье:)
Чем же вам не угодил AY?
Мне всем угодил, правда, когда уже наиграешься с ним, хочется чего-то большего. Это я на пост #16 (https://zx-pk.ru/threads/31310-quot-narodnyj-quot-ay-(ym)-zvuk-dlya-uknts-(parallelnyj-port).html?p=1044812&viewfull=1#post1044812) среагировал.
А исходники таки гляньте, вдруг пригодятся, они всё равно без дела валяются, никому не нужные.
Спасибо за исходники, конечно пригодятся :)
Правда кроме меток там много чего переделывать придется - УКНЦ довольно специфичная машинка.
Какой формат считаете более оптимальным или распространенным?
переделывать там две вещи:
1) загрузка собственно музыкального модуля, или вообще выбрать свой способ подачи данных модулю воспроизведения
2) управление прерыванием по вектору 100 с бкшного на укнцшный
и выбрать тип работы: использовать прерывание только для синхронизации, а процессор занять циклом воспроизведения или вызов модуля воспроизведения в обработчике прерывания, чтобы звук в фоне работал.
В BK_STC_Player.ASM показано как, т.е. там закомментирован вариант с фоновым воспроизведением, мне для тестирования этот способ не подходил, поэтому я его и не использовал. Все модули сделаны по одной и той же схеме.
- - - Добавлено - - -
Оптимального нет, есть попроще, есть посложнее. Раньше более распространённый на БК был stc,stp, а сейчай без разницы, в интернете всех видов навалом.
Для Периферийного Процессора УКНЦ код должен быть перемещаемым. В ПП свой диспетчер процессов и логичнее использовать 100й вектор для вызова процедуры
- - - Добавлено - - -
ПП работает "фоном" относительно ЦП, и нужно процедуру воспроизведения сделать "фоном" в ПП да так чтобы не шибко его притормаживать иначе начнутся глюки с клавой и другие неприятности.
Тогда будет круто. Можно конечно ради воспроизведения колом все поставить но это не айс.
Вопрос к Ув. nzeemin, возможно ли прикрутить к UKNCBTL (опционально) эмулятор AY на параллельный порт? Исходники взять например у gid? (если он конечно не против).
Было бы здорово. А то утомительно каждый раз на реал перетаскивать.
А то утомительно каждый раз на реал перетаскивать.
готек, утомительно, с флопами бегали туда сюда по началу, а теперь флешку воткнуть переткнуть утомительно
- вот они программисты ) привыкли всё готовой по контрл-ф9 за пару секунд, изнежились )
https://yoursmileys.ru/msmile/compgame/m19097.gif
может эмулятор AY и не помешает конечно, но тогда и AZ-контроллер не помешал бы.
Вот, сейчас прочитает это Никита, и подумает, даже отвечать не стану - утомительно каждый раз ответ писать.
вот они программисты ) привыкли всё готовой по контрл-ф9 за пару секунд, изнежились )
Причем здесь нежность? Просто целесообразность.. скорость разработки увеличится. Скажите еще, что правильней в тетрадке отлаживать программу.
Видео "девайс в работе":
https://yadi.sk/i/fiMU2h9dZNBMwA
Круто!
Опубликуй финальную схему.
Ты смикшировал стандартный звук, и звук AY вместе?
Навеяно "в тетрадке отлаживать программу" (с)
Как-то писал программу на одном ноутбуке, потом отсылал *.hex по сети на другой и уже на нем прошивал железяку.
Тестил, потом опять возвращался к первому, корректировал программу, ... и так весь день.
Все оттого, что на первом частично не работали USB, а на втором - слишком маленький дисплей.
Ты смикшировал стандартный звук, и звук AY вместе?
Нет не стал, мне спикер не нравится да еще на усилке. Кому нужно припаять не сложно (тем более без него плата без лишних макарон).
RESET можно на третий бит порта С повесить через транзистор. (хотя сбрасывать можно без него).
Нет не стал
на Зеленоградской поделке тех лет стоял биппер типа как в АОНах по размеру,
а звук в бортовом (на мат.плате) бипере сохраняется? Звук через обычный мини-джек
наружу идёт??? Это дискотека уже )
а звук в бортовом (на мат.плате) бипере сохраняется?
конечно, что ему будет :) Как я и говорил фишка в том, что компьютер курочить не нужно, воткнул в порт и радуйся.. цена вопроса 3$+2часа с паяльником :)
RESET можно на третий бит порта С повесить через транзистор. (хотя сбрасывать можно без него).
Зачем через транзистор?
RESET же на землю замыкать нужно?
RESET же на землю замыкать нужно?
Еще раз повторю вопрос - какова схема реализации ресета на транзисторе? )
какова схема реализации ресета на транзисторе?
см. Схему "AY-LPT", с которой собственно и началось...
см. Схему "AY-LPT", с которой собственно и началось...
Давай не отылать неизвестно куда)
Ты в теме, у тебя перед глазами схема.
Покажи ее. Где транзистор, чем управляется, как и зачем)
Вот,( резистор наверное ненужно):
https://pic.maxiol.com/thumbs2/1581169311.630666996.lptport.png (https://pic.maxiol.com/?v=1581169311.630666996.lptport.png&dp=2)
- - - Добавлено - - -
Отредактировал шапку, теперь все актуально.
1. ПП проигрывания PSG рабочая.
2. Включение кварца (в предлложенной схеме), рабочее (то что предложил ММ работает но нужно номиналы менять- частота высокая получилась).
3. Сссылка на видео там же.
4. Reset пока в воздухе, но на нормально собранной плате при включении AY не гудит.
Вот,( резистор наверное ненужно):
Там транзистор является инвертором. У тебя целая куча логических элементов в микросхеме генератора, которые можно использовать, как инверторы.
- - - Добавлено - - -
4. Reset пока в воздухе, но на нормально собранной плате при включении AY не гудит.
Важно, чтобы при пересбросе УКНЦ по ресету AY тоже сбрасывался.
У тебя целая куча логических элементов в микросхеме генератора, которые можно использовать, как инверторы.
Вам виднее :) Я в этом не силен. Может кто еще заинтересуется из просветленных.. и переделает схему.
Кстати порт А наверное можно под COVOX использовать.
может эмулятор AY и не помешает конечно, но тогда и AZ-контроллер не помешал бы.Ну, AZ, по крайней мере, уже устаканился. То есть, конечно, у нас с Максом в дальних планах еще есть сеть, но пока не до нее. А остальное... Я, правда, не вижу большого круга задач для применения AZ в эмуляторе УКНЦ. Нет, по-мелочи кое-что есть, но напрягать ради этого наших эмуляторщиков я бы не стал. Вот для AZ в эмуляторе ДВК работы много - можно будет запустить операционки, отличные от RT-11 (TSX-11). Тот же ДИАМС попробовать. Да, хотя бы, сочинить нормальную программу смены файл-образов в приводах AZ. Все-таки эмулятор для программирования гораздо удобнее, чем реал... Осталось уговорить Патрона, а то он что-то пропал. Неужели утратил интерес?..
Как на AY микшируют спецэффекты и фоновую музыку?
Как на AY микшируют спецэффекты и фоновую музыку?
Отключают один из каналов музыки на время игры эффекта.
Какой - выбирают исходя из обстоятельств. Т.е. без какого канала музыка меньше всего пострадает.
Ещё можно микшировать методом квантования.
Чередуешь квант музыки, квант спецэффекта. Но так не всегда хорошо получается. И метод программно-трудоёмкий.
Ещё можно микшировать методом квантования.
Чередуешь квант музыки, квант спецэффекта. Но так не всегда хорошо получается. И метод программно-трудоёмкий.
Булькать будет и эффект и музыка)
Ув. Titus, может вы в своем эмуляторе сделаете поддержку AY на параллельному порту?
Тогда любой желающий мог бы посмотреть поделки с музыкой.. Стимул был бы больше что-либо писать.
А то пока я один счастливый обладатель :)
Ув. Titus, может вы в своем эмуляторе сделаете поддержку AY на параллельному порту?
Тогда любой желающий мог бы посмотреть поделки с музыкой.. Стимул был бы больше что-либо писать.
А то пока я один счастливый обладатель
Чтобы сделать поддержу AY, надо сперва сделать поддержку звука в эмуляторе в принципе. А у меня пока только ведутся исследовательские работы (https://zx-pk.ru/threads/21908-emustudio-zx.html?p=1044665&viewfull=1#post1044665) на эту тему. Если кратко, то стандартный подход к синхронизации видео и аудио, привязанный к нотификации аудиобуфера, меня не устраивает, т.к. он достаточно грубый. Обновление видео, привязанное к нему, не может быть достаточно плавным. Поэтому я исследую эту тематику на предмет точной универсальной синхронизации. Чтобы работала не только у меня или у Пети, а преимущественно у всех. Если получится, разумеется)
Собрал окончательную версию.
Добавил COVOX на порта А.
Сделал разъемное соединение шлейфа IDC40.
Корпус - 3D печать.
https://pic.maxiol.com/thumbs2/1583582370.630666996.ay.png (https://pic.maxiol.com/?v=1583582370.630666996.ay.png&dp=2)
https://pic.maxiol.com/thumbs2/1583582394.630666996.ay1.png (https://pic.maxiol.com/?v=1583582394.630666996.ay1.png&dp=2)
или у Пети,
ты знаком с Петей? Зови его в этот форум, срочно !
Он один из авторов в составе Зеленоградской "MAPLE"!
ты знаком с Петей? Зови его в этот форум, срочно !
Он один из авторов в составе Зеленоградской "MAPLE"!
Не знаком. Это абстрактный Петя.
Кстати красная кнопка это RESET. Как выяснилось необходимость в нем появляется только если перезапустить комп во время воспроизведения. Соответственно не составляет труда заткнуть его этой кнопкой. Взамен мы получаем абсолютно "безмакаронную" конструкцию :)
randomizer
17.06.2020, 23:00
Тоже собрал этот модуль, чтобы протестировать приехавшие AY-3-8913.
Несколько замечаний по конструкции:
1) хорошо бы в шапке разместить собранную программу для проверки модуля, я не кусок кода
у меня например параллельный интерфейс оказался "битым" (бит 0, именно на порту B не работал как надо)
заведомо работающая программа сэкономила бы время
вот (https://www.dropbox.com/s/2vt1v3onfjiowx0/PAYT.SAV?dl=0) как вариант программа для теста)))
2) при номилах резисторов на выходе AY их схемы шапке, получается слишком высокий по амлитуде сигнал - у меня он перегружал вход монитора.
сопротивление резисторов подключенных к общему проводу стоим уменьшить до 510 Ом
3) центральный канал слишком громкий, получается, там стоит удвоить номиналы резисторов
4) AY и YM отличаются по звучанию, лучше всего на мой взгляд получается если их оба запараллелить)
И мучает вопрос насчет интерфейса:
Порты B и С нагружены резисторными делителями, с довольно низким сопротивлением, зачем?
Шина AY подключена тоже через резисторы, опять же зачем? В таком виде AY не сможет выдать данные в порт, только принимать.
И странность, нижнему уровню на выходе B и C соответстует напряжение в 1В. При том что для TTL 0.8В - 2В это серая зона. Тоже сбивает с толку.
- - - Добавлено - - -
"Last Mission" пока без звука?
Порты B и С нагружены резисторными делителями, с довольно низким сопротивлением, зачем?
Шина AY подключена тоже через резисторы, опять же зачем? В таком виде AY не сможет выдать данные в порт, только принимать.
И странность, нижнему уровню на выходе B и C соответстует напряжение в 1В. При том что для TTL 0.8В - 2В это серая зона. Тоже сбивает с толку.
Это вопрос к Титусу, он в этой теме главный "электрик", я так рядом постоял :)
"Last Mission" пока без звука?
Пока да, лень - лето, купаться охота - мозг не работает :)
И еще не придумал как делать SFX и совмещать их с музыкой (читать регистры ведь мы не можем)..
Это вопрос к Титусу, он в этой теме главный "электрик", я так рядом постоял
У меня под рукой схемы нет. Если есть вопрос, прикладывайте к нему скриншоты.
- - - Добавлено - - -
И еще не придумал как делать SFX и совмещать их с музыкой (читать регистры ведь мы не можем)..
Зачем тебе читать регистры, если ты сам в них пишешь?
Зачем тебе читать регистры, если ты сам в них пишешь?
Тыж сам говорил, чтобы узнать когда канал освободится.
Тыж сам говорил, чтобы узнать когда канал освободится.
Что за ерунда) Ты этого узнать не сможешь. Где я такое говорил?
Что за ерунда) Ты этого узнать не сможешь.
Как тогда узнать, что в данный момент происходит в AY и какой канал меньше "пострадает" от SFX?
Как тогда узнать, что в данный момент происходит в AY и какой канал меньше "пострадает" от SFX?
Никак) Только логически. Если ты знаешь, что у тебя за мелодия, ты знаешь, какой канал самым малозначительный, какой канал можно на время приостанавливать без большого ущерба для мелодии.
Катастрофически мало "чтива" по этому вопросу :(
Музычку проиграть пол беды, как это делать интерактивно....
Для SFX тоже свой формат придумывать нужно (не процедурно же они делаются) .. повторы, каналы итд.
Отдохнем, когда снова на карантин закроют.. будем думать. :)
- - - Добавлено - - -
Кстати, в чем и как делают паттерны, орнаменты, которые потом в мелодию собирают?
Только не говорите, что в голове :)
Кстати, в чем и как делают паттерны, орнаменты, которые потом в мелодию собирают?
Только не говорите, что в голове
В музыкальном редакторе. На сколько я понимаю, сейчас это Vortex Tracker.
На сколько я понимаю, сейчас это Vortex Tracker.
Как, научите... ссылку плз
Как, научите... ссылку плз
Не пользовался. Ищи по ключевым словам на форуме.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot