при первой загрузке -но сегодня он не менялся - вчерашние глюки были под тем же номером.
Вид для печати
Load -это чтение с диска. Каталог в памяти портится если зайти в меню Pattern - (только начал его делать) - надо нажать на букву диска и перечитать каталог.
Но на чтение из памяти (Sel. mem) это не влияет. В плейлисте когда играет - каждый же раз загружаются из памяти Ngs в память ZX и не виснет. Версия последняя скачана после 19:55 ?
Буду конечно ещё тестировать, но по-моему это как раз проблема, из прошлого обновления и я её исправлял
Когда-то давно (как посчитал - уже лет 20 назад ;) я делал на ZX-Profi под себя плеер mod-ов, под стерео-ковокс.
На то время никакой толковой информации не нашёл, сделал по-простому (счётчик на каждый канал, одна таблица - приращение счётчика для каждой ноты), минимум команд, что-то играет - и ладно, в Turbo-режиме естественно качество получше.
Чуть позже встречал какой-то другой плеер, который по-умному и по-правильному всё обсчитывал и на один канал ковокса выдавал нормальный звук и на стандартной частоте процессора. Но без документации в его коде и куче таблиц не разобрался.
До сих пор меня гложет желание понять принцип работы этого "правильного" алгоритма, который (видимо этот же) ещё на PC-Speaker играл STM на ЕС-1841 ...
Есть ли какая-нибудь нормальная дока, где всё это понятно описано?
Я такой не нашел, все по крупицам собирал из описания форматов s3m и IT, там же были формулы расчета частоты и периода ноты, сложения каналов и умножения на громкость. Более понятно было в доке по s3m - которая шла в комплекте с самим Scream Tracker 3. Ну а остальное самому додумывать приходилось. Формулы оптимизировать и переводить в таблицы для быстрого умножения и деления. - её в основном и использовал ка талмут. - Во вложении:
Основная формула
note: C C# D D# E F F# G G# A A# B
period: 1712,1616,1524,1440,1356,1280,1208,1140,1076,1016,0960,0907
middle octave is 4.
8363 * 16 * ( period(NOTE) >> octave(NOTE) )
note_st3period = --------------------------------------------
middle_c_finetunevalue(INSTRUMENT)
note_amigaperiod = note_st3period / 4
note_herz=14317056 / note_st3period
1) volumetable is created in the following way:
> volumetable[volume][sampledata]=volume*(sampledata-128)/64;
NOTE: sampledata in memory is unsigned in ST3, so the -128 in the
formula converts it so that the volumetable output is signed.
2) postprocessing table is created with this pseudocode:
> z=mastervol&127;
> if(z<0x10) z=0x10;
> c=2048*16/z;
> a=(2048-c)/2;
> b=a+c;
> { 0 , if x < a
> posttable[x+1024] = { (x-a)*256/(b-a) , if a <= x < b
> { 255 , if x > b
3) mixing the samples
output=1024
for i=0 to number of channels
output+=volumetable[volume*globalvolume/64][sampledata];
next
realoutput=posttable[output]
[свернуть]
Hacker Grey, Плеер проработал двое суток - забыл вчера выключить и - не завис.
А сегодня зачем-то попробовал загрузить плеер из под конфигугании TS-EVO.
Модули с примонтированных дисков грузятся и играют беспроблемно.
ПРи попытке загрузить с SD карты или HDD - ошибка DOS error/Ошибка ДОС на красном фоне.
Плеер после этого не виснет и можно загрузить с примонтированных дисков...
И еще - один и тот же модуль в память можно несколько раз загрузить?
Да, конечно можно.
В TS-Conf что бы работали SD-карты нужно запустить из tr-dos файл "setup" и выбрать драйвер памяти Pentagon 1024 v2. По идее так задумывалось, но что то в последней версии fat32 драйвера все равно SD не работают - буду разбираться - раньше работало на каком то этапе отладки
Нет, вспомнил на чем я там остановился - нужна рам в окне 0000 - по стандарту Pentagon - bit 3 #EFF7 (или ATM или KAI ) - а оно в TS не реализовано (ну или у меня не заработало) - можно под него сделать свой драйвер памяти с его адресацией но руки не дошли.
Обновление 10.12.18
+ добавлен редактор паттернов.
Описание управления
Управление
Курсорные клавиши, Back/Delete, Tab ( CS + 5,6,7,8,0, Space) и Enter.
В редакторе паттернов:
Enter - играть с текущей строки в паттерне.
CS+Enter - остановить вопроизведение.
CS + "+" / CS + "-" - выборк октавы.
CS + "<" / CS + ">" - выбор позиции в Orders.
Space - стереть значение.
Del/Graph (CS + 9) - удалить строку.
Ins (SS + W) - вставить строку.
CS + A - выдлеить весь паттерн.
CS + L - выделить один канал.
CS + B - выделить начало блока.
CS + E - выделить конец блока.
CS + X - стереть выделененый блок.
CS + V - скопировать и вставить выделенный блок.
Буфера обмена нет, так как под целый паттрен он может быть до 16кб,
и на ZX-128к останется всего 32ки по редактор патттренов.
Поэтому скопирутеся то, что в данный момент выделено.
Move Cursor keys, Back / Delete, Tab ( CS + 5,6,7,8,0, Space) and Enter.
In the pattern editor:
Enter -play from the current line in the pattern.
CS + Enter-stop playback.
CS + " + "/ CS + " - " - octave samples.
CS + " < "/ CS + " > " - select a position in Orders.
Space-erase value.
Del / Graph (CS + 9) - delete the line.
Ins (SS + W) - insert a string.
CS + A-select the whole pattern.
CS + L-select one channel.
CS + B-select the beginning of the block.
CS + E-select the end of the block.
CS + X-erase the selected block.
CS + V-copy and paste the selected block.
There is no clipboard, as it can be up to 16 KB under the whole cartridge,
and on ZX-128K there will be only 32K and pattern editor software.
Therefore, what is currently selected is copied.
[свернуть]
Просьба к тем, кто представляет себе, что такое Tracker и имеет навыки работы в них. - по тестируйте.
Сохранения ещё нет, но в памяти после сброса ZX (без сброса GS) отредактированный модуль остается, и можно продолжать редкатирование
Обновление 19.12.2018
+ из класса проигрыватель, переведен а класс редакторов. Для редактора самое главное - уметь сохранять результат работы. Пока нет функции создания нового модуля, загрузки сэмплов, добавления паттернов. Но можно загрузить чужой модуль с понравившимися инструментами, очистить паттерны, и написать свою композицию, и сохранить её под новым именем. Постепенно всё будет реализовано.
+ драйвер памяти, загружаемый по умолчанию, поддерживает 3 стандарта. PentEvo, TS-Conf, Pentagon1024V2. Остальным так же, как и ранее, выбирать нужный драйвер через RUN "setup" в Tr-DOS
Hacker Grey, Отличная работа !
обновление 25.12.18
+ радостная новогодняя цветовая схема (меняется на вкладке Setup). (у каждого конечно свое представление о цвете радости или детской неожиданности)
+ сохранение настроек Setup - последним активным дисководом должен быть дисковод с NeoTracker. Куда не надо, не сохранит.
+ в управление добавлены кнопки PgUp PgDn, и в меню и в паттерне.
+ создание пустого модуля (но пока нет загрузки инструментов - и поэтому из пустого модуля свой трек создать не получится - но можно же взять чужой с инструментами и очистить паттерны).
+ добавление нового паттерна (на будущее реализованы паттерны от 2 до 256 строк для XM и IT, но в s3m стандарте только 64 строки).
+ быстрое перемещение в списке очередности паттернов во вкладке Patterns - просто на крайних кнопках < и > если держать вправо или влево - список бежит вправо или влево. Что бы выбрать паттерн - нажать в списке на номер мышкой или ентером.
+ при повторном запуске (без сброса NGS) убрана печать приветственного текста т.к. он не загружается повторно, и что бы пользователей не пугал мусор вместо текста.
Добавление паттернов/сэмплов/инструментов будет возможно только в последнем созданном или загрженном модуле в списке в памяти NGS. Иначе в памяти начнутся пересечения и при удалении следующего модуля из памяти может пострадать редактируемый модуль. Предыдущие модули в памяти не мешают.
Обновление 12.01.2019
+ Реализована возможность полноценного редактирования и создания модуля с нуля.
Создание нового пустого модуля, добавление паттернов, загрузка инструментов, удаление инструментов, замена инсутрмента.
Для удобства перебора инструментов, быстрой загрузке при выборе в меня Samples заведена горячая клавиша L.
Добавление , удалении патеррнов и инструментов возможно только в последнем модуле из плэй листа ( в памяти NGS )
+ В Samples добавлены возможности менять частоту сэмпла и громкость.
+ В архиве под SD добавлена полная библиотека WaveTable от General MIDI - 128 инструментов и много эффектов.
Обновление 16.12.2019
+ в редакторе паттренов запрет выделения и копирования в несуществующий паттерн - копировался мусор и могло зависнуть.
+ теперь выделять начало и конец блока для копирования можно не только C.Shift+B и C.Shift+E.
Начало можно выделить C.Shift+Мышка и удреживая C.Shift щелкнуть мышкой на конец блока.
+ В редакторе паттернов в списке позиций Orders добавлена обаработка Insert и Delete, - раздвигает или сдвигает список позиций.
+ Loop - зацикленное вопросизвевдени паттерна
+ Rec - ввод мелодии в реальном времени одновременно с воспроизведением - запись.
Видео любительское - Сразу прошу прощения за качество звука с микрофона ноутбука, стук клавиш и тихий звук самого трекера.
https://www.youtube.com/watch?v=GnWI09jIJWk
Выявил один момент и хочу предупредить, если при сохранении модуля на SD или HDD, NeoTracker очень долго думает - дождитесь, не нажимайте сброс. Он не висит. Это драйвер ищет первый свободный кластер в FAT32. Эта может быть, если что-либо писали на флэшку на PC в Windows.
Причины. Как всегда во всем виноват Microsoft. В FAT32 есть специальная ячейка, хранящая первый свободный кластер. Но Microsoft , с начало её ввело в стандарт, а потом начиная с Windows XP то-ли из-за ошибки, то-ли специально, перестало её заполнять. А если она не заполнена, то драйвер заново ищет первый кластер, перебирая ВСЮ! цепочку FAT32. Возможно, во времена XP её перестали использовать, что бы искусственно замедлить FAT32, по сравнению с NTFS, а возможно Microsft не была уверена, что там хранится корректное значение, а тогда запись новых данных может пойти поверх старых, и поэтому решило всегда пересчитывать всю цепочку FAT32 перед записью.
Но на Пентиумах это занимает пол секунды, а z80 может задуматься на этой операции на 5 минут.
NeoTracker при записи эту ячейку исправляет и заполняет. Все последующие записи будут быстрыми, но первая запись, после контакта с Windows может из-за этого быть очень долгой.
Обновление 21.01.2019
+ в редакторе патернов добавлен шаг строки при вводе нот 0 1 2 4 8.
Удобно при вводе ритма, ударных, баса, где ноты идут через 2, 4 или 8 строк.
+ загрузка из файла NeoTrack.$c из ResetService или WC сразу с SD или HDD , не нужно подключать образ trd.
Загрузчик можно запустить с sd, hdd. - драйвер памяти общий PentEvo, TS-Сonf, Pentagon v2
Дальше загрузчик ищет папку NEOTRACK сначало на Z-SD потом на HDD потом на Neo-SD.
Версия trd так же оставлена так как пока только в ней есть выбор драйвера памяти,
работа без теневого озу в странице 0 и загрузка модулей с дискет и образов trd. И в эмуляторе проще запустить trd
стрим по моему старинному творению https://zx-pk.ru/threads/29277-moi-k...l=1#post999950
OHG?! Только заметил, что ты из Новочека! Жаль небыли знакомы, когда я там жил.
Новых версий пока не предвидится, так как два человека, обещавших написать прошивку под аппаратные 32 канала, так её и не сделали. А из программных 8 каналов выжато всё что возможно.
Вот выложил примеры работы и звучания. https://www.youtube.com/watch?v=aoDs...odwoivsPgZJt75
При попытке загрузиться с флешки NeoGS пишет Dos error / ошибка дос . Что я не так делаю ?
Проверил , кидал везде эту папку , ошибка одинаковая вылазит.
Аналогично, работают только дискеты. При попытке прочитать SDn или HDD вылазит "DOS Error/Ошибка DOS" с последующим зависанием (м.б. я не нашел на какую кнопку реагирует, но точно не backspace). Железо Pentagon 512 + NemoIDE.
Ещё есть ньюанс, что если NeoGS принудительно не сбросить перед стартом плеера, то тоже зависание на старте.
Поиграл немного треков на Спектруме. Хочу сказать спасибо Хакеру за большой труд, очень круто. Единственное что расстраивает что читаются только дискеты, а SDn и диск виснут. Но это мелочи.
А по большому счету подводит только железо. 8 каналов оказалось очень мало. Во многих композициях из-за нехватки каналов выпадает большая половина слышимого. Не самый плохой пример (есть сильно хуже)
https://www.youtube.com/watch?v=kbgqEu9Bils
тогда как на ПК
https://www.youtube.com/watch?v=-ED7eCGfxYc
32 канала обещал автор ayx32, но там проект я посмотрю подзаглох.
Очень странно. Я конечно отлаживал на ZX-Evo. Там может быть отличие Nemo-IDE и SD от Пентагона. Но флэшка даже в NeoGS не читается ? Там точно всё одинаково. Может она случайно отформатирована не в FAT32 а в ntfs? Или слишком большой размер кластера ? Попробуй переформатировать с меньшим размером.
- - - Добавлено - - -
Да - у меня есть юзер, который на фирменном спектруме и подключенным NeoGS пользуется моим плеером и читает с файлы с флэшки в NeoSD
Спасибо. Карта FAT32, когда буду посвободнее посмотрю влияет ли размер кластера. Эту СД карточку читают WDC (собственно им и копирую .s3m с карточки на дискеты), и Neo Player Light
Можешь не мучится. Я посмотрел исходники, освежил в памяти что да как.
Драйвер FAT работает в окне 0-16384 . На простом пентагоне не заработает.
Нужен кэш 16 кб в окне 0. или свободное включение страниц в окно 0 - как на АТМ, Evo, Pent 2.666 и другие новоделы.
А у юзера из зарубежа подключен модуль MB02+ c поддержкой включения ОЗУ 0- # 3FFF, и я под него также специально писал драйвер.
- - - Добавлено - - -
Пришлось его там размещать, потому что драйвер занимает 16 кб. и он читает на страницу в #c000. А в области от #4000-#c000 всё уже под завязку - там его не разместишь.
Понял. А я-то думал, почему драйвер говорит что надо переключение ПЗУ страницы, но с дискет всё работает.
Разные кластеры я таки затестил
1024 флешку перестаёт видеть NPL, WDC нормально читает
4096 видят обе программы
32768 тоже обе видят
Обидно вот что. Альтера EP1K30 и EP1K50 на ебее почти в одну цену. Корпуса одинаковые. С точки зрения дурака меня (я в этом не разбираюсь вообще), если заменить плис на 1K50, то не может быть сильно сложно адаптировать существующую прошивку и поднять 16 каналов. А это ж совсем другое дело было бы! Эх...
В успехе ayx32 я сильно сомневаюсь, т.к. там если автор неспешно допишет прошивку на 32 канала, то памяти 900к в микроконтроллере на сэмплы полагаю не хватит. Т.е. надо будет пилить новую железку, адаптировать под неё софт итп. В общем к 2030 году может что-то будет рабочее.
Короче безысходность какая-то.
Чот не грузит с NeoGS с SD карты, дос еррор красным и висяк :(
Hacker Grey, комп в подписи - Scorpion + GMX.
В сетапе сделал правильный выбор. Теперь все загружается.
Спасибо! Крутая софтина. Еще бы поддержку SMUC, был бы ваще perfect! ;)
Понимаю что малость оффтопик, но всё таки. Купил у китайцев EP1K50TC144-1 за $4. Поставил в НеоГС, всё работает. Квартус при компиляции говорит, что использует 44% LE
Я вообще полный ноль в VHDL, но неужели кто-то в нём шарящий не сможет добавить ещё хотя бы ещё 8 каналов? Там же по идее просто надо (копипастой?) добавить ещё 8 портов громкости, сделать чтение доп. каналов в своих адресах памяти, и добавить 8 multiply-add в сумматор данных на ЦАП. Z80 потянет 16 каналов S3M?Код:Family ACEX1K
Device EP1K50TC144-1
Timing Models Final
Met timing requirements Yes
Total logic elements 1,273 / 2,880 ( 44 % )
Total pins 99 / 102 ( 97 % )
Total memory bits 8,320 / 40,960 ( 20 % )
Total PLLs 0 / 1 ( 0 % )
А сколько логических элементов надо под софткор типа T80? Тошибовский SRAM на старых ревизиях стоит 10-15ns, мне кажется что на 48Мгц оно бы завелось без проблем.