RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Октябрь 2024
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031   

Календарь Календарь

Последние темы
» Вити больше нет!
автор bug19 Пн Фев 20 2023, 19:54

» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47

» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05

» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03

» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02

» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52

» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36

» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37

» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33

» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00

» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58

» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17

» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07

» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08

» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09

» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02

» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47

» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11

» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33

» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38

» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12

» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01

» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22

» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08

» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08

Самые активные пользователи за месяц
Нет пользователей

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Применение КР580 ВИ53 для генерации музыки

Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty Применение КР580 ВИ53 для генерации музыки

Сообщение  barsik Пт Авг 14 2020, 14:58

1
РК86 имеет самый примитивный одноуровневый цифровой выход для вывода звуков. Чтобы выдать звук надо выдать на этот выход периодический электрический сигнал, причём делать в РК это приходится программно. Одноголосный периодический сигнал сгенерировать программно весьма просто (это менее 15 команд процессора).

Но увы, реальная музыка вовсе не одноголосная, а многоголосная, т.е одновременнно должны звучать сразу несколько нот -- в минимуме достаточно трёх каналов. Хотя программно это можно сделать, но программирование многоголосия - сложное. Тем более в случае РК86, где нет временнОй опоры, т.е прерываний, которые существенно облегчают счёт времени длительностей нот. Без этого процессору приходится обслуживать три канала и ещё программно считать темп с которым сменяются ноты. Ясно, что тормозной процессор не в состоянии одновременно играть программную музыку и выводить динамичное видео (т.о многоголосная программная музыка может играть только в паузы игры). Даже наличие временнОй опоры, т.е возможность считать время аппаратно, тут не особо разгрузит процессор, хотя позволит существенно упростить программирование и сделать темп музыки точным.

Дополнительная сложность возникает из-за того, что при программном многоголосии при выдаче трёх каналов на один единственный (причём одноуровневый) выход невозможно правильно сложить три сигнала с разными частотами. Т.к звуковые сигналы аналоговые и должны складываться аналогово, а не по цифровой булевой алгебре. Если три правильных меандра (т.е со скважностью 2) тупо выдать на один одноуровневый выход возникает какафония.

Более качественную многоголосную музыку по единственному одноуровневому выходу программно выводят складывая не правильные меандры тонов, а периодические иголки. Т.е прямоугольные сигналы с высокой скважностью. Если меандр с высокой скважностью выдать на ёмкость а затем на динамик, то за счёт интеграции ёмкостью и сравнительно инерционным излучателем громкость звука будет низкой, но основной тон будет чётко различимым. При выдаче в один одноуровневый канал трёх последовательностей иголок с разными частотами они почти не будут мешать друг другу проходить на выход, что эквивалентно аналоговому сложению сигналов, благодаря чему в выходном акустическом сигнале будут чётко различимы все три тона.

Но генерация программной музыки сложна, её качество низко, а загрузка процессора на её вывод 100%. Потому для РК86 использование микросхемы таймера КР580 ВИ53 для звукогенерации вполне разумно. Это ясно каждому, но, к сожалению, в ж.Радио был предложен глупый вариант использования ВИ53 пригодный лишь для вывода одноголосной мелодии. Кроме того РК86 хреново годится для вывода программной музыки, т.к из-за периодических захватов шины микросхемой ПДП, он программно выводит не очень чистые тона. В то время как при использовании ВИ53 в качестве аппаратного генератора звука, генерируемая им частота тонов очень точная и без перерывов.

ВИ53 также решает проблему многоголосия, т.к в нём 3 канала и они в виде отдельных сигналов, отчего их не проблема сложить аналогово. ВИ53 теоретически может облегчить и счёт времени, т.к из него можно считывать состояния счётчиков. Но т.к лучше всё-же иметь три канала звука, а не два, то для счёта времени (чтобы темп музыки был правильным) выгоднее считать время с помощью прерываний или за счёт простейшего аппаратного таймера в виде очень низкочастотного меандра на МГ-входе. Процессор изредка опрашивая МГ-вход обнаруживает фронты на этом входе, что позволяет отмерять время в полпериода частоты (например, при частоте меандра в 5 Гц можно отмерять интервалы в 100 мс). Такая дискретность вполне удобна для счёта длительности нот.

Ноты струнных инструментов не являются идеальной синусоидой (хотя именно так и выглядят на экране осцилографа). Красоту звуку струны придают обертоны, т.е небольшое присутствие в спектре гармоник (синусоид кратной частоты). Но с выхода цифровых генераторов мы имеем не синусоду, а сигнал чётко прямоугольной формы, что даёт неприятную тембровую окраску. Частично это можно улучшить применив на выходе НЧ RC-фильтр.

Кроме того ноты имеют атаку и затухание. Т.е огибающая синусоиды в ноте не прямоугольная, а сначала звук некоторое время нарастает, затем амплитуда некоторое время стабильна, а во второй половине длительности ноты начинает плавно спадать. Если нота имеет прямоугольную огибающую, то две одинаковые ноты сливаются в одну вдвое более долгую ноту, а не слышны как две отдельные одинаковые ноты. Кроме того в огибающей сигнала струны присутствует вибрато, т.е модуляция амплитуды синусоиды глубиной не более 20% с частотой 6...8 герц. Это придаёт звучанию струны красоту.

Если с генерацией тона ВИ53 вполне справляется, то вот огибающую ноты он сформировать не может. В своё время я испытывал примитивную схему для регулировки громкости звука. Учитывая двуполярность сигнала более правильно это делать меняя в делителе составленном из двух резисторов (причём нижний резистор не на землю, а на среднюю точку +2.5 В) величину одного из резисторов аналоговым коммутатором. Если нет желания тратиться на кучу аналоговых мультиплексоров, то можно применить операционный усилитель (КР140УД6) и программно менять его усиление обычным цифровым мультиплексором или дешифратором. Подобные схемы достаточно громоздки и дороги.

Однако воспринимаемая громкость периодического сигнала зависит не только от его амплитуды, но и от скважности. Правильный меандр звучит наиболее громким, а если на динамик поступают короткие иголки той же частоты, то громкость резко падает. Используя это свойство можно с помощью двух микросхем КР580 ВИ53 (т.е имея 6 таймерных каналов) генерировать достаточно качественную трёхголосную классическую музыку, причём если счёт времени делать аппаратно, то одновременно с звучанием музыки процессор может выводить динамичное видео..

Тогда каждый из голосов формируется двумя последовательно включёнными каналами таймера. Первый из таймеров работает в режиме генератора мендра, а второй в режиме одновибратора с внешним запуском. По одному из фронтов меандра запускается одновибратор второго таймера. Программное переключение длительности импульсов одновибратора эквивалентно изменению громкости акустического сигнала (диффузор динамика инерционен, потому его отклонение пропорционально длительности импульса).

В 1991 году на излёте СССР тиражом всего в 200 машин был выпущен легендарный советский PC называемый ПК11/16. Он по всем параметрам (особенно по видео возможностям) на 1-2 порядка превосходил IBM PC XT, хотя был проще и намного дешевле (он стоил чуть дороже РК86). Так вот в нём для выдачи музыки стояло именно два КР580 ВИ53, благодаря чему он скворчал очень похоже на AY-8912.

Таким образом, если к РК86 через системный разъём ГРПМ-61 подключить маленькую внешнюю платку с двумя КР580 ВИ53, добавить 8 цветов для псевдографики (что выливается в расход двух дешёвых микросхем 555-й серии и допрошивку второго фонта в РФ2 знакогенератора) а на МГ-вход подключить 155 ИЕ2 (делящую 50 ГЦ КСИ на 10 и образующую простейший аппаратный таймер на 100 мс), то с минимальным расходом сил и средств из РК86 получится игровой компьютер на котором программы визульно и акустически могут выглядеть очень похоже на игры игровой приставки Денди.
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty Как сделать муз.редактор для базового РК86 ?

Сообщение  barsik Сб Авг 15 2020, 05:46

2
Подключить к РК86 микросхему тональной гуделки КР580 ВИ53 доступно и учащемуся первых классов начальной школы. Процедура вывода музыки также достаточно проста программно и доступна для написания даже новичком. Процессор из буфера мелодии берёт константы очередных нот, заносит их в каналы ВИ53 и зацикливается на ожидании фронта в порту простейшего апп.таймера (а если его нет, то процессор вынужден считать время сам). Гораздо более сложно решить проблему где брать таблицы с кодами музыки.

Музыку придётся кодировать самому пользователю. Современная музыкальная нотация имеет большое число нюансов. Всё это учитывать в голове при конверсии в коды и вручную кодировать - замучишься. Т.о вводить музыку в компьютер без наличия удобного инструмента трудоёмко, неудобно и чревато ошибками. Без наличия соответствующего инструментария затрахаешься закодировать даже минимальный репертуар. Например, в ROM-BIOS ИРИШИ есть подпрограмма проигрывания одноголосной мелодии. И в своё время я затрахался вручную вводить в ОЗУ коды мелодий. Смотришь на очередную ноту, затем в таблицу, по которой конвертируешь ноту в нужный код и с клавиатуры редактором дампа заносишь в ОЗУ. Даже для одноголосной мелодии это утомительно. Что уж говорить о настоящих музыкальных произведениях. Таким образом, каким бы ни был механизм вывода музыки (т.е не важно аппаратно или программно), в качестве инструментария для ввода музыки в компьютер требуется поиметь хоть какую-то программу музыкального редактора.

Естественно, максимально удобно для визуализации на экране введённых в компьютер нот было бы использование стандартной нотной нотации. К сожалению для РК86, ноты в этой нотации изображаются не текстовыми символами (что позволило бы их отобразить на текстовой машине), а графически в виде маленьких овалов размещаемых в произвольных местах на специальном нотном стане из пяти горизонтальных линий. При этом используется также большое число других граф.символов (доп.значков, называемых знаками альтериции) также полностью отсутствующих в фонте РК86. Ясно, что базовый РК86 лишённый даже хотя бы одного альтернативного фонта совершенно не подходит для графического отображения музыкальных нот.

И всё же для разработки муз.редактора для неграфического РК86 не всё безнадёжно, если вспомнить, что до распространения современной системы записи музыки (что произошло лишь в начале XIIIV века) с раннего Средневековья ноты для муз.инструментов записывали с помощью так называемых табулатур (то, что дилетанты сейчас обзывают табулатурами для записи гитарного аккомпанимента пению, это совсем другое, это чушь для идиотов, что не в состоянии освоить нотную грамоту).

Нотные табулатуры для разных музыкальных инструментов были разные и на разных принципах, но наиболее логичными и удобными являются так называемые лютневые табулатуры применяемые для струнных муз.инструментов с ладами, - таких как лютня и виуэла. Кстати, из виуэлы и возникла пятиструнная гитара, к которой в начале XIIIV века добавили ещё одну струну (хотя в России на этом не успокоились и в конце XIIIV века добавили к гитаре ещё одну струну, так возникла русская семиструнная гитара, которая благодаря другому строю проще в освоении, что важно для любительского музицирования при аккомпанементе пению, но для классической музыки такой строй гитары хуже).

Современные ноты не привязаны к конкретному инструменту, - 5 линий на нотном стане это абстракция. А вот в лютневых табулатурах горизонтальные линии разделяют записи нот относящиеся к разным струнам струнного инструмента. Линии в лютневых табулатурах лишь отделяют поля таблицы описывающие ноты извлекаемые из разных струн. Получается таблица разделённая на горизонтальные поля для каждой струны, где каждая буква помещённая в поле струны описывает ноту. Значение этой буквы задаёт лад на котором эта струна прижимается исполнителем при звукоизвлечении. Длительность нот задаётся вертикальными флажками с зубчиками расположенными над табулатурным станом (от которых, кстати, происходят штили и хвосты нот в современной нотации). Подробнее о лютневых табулатурах можно почитать здесь.

Если использовать в качестве источников муз.произведений ноты для 6-ти струнной классической гитары (для которой, кстати, есть переложения существенной части самых известных произведений написанных для органа, лютни, клавесина и рояля), то запись нот в виде табулатур будет выглядеть на экране как таблица состоящая из 7 строчек текста, что в состоянии отобразить даже убогий базовый РК86 (т.е без наличия альтернативного фонта). В качестве значков длительности нот располагаемых над табулатурным станом можно использовать цифры. Использование нот для гитары напрашивается также потому, что клавишная музыка (т.е орган, клавесин и пианино) по сути не подходят для трёхголосного исполнения, т.к у них аккорды почти всегда состоят из более, чем трёх нот, что не может воспроизвести трёхканальный ВИ53, а применять аж 4 штуки дорогих КР580 ВИ53 - это не каждому владельцу РК86 по карману.

Таким образом при невозможности отобразить на экране музыку в современной нотной нотации вводить мелодии в чисто текстовый компьютер можно лишь лютневыми табулатурами. Причём это одновременно и ввод и отображение введённой мелодии. Естественно для этого нужен соответствующий муз.редактор. Мелодия вводится в 7 строк лютневой табулатуры. Конечно лютневыми табулатурами воспринимать ноты непривычно, но ведь средневековые музыканты несколько веков как-то этим обходились и не жаловались. Тем более, что для РК86 с его убогими апп.возможностями, как говорится, "не до жиру". К такому вводу музыки можно привыкнуть быстро. Можно конечно и не использовать антикварные лютневые табулатуры, а придумать свою какую-либо иную линейно-строчную кодировку цифрами и буквами, но она явно окажется менее удобной (т.к над этим более умные люди думали много веков и ничего лучше не придумали).

Естественно, музыкальный редактор имеет целью вовсе не отобразить ноты на экране. Его задача облегчить человеку ввод музыки в компьютер и на выходе сформировать блок кодов пригодный для подпрограммы проигрывания музыки (которую, кстати, разумно встроить в ROM-BIOS компьютера, что не проблема, если объём ПЗУ под ROM-BIOS РК86 расширен до полного объёма предназначенного для ПЗУ окна в 8 кб).

barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty Возможен ли графический музыкальный редактор для РК86 ?

Сообщение  barsik Сб Авг 15 2020, 18:48

3
В предыдущем посте я изложил концепцию муз.редактора для компьютера располагающего лишь чисто алфавитно-цифровым дисплеем. Ясно, что для базового РК не имеющего альтернативного фонта можно сделать вывод нот только в виде текста (для восприятия удобнее в виде табулатур или в виде линейного текста).

А вот, если в РК86 добавлен хотя бы один альтернативный фонт, то оказывается возможным отобразить требующие графики современные ноты и на чисто текстовом РК86. По крайней мере пусть и не обычным образом (в виде одной общей нотной линейки), а хотя бы в виде 3-х линеек нотных станов - для каждого голоса свой. Это проще потому, что в текстовом знакоместе нельзя наложить изображения друг на друга (это удел только графических машин), а для РК86 с его убогими изобразительными возможностями вставить сразу три ноты одна над другой непросто. Но даже отображение в три нотных линейки позволяет достаточно комфортный ввод в компьютер музыки на РК86.

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

Отобразить на экране текстовой машины ноты на нотном стане лишь по одной ноте по вертикали - не проблема. Число потребных для этого дополнительных граф.символов около десятка. Естественно, чтобы не было вертикальных разрывов картинки, устанавливается режим в 30 строк. Кстати (как видно по Микро-80 и ЮТ88), телевизор позволил бы увидеть и 32 строки, но экран РК86 в этом режиме неудачно отцентрован по вертикали, потому обычно РК-игры с псевдографикой используют 30, редко 31 строку. При фонте 6*8 возможно лучше ноту (имеется ввиду кружок самой ноты) рисовать из четырёх знакомест. Это будет крупно, но видимо более качественно.

Горизонтальный шаг между нотами можно сделать в два или три знакоместа. Если по горизонтали на ноту тратить три знакоместа (два знакоместа на ноту и одно знакоместо на интервал между нотами), то в экран влезет 21 нота по горизонтали (что вполне нормально для нот). Естественно, если в РК знакоместо имеет улучшенный размер 8*8, то ноты можно отображать намного красивее, чем при убогом стандартном фонте 6*8, и горизонтальный шаг между нотами тогда удобнее иметь в два знакоместа. Тогда нота по горизонтали занимает пространство 16 экранных точек, чего достаточно на изображение овала изображающего ноту и интервала до соседней ноты. Из этого любому очевидно, что глупо не улучшить фонт в своём РК86 (для чего достаточно заменить кварц на 19 или 20 МГЦ и поменять на плате РК микросхему 155 ИЕ4 на 155 ИЕ5).

К сожалению ленивые и неотзывчивые авторы эмуляторов не ввели в эмуляторы возможности программно менять фонт при эмуляции РК86. Так что посмотреть как это может выглядеть и удобно отладить муз.редактор в эмуляторе не получится. Это пока возможно делать только в реале, хотя отладка в реале на порядок более утомительная и трудозатратная. Т.е пока оценить как это может выглядеть можно только в виде рисунков на бумаге.

Кстати, если уже имеется хоть как-то закодированная многоголосная мелодия, то реально сделать конвертор мелодий в формат нужный для программы "Музыкальный бокс" для РК86. Которая в общем-то приемлемо для 1987 года в СССР проигрывает многоголосные мелодии. Там проблема не в том, что кодировать эти мелодии сложно, а в том, что нет документации как это делать, а в дистрибутиве прилагается всего несколько муз.мелодий.

С отображением 3-х голосной мелодии в виде трёх нотных линеек вроде бы сложностей нет. Но для восприятия всё же лучше, чтобы ноты выглядели обычным образом, т.е чтобы двух- и трёх-нотовые аккорды изображались бы на одной общей нотной линейке. Подумаем можно ли вообще отобразить ноты на РК86 таким стандартным образом. Речь конечно только о РК86 с нормальным (т.е улучшенным фонтом) 8*8, т.к на РК с базовым фонтом 6*8 и пытаться не имеет смысла.

По счастью РК86 превосходит совсем уж убогие ЮТ88 и Микро-80 тем, что позволяет менять вертикальный размер знакоместа, мы можем иметь знакоместо с высотой 4...16 линий растра. Чтобы удобно составлять аккорд по вертикали разумно выбрать вертикальный квант (размер тайла) равный половине расстояния между линиями нотного стана. Люди знакомые с музыкальной нотацией знают, что нотный стан в музыке рисуется пятью основными линиями и местами ещё несколькими дополнительными линиями над и несколькими дополнительными линиями под основными линиями.

Чтобы нотный стан не слишком растянулся по вертикали разумно сократить вертикальный размер знакоместа до 6 линий растра (режим в котором видимы 43 строки высотой по 6 линий растра каждая). Тогда горизонтальные линии нотного стана рисуем толщиной в 2 точки, что даёт между этими линейками вертикальное пространство размером в 10 точек. В размер 8*10 без проблем уместится овал ноты, аппаратно составленный из двух стоящих один над другим знакомест 8*6. 128 кодов символов на все потребные для рисования нот тайлы (т.е графические кусочки из которых составляется почти графическое изображение) должно хватить. По прикидкам у меня пока получилось менее 80 тайлов, чтобы рисовать все ноты (половинками, четвертинками, восьмыми и шестнадцатыми) и ещё несколько служебных значков (типа пауз, репитов, диезов, бемолей, легато и скрипичного ключа).

Для разработки тайлов для текстовой машины нужен особый редактор спрайтов. Который отличается от обычного редактора спрайтов только тем, что на выходе выдаёт не один файл графики, а формирует графику отдельных тайлов, которые должны прошиваться в фонт вместо символов.

Дополнительная информация здесь.
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty Ввод мелодий с компьютерной клавиатуры

Сообщение  barsik Вт Авг 18 2020, 11:37

4
По не зависящим от меня причинам пока нет возможности сделать муз.редактор с графической визуализацией, т.к похоже, что по крайней мере в ближайшее время не удастся поиметь эмулятор РК86 с эмуляцией альтернативного фонта переключаемого атрибутами, (к тому же атрибуты сдуру истрачены на цвет, хотя цветных программ единицы). В виду того, что ситуация тут не меняется уже много лет, похоже на то, что пока я сам не напишу себе свой эмулятор РК86 с загрузкой фонтов, то ситуация с альтернативным фонтом в эмуляторе РК86 и не изменится.

Раз пока отладить в эмуляторе графический муз.редактор РК86 с использованием альтернативного фонта невозможно и прогресса здесь вообще не предвидится, то остаётся попробовать написать муз.редактор для РК86 использующий лишь буквенно-цифровое отображение на экране. Пока с выводом даже не в виде табулатур (т.е в 7-ми строк с подчёркиванием), а с индикацией мелодии в виде строчки линейного текста. Кстати, хорошо бы ввести в РК подчёркивание знакомест (если МНИП в каком клоне РК подчёркивание было). Хотя не исключено, что подчёркивание в РК86 уже есть, но об этом никто ещё не знает.

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

В Интернете можно прочесть, что есть специальные музыкальные языки программирования со своей муз.нотацией в виде текста, также существует широко распространённое Midi-кодирование. Но у меня задача упростить себе ввод, а не придерживаться установившихся способов кодирования. А, если понадобится привести введённую в уникальном формате мелодию к какому-нибудь стандартному формату, можно написать конвертор.

Не только ввод, но и кодирование нот (т.е вид в котором муз.произведение сохранится на носителе) выгодно сделать на основе струнного инструмента, а не на основе теории музыки, - т.е задавая в коде ноты номер струны и номер лада на грифе, а не в виде порядковой цифры. Музыканты играющие с листа именно так читают и воспринимают ноты, а вовсе не хранят в голове номер октавы, название ноты и её диезность или бемольность.

Теоретически ноту (без задания длительности) можно закодировать всего одним байтом. Но задачи экономить ОЗУ вовсе нет. Важнее удобство ввода и отображения на экране. Имею ввиду, что не важно в каком виде удобно передавать данные о мелодии в подпрограмму проигрывания мелодии, - мне пока удобно хранить коды в чисто текстовом удобно кодируемом и контроллируемом на экране виде.

Программа муз.редактора с отображением в таком виде - совсем простая - на Паскале написал первый её вариант (что уже обеспечивает ввод) всего за 25 минут. Программа состоит лишь из процедуры ввода символа с клавиатуры, табличного пребразования (выдающего по коду клавиши два символа - номер струны и гитарного лада), последовательное складирование полученных символов в буфер мелодии и синхронный вывод этих двух символов в строчку на экране.

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

Первый символ это цифра отображающая номер струны (1...6). Вторая цифра - это номер лада (или 0 для открытой струны). Длительность нот задаётся как и в музыкальном языке ИРИШИ сразу на все последующие ноты (так что, если идут подряд ноты одной длительности, то дублировать длительность для каждой ноты нет нужды). Длительность нот задаётся двоеточием с цифрой, например, :4, :8 или :16. Каждая нота занимает два символа (+ точка при удлинении ноты). Символы описывающие ноты одного аккорда пишутся впритык, а следующая нота, аккорд или пауза отделяются от них пробелом. Удлинение длительности ноты в 1.5 раза традиционно задаётся последующей точкой. Пауза задаётся в виде тире с последующей цифрой задающей длительность.

Важно, что партитуру закодированную в таком чисто текстовом виде я могу проконтроллировать визуально при просмотре в виде текста, а также (т.к это по сути табулатурная кодировка) её отображение на экране в виде лютневой табулатуры не требует доп.преобразований кодов. Удобно, что такой чисто текстовый муз.редактор легко пишется на ЯВУ, никаких скоростных проблем нет. Кстати, если считать время аппаратно простейшим аппаратным таймером (подключенным на МГ-вход), то и процедуру воспроизведения мелодии можно писать на ЯВУ, скоростей хватит.

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

Мне же удобнее рассматривать клавиши в соответствии с грифом гитары, т.к именно так я воспринимаю ноты на бумаге. И это удобнее, т.к диапазон звуков гитары меньше, чем у рояля и логика удобнее. Для соответствия 6-ти струнам и 12-ти ладам требуется всего шесть 12-ти клавишных рядов кнопок. Увы, на компьютерной клавиатуре есть только 4 полноценных горизонтальных ряда. Потому они в моём разбиении клавиш соответствуют струнам 1...4, а для ввода нот на струнах 5 и 6 требуется удерживать клавишу Shift (что обзывается <CC> на клавиатуре РК).

При таком разбиении клавиш ввод нот тем, кто привык читать ноты для гитары делается максимально быстро и без ошибок, а скорость ввода составляет до 2 нот в секунду. Учитывая, что небольшие пьески содержат от 200 до 500 нот, хотя концертные произведения могут содержать до 1000 нот и более, то даже при вводе со скоростью всего одна нота в секунду ввод таких произведений в компьютер (в зависимости от их размера) занимает всего пять-десять минут, а при ручном вводе это заняло бы целый час (а энтузиазма на час мало у кого хватит).

PS. Некоторым из тех, кто знает, что БИС ВГ75 использованная в РК86 поддерживает так называемое световое перо, может прийти в голову, что для тех кто не привык к реальным муз.инструментам и ориентируется только по нотам, ввод в компьютер нот с помощью светового пера будет удобнее, чем с компьютерной клавиатуры. Это пока под вопросом. Хотя мне кажется, что для тех, кто изучил нотную грамоту применительно к гитаре, скорость ввода световое перо точно не увеличит, т.к быстрее шлёпнуть пальцем по клавише, чем подводить световое перо в нужное место экрана.
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty Годится ли таймер UB857 для производства тонов ?

Сообщение  barsik Чт Авг 20 2020, 10:50

5
КР580 ВИ53 возможно не самая удобная гуделка, т.к у неё всего три канала. А есть более канало-ёмкая гуделка называемая UB857 (это ГДР-овский аналог Z80CTC) у которой количество каналов увеличено на 33%. А точнее - там аж целых четыре канала. Правда насколько я сейчас понял из беглого просмотра даташита для целей производства тонов режимы этой БИС менее удобны, чем у ВИ53. Если у ВИ53 просто обычные счётчики от/до 65535, то у Z80 CTC в каждом канале 2 счётчика - prescaler с делением от 16 до 256 и лишь 8-ми разрядный счётчик/делитель от/до 256. Это кажется менее удобно для генерации точных тонов. Хотя этот Z80 таймер вдвое более высокочастотный - входной клок до 4 МГЦ (тогда как у ВИ53 лишь 2 МГЦ), что теоретически позволяет достичь вдвое большую точность частоты нот.

У меня как раз уже 30 лет лежат без дела три штуки ГДР-овских UB857-мых (есть также две штуки UB855 и также по парочке ГДР-овских же Z80 DART и SIO). Потому и задумался, а не применить ли мне четырёхканальные UB857, т.к четыре канала при производстве музыки скворчали бы намного лучше, чем три канала. Уже "раскатал губы" на четыре канала. И тут бац...

Скачав даташит и заглянув в него был сразу же неприятно поражён тем, что счётчики в этом таймере Z80 CTC не 16-ти разрядные, а 8-ми разрядные, хотя и с предделителем. А ведь теоретически по историческим причинам Z80-периферия должна быть лучше, чем периферия 8080, т.к её разрабатывали на 2-3 года позже. Может для отмера времени 8-ми разрядные счётчики и удобнее, но для музыки нужна точность. Надо разбираться в программировании этих CTC, и, если в них удастся задавать коэффициент деления с точностью до единицы и в интервале от 1 до 65535, то для производства нот они тоже годятся. А вот если это не так, то для музыко-делания микросхемы Z80 CTC не годятся. Но они точно сгодятся для трёх (регулирующих громкость скважностью) одновибраторов и ещё останется один канал для отмера реального времени (методом считывания процессором веса счётчика или же формированием произвольного времени до очередного апп.прерывания, что программно упрощает выдержку длительности нот).
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty .

Сообщение  Viktor2312 Сб Авг 22 2020, 20:36

6
.
barsik пишет:У меня как раз уже 30 лет лежат без дела три штуки ГДР-овских UB857-мых (есть также две штуки UB855 и также по парочке ГДР-овских же Z80 DART и SIO). Потому и задумался, а не применить ли мне четырёхканальные UB857, ...

А не кажется ли вам, что это получится изделие в единичном экземпляре и не повторяемое? Так как, это у вас валяются 30 лет эти микросхемы, у других нет, а у третьих их возможно, и возможности купить не будет. Как и тот же Z80, с ним, на мой скромный взглят, это уже будет не "Радио-86РК", а что-то совсем другое. Лично моё видение в данном вопросе, это оставление в схеме КР580ВМ80А, но на максимальной частоте которую он тянет и применение именно К580ВИ53, и очень интересно когда сказали, что их можно 3 шт. поставить, это гораздо интереснее, так как они стоят сущие копейки и легко доступны.


.

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty .

Сообщение  barsik Вс Авг 23 2020, 17:55

7
Viktor2312 пишет:
barsik пишет:У меня... лежат... три штуки UB857-мых

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

Основная цель участия в форумах о творчестве для ретро ЭВМ - обмен идеями. Воплощение в данном случае - вообще простое, т.к подпрограммы вывода тонов для ВИ53, ВИ54, 6846 и Z80CTC не только предельно простые, но и отличаются лишь всего несколькими командами. Это отличие легко учесть с помощью ключей условной компиляции (что есть в хороших ассемблерах).

Речь в любом случае о одно-экземплярном изделии. И не только потому, что почти не осталось людей, кого интересует хоть что-то новое для РК86, а ещё и потому, что ни 580 ВИ53, ни 1810 ВИ54, ни мотороловский таймер MC6846, ни Z80-таймер Z80CTC, ни даже 512 ВИ1 - в оригинальном РК86 не применён, а желающих делать апп.доработки на платах - меньше нуля (что значит, что предложение сделать доработку расценивается как вообще неуместное извращение). В прошлые годы на ZX-PK.ru выложен с пяток интересных доработок РК86, что так и остались одно-экземплярными. Также одно-экземплярными остались несколько журнальных доработок (ВИ53 на один канал, расширение ОЗУ до 60К и РК-макси).

Потому всё, что можно выложить полезного - это таблицу констант для записи в данную БИС для конкретной входной частоты (и ещё не факт, что у другого любителя эта частота будет та же и предложенные константы ему сгодятся). Кстати, 512 ВИ1 упомянул потому, что, если в его схему поставить кварц не 32 КГЦ, а более высокочастотный до 1 МГЦ, то он тоже может выдавать ноты на один голос (хотя и не точные).

Не важно на чём именно сделан программно управляемый делитель. Важно лишь найти таблицу с частотами нот и исходя из частоты входного такта делителя с помощью логарифмической линейки рассчитать нужные коэффициенты деления в нужной системе счисления (это потому, что обычно в таймерах можно задавать и десятичные и шестнадцатеричные коэффициенты).
Viktor2312 пишет:применение именно К580ВИ53... их можно 3 шт. поставить, это гораздо интереснее, так как они стоят сущие копейки и легко доступны.
Если кто-то настолько трудолюбив и богат, что может себе позволить купить и спаять аж 3 штуки КР580 ВИ53 вместо всего 2-х штук UB857D, то это его дело. Вообще, что у человека имеется из деталей, тот именно то и стремится применить. А если уж покупаешь таймеры, то без разницы, что именно покупать.

Цена не важна, если отличия по цене не более 150 рублей. По-моему даже разница в 1000 рублей не стоит того, чтобы трахаться с распайкой лишней 28-ми нОгой микросхемы (одна только цена лишней панельки разорительна). Кстати, при ближайшем рассмотрении у меня UB857В оказалось всего две (а PIO UB855 наоборот - три); они достались мне из плат ЕС ЭВМ списанных на ВЦ, похоже терминалы были из ГДР, т.к на платах стояли ПЗУ с фонтом 12*8 (U402D).

Насчёт дефицитности, - всё наоборот. 8253, что служил периферией для процессора 8080, в остальных странах мира снят с производства 35 лет назад, после того, как процессор 8080 утратил популярность. А Z80CTC выпускался тиражом в 1000 раз большим, чем 8253/ВИ53. Т.к он применялся в контроллерах промышленного оборудования. Потому Z80CTC распространён в мире больше, чем ВИ53, который с середины 80-тых выпускался лишь в СССР. Z80CTC разных фирм (в том числе и под именем UB857D) повсюду доступен по цене от 60 до 200 рублей и запасы их велики.

Кроме того Z80CTC стал стандартом, потому-что все его 4 канала стали встраивать во все Z80-производные процессоры и микроконтроллеры выпущенные после 1982 года: в 64-х нОгие Z180/HD64180, в ещё более многоногие Z280, Z380, eZ80, в 84-х ногую Z84013 и 100 ногую Z84C15. Таймеры встроили прямо в CPU потому, что они нужны в промышленных контроллерах и их наличие внутри CPU удешевляет изделие. А таймер 580 ВИ53 в отечественный КР580 ВМ1 не стали встраивать, хотя как раз это было бы логично.
Viktor2312 пишет:Z80, с ним... это уже будет не "Радио-86РК", а что-то совсем другое.
На самом деле не так, да и не важно как назвать. Всё равно в одном экземпляре. А важно, что сохраняется совместимость со старым ПО РК86, а Z80 дополнительно даёт ещё возможность использовать программы странслированные Турбо-Паскалем (он не только эффективнее на 15%, но и заметно удобнее, чем Паскаль КР580, т.к был сделан на несколько лет позднее, отчего в него добавлены улучшения языка, да и совместимость с TP MSDOS - большое преимущество, можно разрабатывать на PC).
Viktor2312 пишет:моё видение в данном вопросе, это оставление в схеме КР580 ВМ80А, но на максимальной частоте которую он тянет
Конечно и на КР580 можно выжать 3.5 МГЦ. Но если с Z80 3.5 МГЦ клока достижимы в той же схеме, то при КР580, чтобы этого достичь придётся изменить концепцию. А именно, добавить отдельное МП-ядро со своим ОЗУ/ПЗУ отделённое от ВТ57 и ВГ75 тремя буферами АП6. Да и без смены концепции с КР580 получается не только в разы тормознее, но и более громоздко аппаратно. Т.к для ВМ80, чтобы поднять скорость, надо ставить буфера, а с Z80 не надо (т.к Z80 скоростнее, его выходы более мощные) - он скворчит даже на 8 МГЦ без буферов. Для Z80 переключать клок не проблема, а двухфазный 12-ти вольтовый клок КР580 - хрен переключишь без громоздкой схемы с высоковольтными ключами и двумя ГФ24.

Из 48 кб ОЗУ лишь 16 кб (4000...7FFF где экран) будут на DRAM, а 32 кб ОЗУ будут на 15-ти наносекундных w24257, что позволит для Z80B иметь клок 8 МГЦ, а при обращении в экран и портам придётся тормозить WAIT-ами до родных скоростей РК. А возможно удастся вообще избавиться от DRAM. С Z80 доп.платка процессора получается проще и я её уже смонтировал. Пока в простом варианте лишь для замены процессора. А позднее хотелось бы переработать схему более существенно, кардинально изменив концепцию - за счёт добавления трёх буферов АП6 и доп.ОЗУ, чтобы буферами отделить ядро процессора от БИС ПДП и экранного ОЗУ (что позволит не останавливать CPU в циклах ПДП и одновременно разгрузить выходы ОЗУ 565 РУ5).


Последний раз редактировалось: barsik (Вт Авг 25 2020, 18:59), всего редактировалось 11 раз(а)
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty .

Сообщение  Viktor2312 Вс Авг 23 2020, 19:33

8
.
Я сейчас ради интереса решил посмотреть наличие и количество 580ВИ53, насколько всё изменилась с моей последней покупки их, примерно в 2010...2012гг.

Магазин №1
КР580ВИ53 (15 шт. в наличии) цена 130,00 руб. если покупать 1 шт. если 50 и более, 102,00 руб.
580ВИ53 (под заказ) цена:
от 2 шт. — 3 700 руб.
от 3 шт. — 3 470 руб.
от 4 шт. — 3 280 руб.

Магазин №2
КР580ВИ53 (80 шт. в наличии) цена 86,13 руб.
580ВИ53 (61 шт. в наличии) цена 672,00 руб.

В общим, если не выдолбываться с керамикой, а обычные КР580ВИ53, вполне доступны по 86,13 руб., в количестве 80 шт. Но цены кардинально конечно выросли и микросхемы стали менее доступны, хотя и прошло 8 лет минимум. Но мне проще, я их тогда сотнями скупал КР580 микропроцессорный комплект.
Это я так, в память на будущее ещё выложил, интересно будет проследить лет через 10 динамику цен и доступность.
Я просто к тому, что вы там собиральсь с Микрошей как вроде, паять воять, макетировать, надеюсь что нибудь у вас там да получится...

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty .

Сообщение  barsik Пн Авг 24 2020, 14:11

9
86...130 рублей за КР580 ВИ53 нормально, хотя за столько же можно купить и Z80CTC. А за 672 рубля, и уж тем более в керамике за 3700 рублей, они никому не нужны. За такие деньги можно купить специальные музыкальные БИС типа AY-8912, хотя применённые в РК86 они нарушат ламповость (т.к их не было в СССР в 1986 году). Спортивно поиметь приемлемое качество музыки именно на ВИ53. Как раз в РК86 собираюсь применить 580 ВИ53, т.к их у меня десяток, а UB857D всего две, отчего тратить их на РК86 жадность не позволяет.
Viktor2312 пишет:вы там собирались с Микрошей как вроде, паять, ваять, макетировать...
Пока нет.

Пользователь Microsha лишь высказал намерение доработать свой РК по схеме совместимого расширения ОЗУ до 56 кб. Но пока даже не сообщал, что решил это делать. Возможно он ещё решает, что именно и как макетировать, или сейчас у него для макетирования нет возможности или пока недостаточно энтузиазма.

А я сам также без спешки ставлю в свой РК процессор Z80. Панельку ПЗУ F800 заменил на 28 нОгую (с целью поиметь ПЗУ 8 кб вместо 2 кб). Что кстати, раз уж выборка сделана на все 8 килобайт, здравый смысл должен был подсказать разработчикам платы РК86 сделать изначально (тогда каждый пользователь мог бы сам выбрать иметь ли ему ПЗУ всего 2 кб или 8 кб). Добившись функционирования Z80 на базовом низком клоке, затем попробую его увеличивать. Одновременно заменив часть ОЗУ, что исходно на РУ5 в адресах ниже 4000 на более быструю статику 62256. Лишь добившись надёжности с Z80 на повышенном такте (при этом для РУ5 потребуется добавка циклов WAIT, а статика должна заработать без WAIT), можно будет заняться улучшением архитектуры РК (добавлением дополнительного участка ОЗУ выше 8000).

Но расширять ОЗУ на готовой плате разумнее по простому варианту с открытием ОЗУ не на 56 кб, а 48 кб (при этом переделок существенно меньше). Вариант с открытием ОЗУ в 56К рассчитывался на полностью новодельную плату, потому там схема не доработка на готовом РК86, а совсем новая с другим узлом дешифратора (что повторить на уже готовом РК сложно). При доработке проводками на уже готовой плате выгоднее вариант, в котором только ППА временно отключаются из адресного пространства "открывая" область ОЗУ в окне 8000...BFFF.

Точные частоты музыкальных нот на все 8 октав:

Применение КР580 ВИ53 для генерации музыки NOTES.1598254711
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия, СПб

Вернуться к началу Перейти вниз

Применение КР580 ВИ53 для генерации музыки Empty .

Сообщение  Viktor2312 Сб Сен 12 2020, 20:09

10
.
Оставлю просто это видео тут, интересно, музычку можно послушать, да и возможно что-то интересное почерпнуть:



.

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения