Я поделился практическим опытом, как реальнее всего решить поставленную задачу, при наименьших трудозатратах. Зачем рассказывать мне, что это кем-то называется иначе и имеет недостатки? Да, дамп будет больше исходного модуля. Нет, не в сотни раз, есть простые способы сжатия таких дампов, а на STM32 явно найдутся и ресурсы для LZ-депакера, подобные дампы им отлично жмутся.
Я понял, что хочется полноценный XM-плеер, и указал на наиболее реальный путь его получения. Вложить в реализацию этой затеи неэффективным способом сотни часов моего личного времени — извини, не могу. У меня всегда завал чужих и своих проектов, причём на свои времени и сил не хватает катастрофически.
Достаточно сделать лог этой промежуточной информации, питча и громкости
Так сделано у Робуса в вайлдсаунде, если я не ошибаюсь. И называется это регдамп. Учитывая, что регистров поболее, чем у АУ, я вангую 200-300 байт на фрейм, это минимум. Нетрудно подсчитать размер дампа.
MPTracker пилили 20 (двадцать) лет. И он уже сам генерирует не вполне совместимые с другим софтом модули, добавляет в них информацию, которая вообще нигде и никак не задокументирована, кроме кода в исходниках. И этих исходников там километры, в них можно потеряться навсегда.
Конвертор без потери возможностей — почему же вдруг маловероятен? Разве PSG/VTX теряет что-то важное по сравнению с PT3? В плеере XM есть парсер паттернов и эффектов (самая неоднозначная часть). Есть генератор огибающих, управляемый парсером. На выходе они по сути каждый кадр выдают питч и громкость для каждого канала. Этот минимум параметров идёт на низкоуровневую часть ('вейвсинтез'). Достаточно сделать лог этой промежуточной информации, питча и громкости, и мы имеем в разы более простой по устройству плеер на конечном устройстве при 100% таком же результате.
Если нужно проигрывать миллион готовых модулей без промежуточной конверсии, значит однозначно надо брать готовые исходники и адаптировать. Писать с нуля, чтобы миллион модулей заиграл хоть как-то похоже на задуманное их авторами — это сотни человеко-часов, при минимальной мотивации. Сейчас таких ресурсов уже не найти.
Для меня стандартом является MPTracker, и я не видел ХМ чтобы в нем глючил. Сорцы открыты. Для референса, конечно, в лоб не портанешь.
Спасибо за ссылку на libxm.
Система отнюдь не закрытая, ХМ грузится как есть, лишь бы памяти хватало. Конвертор в что-либо проще ХМ-а без потери возможностей представляется маловероятным. А количество готовых модулей исчисляется реально миллионами.
Кроме ХМ там будет 32 канала вейвсинтеза, которые можно использовать параллельно с АУ, а значит плеер о котором ты говоришь может работать даже на хосте (на з80), ну или чо-нить для дем свое.
Голый AVR и Arduino давно освоил, разработал пару простых железок в стол (типа адаптера PS/2 мыши к приставке).
Написание именно высокоуровневой части XM-плеера дело крайне неблагодарное, так как формат развивался стихийно и потому не имеет спецификации. Лучшее, что есть — составленное энтузиастами исследование, неполное и неточное. Написание плеера с приличной совместимостью в такой ситуации может занять реально годы. Я считаю, что если нужна прямая поддержка XM (загружать XM-файлы без конвертора), то единственный эффективный путь — взять готовый плеер, в который уже были вложены необходимые усилия (например, github.com/Artefact2/libxm), и либо пробовать компилировать как есть (STM32 должен потянуть, вопрос совместимости кода с компилятором), либо переписывать по его шаблону на более низкий уровень.
Другой вариант, если система закрытая и не предполагает играть сами XM-файлы (т.е. есть только игры и демки, а просто взять SD, накачать туда XM и слушать нельзя) — сделать промежуточный легко и однозначно интерпретируемый формат, типа дампа регистров AY. Конвертер для XM в этот формат можно сделать на основе готового плеера на PC. Это быстрее и проще на всех уровнях. Я экспериментировал с этим подходом, писал 8-канальный плеер чиптюна (только 256-байтные циклические сэмплы) для SounDrive с конвертором из XM, но забросил.
Подписываюсь почти под каждым словом =)
Полный оффтоп: хватит о грустном, давайте о спектруме. Ширу, чем закончились твои эксперименты с ардуино? Не хочешь поучаствовать в написании прошивы для STM32? Нужен XM плеер, по сути хайлевельная часть — обработка формата, паттерны, эффекты. Вейвсинтез я почти дописал.
у невидимых оценок и у видимых есть свои + и -: увидел оценку "-", ах ты гад, я тебе в отместку минусну или припомню!
Надо вырасти из этого просто-напросто. Неприятно, конечно, видеть оценки постов, но что поделать?
LessNick, ты с кем-то путаешь нас. Тут не 5 человек живых и не 1-2 публикует материалы. Хотя, если ты себя считаешь не живым, и свой пост не считаешь материалом, то, конечно, может быть, ты и прав.
По поводу двух фракций. Это принципиально не так, это предлагаемая тебе позиция незрелого максимализма первой фракции — 'или наш журнал Весёлые картинки, или ваше ничего'. В реальности всегда есть множество вариантов. Лично я считаю, что на нашей демосцене давно возник очень серьёзный дефицит качества общения, а вовсе не количества. И лучше пусть редко, но метко и интересно, чем ещё раз то же самое, что на каждом форуме и в каждом чатике. Представители же первой фракции видимо подсознательно ощущают, что к созданию полезного и интересного сообществу контента они уже не способны, да и просто к нормальному поведению в обществе — и поэтому им в качестве альтернативы видится только тишина, и их так беспокоят минусы. Конечно же в среде более высокого качества общения они их будут регулярно получать. Ну и конечно, хиханьки-хаханьки, кукловодство с чудными персонажами, весёлые картинки и непрерывные срачики — куда легче и веселее, чем писать какие-то там статьи про унылые спектрумы. Когнитивная простота же.
А, смотри. На самом деле, критика и коментарии по умолчанию включены, иначе в ЖЖ, например, просто отключаются каменты, если ты заведомо не хочешь слышать критику.
Другое дело — плюсики-минусики. То тут вроде как похвалили-обосрали, но абсолютно непонятно кто и за что. И это харит. Плюсики вызывают чувство подхалимажа а минусики намекают на ханжей или хейтеров.
Я понял, что хочется полноценный XM-плеер, и указал на наиболее реальный путь его получения. Вложить в реализацию этой затеи неэффективным способом сотни часов моего личного времени — извини, не могу. У меня всегда завал чужих и своих проектов, причём на свои времени и сил не хватает катастрофически.
Конвертор без потери возможностей — почему же вдруг маловероятен? Разве PSG/VTX теряет что-то важное по сравнению с PT3? В плеере XM есть парсер паттернов и эффектов (самая неоднозначная часть). Есть генератор огибающих, управляемый парсером. На выходе они по сути каждый кадр выдают питч и громкость для каждого канала. Этот минимум параметров идёт на низкоуровневую часть ('вейвсинтез'). Достаточно сделать лог этой промежуточной информации, питча и громкости, и мы имеем в разы более простой по устройству плеер на конечном устройстве при 100% таком же результате.
Если нужно проигрывать миллион готовых модулей без промежуточной конверсии, значит однозначно надо брать готовые исходники и адаптировать. Писать с нуля, чтобы миллион модулей заиграл хоть как-то похоже на задуманное их авторами — это сотни человеко-часов, при минимальной мотивации. Сейчас таких ресурсов уже не найти.
Спасибо за ссылку на libxm.
Система отнюдь не закрытая, ХМ грузится как есть, лишь бы памяти хватало. Конвертор в что-либо проще ХМ-а без потери возможностей представляется маловероятным. А количество готовых модулей исчисляется реально миллионами.
Кроме ХМ там будет 32 канала вейвсинтеза, которые можно использовать параллельно с АУ, а значит плеер о котором ты говоришь может работать даже на хосте (на з80), ну или чо-нить для дем свое.
Написание именно высокоуровневой части XM-плеера дело крайне неблагодарное, так как формат развивался стихийно и потому не имеет спецификации. Лучшее, что есть — составленное энтузиастами исследование, неполное и неточное. Написание плеера с приличной совместимостью в такой ситуации может занять реально годы. Я считаю, что если нужна прямая поддержка XM (загружать XM-файлы без конвертора), то единственный эффективный путь — взять готовый плеер, в который уже были вложены необходимые усилия (например, github.com/Artefact2/libxm), и либо пробовать компилировать как есть (STM32 должен потянуть, вопрос совместимости кода с компилятором), либо переписывать по его шаблону на более низкий уровень.
Другой вариант, если система закрытая и не предполагает играть сами XM-файлы (т.е. есть только игры и демки, а просто взять SD, накачать туда XM и слушать нельзя) — сделать промежуточный легко и однозначно интерпретируемый формат, типа дампа регистров AY. Конвертер для XM в этот формат можно сделать на основе готового плеера на PC. Это быстрее и проще на всех уровнях. Я экспериментировал с этим подходом, писал 8-канальный плеер чиптюна (только 256-байтные циклические сэмплы) для SounDrive с конвертором из XM, но забросил.
Полный оффтоп: хватит о грустном, давайте о спектруме. Ширу, чем закончились твои эксперименты с ардуино? Не хочешь поучаствовать в написании прошивы для STM32? Нужен XM плеер, по сути хайлевельная часть — обработка формата, паттерны, эффекты. Вейвсинтез я почти дописал.
Надо вырасти из этого просто-напросто. Неприятно, конечно, видеть оценки постов, но что поделать?
героевничтожеств!Другое дело — плюсики-минусики. То тут вроде как похвалили-обосрали, но абсолютно непонятно кто и за что. И это харит. Плюсики вызывают чувство подхалимажа а минусики намекают на ханжей или хейтеров.