51

Re: Разбор архитектуры софта ЯЗС

Составил список команд, которые понимает MIDIGED. Аж 48 штук. Многие из них ждут параметры и проверяют диапазоны значений, поэтому методом тыка так просто с ними не разберешься.

Пока выяснял назначение команд, нашел несколько сюрпризов. Первый - с форматом файла. Я был уверен, что это стандартный формат, уже описанный в этой теме раньше. Оказалось - не совсем. Во-первых, в нем 16 каналов, а не 7. Поэтому, при загрузке 7-канальных файлов редактор начинает глючить и виснет. Во-вторых, часть команд была изменена. Вместо команды расстройки (коды $E0 - $EF) были добавлены:
- команда "выбор MIDI канала" с кодом $E0 и параметром - кодом MIDI сообщения NOTE_ON с номером канала.
- команда "установка Velocity" с кодом $E1 и параметром - значением Velocity.

Кроме того, оба редактора (MIDIGED и MUSAGED) могут добавлять команду с кодом $C4, которую ни одна версия плеера не понимает. Но судя по уголку, который эта команда рисует на экране - это знак отмены повышения или понижения октавы. Похоже, что разработчики редактора хотели сделать обычную нотную запись, когда начало и конец области, где ноты играются выше или ниже чем записаны, отмечаются специальными знаками. А разработчики плеера увидели, что отмену повышения на октаву можно сделать командой понижения на октаву (и наоборот) и делать "лишнюю" команду не стали.

Интересно, что хотя редактор переделан под MIDI, в нем остались команды, привязанные к ЯЗС, например задание длительности атаки. Впрочем, с этим понятно - поскольку время MIDI сообщений не хранится, моменты включения и выключения нот определяются по нотному тексту, а длительность атаки как раз влияет на время выключения ноты.

Редактор вообще впечатляет своими возможностями (16 каналов, графический режим, печать). Но, несмотря на это мне кажется, что пользоваться им было не очень удобно. Вот, например, нужно музыканту записать аккорд до-мажор. Для этого надо записать три ноты одну над другой: "до", "ми" и "соль". Программы для работы с MIDI хотя бы из середины 90-х именно так и позволяют это записать. Но в MIDIGED в одном канале одновременно может звучать только одна нота. Поэтому надо записать "до", переключиться на второй канал, найти там тот же момент времени, записать там "ми", переключиться на третий и записать там "соль". То есть, нет наглядности. Музыкантов учат распознавать аккорды просто по внешнему виду, а тут надо щелкать по каналам и собирать аккорд по отдельным нотам. Ну и разбивки по тактам нет, что тоже не помогает ориентироваться в тексте. В общем, возможностей для улучшения оставлено много :)

Post's attachments

Attachment icon midiged_commands.txt 2.75 kb, 95 downloads since 2018-02-10 

52

Re: Разбор архитектуры софта ЯЗС

Посмотрел тут снова на код PLAYNB из папки pl1.fm2.4070 и понял, что неправильно его понял :)

        STA    DATA_C200
        LDA    #$27
        STA    IRQVECTORLO
        LDA    #$3A
        STA    IRQVECTORHI
        STA    DATA_C220

Я-то сначала думал, что это под девятку, и не мог понять, что за обращения к адресам $C200 и $C220, а тут до меня дошло, что это просто управление семерочным ПсевдоПЗУ.

Так что в этой папке версия плеера под семерку. К сожалению, пользы от этого знания никакого, потому что ранняя ЯЗС (или точнее МЗС - модуль звукового синтеза) использовала другие порты и с имеющейся картой этот код все равно работать не будет. Но хотя бы можно уверенно считать, что под семерку софт для ЯЗС был.

А в файле PLAYERB кода оказалось всего две команды, а остальное место занимает вот такой экран.

Post's attachments

playerb4070.png, 16.04 kb, 512 x 512
playerb4070.png 16.04 kb, 9 downloads since 2019-08-17 

53

Re: Разбор архитектуры софта ЯЗС

Вот оно что