Итого. Ты обратился ко мне типа как к эксперту в предметной области (иначе бы и обращаться именно ко мне не было смысла). Я попытался помочь чем могу (и это не первый раз), поделился с тобой реальным опытом и рассмотрел возможные решения, выделив из них два наиболее реальных, для разных исходных условий. Ты зачем-то начал спорить с одним из решений (хотя сразу стало ясно, что тебе нужно второе), допустив при этом минимум две ошибки, делающие дальнейшие выводы невалидными. Я тебе на них указал. Ты решил развить тему в новом направлении, приписав мне истерию, повторяемость, внезапно 'единственное' решение, а заодно самоутвердился, типа ты большой начальник и отсеиваешь людей по признакам.
Я поделился практическим опытом, как реальнее всего решить поставленную задачу, при наименьших трудозатратах. Зачем рассказывать мне, что это кем-то называется иначе и имеет недостатки? Да, дамп будет больше исходного модуля. Нет, не в сотни раз, есть простые способы сжатия таких дампов, а на STM32 явно найдутся и ресурсы для LZ-депакера, подобные дампы им отлично жмутся.
Я понял, что хочется полноценный XM-плеер, и указал на наиболее реальный путь его получения. Вложить в реализацию этой затеи неэффективным способом сотни часов моего личного времени — извини, не могу. У меня всегда завал чужих и своих проектов, причём на свои времени и сил не хватает катастрофически.
MPTracker пилили 20 (двадцать) лет. И он уже сам генерирует не вполне совместимые с другим софтом модули, добавляет в них информацию, которая вообще нигде и никак не задокументирована, кроме кода в исходниках. И этих исходников там километры, в них можно потеряться навсегда.
Конвертор без потери возможностей — почему же вдруг маловероятен? Разве PSG/VTX теряет что-то важное по сравнению с PT3? В плеере XM есть парсер паттернов и эффектов (самая неоднозначная часть). Есть генератор огибающих, управляемый парсером. На выходе они по сути каждый кадр выдают питч и громкость для каждого канала. Этот минимум параметров идёт на низкоуровневую часть ('вейвсинтез'). Достаточно сделать лог этой промежуточной информации, питча и громкости, и мы имеем в разы более простой по устройству плеер на конечном устройстве при 100% таком же результате.
Если нужно проигрывать миллион готовых модулей без промежуточной конверсии, значит однозначно надо брать готовые исходники и адаптировать. Писать с нуля, чтобы миллион модулей заиграл хоть как-то похоже на задуманное их авторами — это сотни человеко-часов, при минимальной мотивации. Сейчас таких ресурсов уже не найти.
Голый AVR и Arduino давно освоил, разработал пару простых железок в стол (типа адаптера PS/2 мыши к приставке).
Написание именно высокоуровневой части XM-плеера дело крайне неблагодарное, так как формат развивался стихийно и потому не имеет спецификации. Лучшее, что есть — составленное энтузиастами исследование, неполное и неточное. Написание плеера с приличной совместимостью в такой ситуации может занять реально годы. Я считаю, что если нужна прямая поддержка XM (загружать XM-файлы без конвертора), то единственный эффективный путь — взять готовый плеер, в который уже были вложены необходимые усилия (например, github.com/Artefact2/libxm), и либо пробовать компилировать как есть (STM32 должен потянуть, вопрос совместимости кода с компилятором), либо переписывать по его шаблону на более низкий уровень.
Другой вариант, если система закрытая и не предполагает играть сами XM-файлы (т.е. есть только игры и демки, а просто взять SD, накачать туда XM и слушать нельзя) — сделать промежуточный легко и однозначно интерпретируемый формат, типа дампа регистров AY. Конвертер для XM в этот формат можно сделать на основе готового плеера на PC. Это быстрее и проще на всех уровнях. Я экспериментировал с этим подходом, писал 8-канальный плеер чиптюна (только 256-байтные циклические сэмплы) для SounDrive с конвертором из XM, но забросил.
По поводу двух фракций. Это принципиально не так, это предлагаемая тебе позиция незрелого максимализма первой фракции — 'или наш журнал Весёлые картинки, или ваше ничего'. В реальности всегда есть множество вариантов. Лично я считаю, что на нашей демосцене давно возник очень серьёзный дефицит качества общения, а вовсе не количества. И лучше пусть редко, но метко и интересно, чем ещё раз то же самое, что на каждом форуме и в каждом чатике. Представители же первой фракции видимо подсознательно ощущают, что к созданию полезного и интересного сообществу контента они уже не способны, да и просто к нормальному поведению в обществе — и поэтому им в качестве альтернативы видится только тишина, и их так беспокоят минусы. Конечно же в среде более высокого качества общения они их будут регулярно получать. Ну и конечно, хиханьки-хаханьки, кукловодство с чудными персонажами, весёлые картинки и непрерывные срачики — куда легче и веселее, чем писать какие-то там статьи про унылые спектрумы. Когнитивная простота же.
Минусы и плюсы — инструмент саморегуляции комьюнити без лишних выходов на конфликт. Его работоспособность в принципе подтверждена существующими ресурсами. Один персональный плюс-минус ничего не решает, решает высказанное посредством этих оценок (а не срача) мнение большинства. Хотите одни только плюсы — получите вконтактик. Хотите ни того, ни другого — получите любимый форум. Со всеобщим взаимным уважением, помощью, и советами по существу в каждой теме.
А вот всё это словоизлияние про херню и простые ёбла — едва ли на пользу площадке, имхо. Ну, видимо, каждый как может, пытается создать комфортную для него среду общения.
Я поставил минус, потому что не хотел бы видеть подобные топики на главной. На мой взгляд, это неформат, даже на форумах подобные вопросы всегда осуждались (LMGTFY). Быстрее и лучше же самому погуглить, или посмотреть документацию, или посмотреть в многочисленных книжках, и найти точные ответы, чем ждать, пока другие сделают то же самое за тебя. Навскидку точный ответ на подобные вопросы никто не даст, за малой актуальностью, всем придётся обращаться к одним и тем же источникам. Ну а после самостоятельного изучения темы можно написать авторский ликбез для будущих искателей подобных ответов, и вот это уже будет достойно топика и заслуживать большого плюса.
Это не для всех так. SunVox попробовал сразу, как он только появился в 2008, но не смог привыкнуть к интерфейсу. С тех пор периодически повторяю подходы, но так и не осилил. Хотя проблем с модульными трекерами нет, люблю и постоянно использую (мой фаворит Psycle). Дело чисто в интерфейсе, он слишком отличается от стандартных, слишком контрастный по цветам и размерам, и возможно имеет объективные проблемы с usability на начальном этапе (паттерн слева, кнопка play справа, гоняй мышь туда-сюда через все 16:9). Нужно вложить немало усилий, чтобы всё настроить под себя и привыкнуть. Это очень напоминает историю с Blender и ощущения при переходе на него с 3D Max. Но там оно того стоило, а тут не было большой необходимости (особенно когда он был платным), и есть более доступные альтернативы.
Примечание: я не говорю, что SunVox чем-то плох, напротив, он хорош. Но steep learning curve, как мне кажется.
Может, затем, что это жизнь сцены, и появление форума с последующими разборками — события, оказавшие самое существенное влияние на сцену и её (не)развитие на многие годы вперёд?
Зачем рассказывать автору, что уныло — исключительно затем, что автор сам начал рассказывать, что это забавно. Не дело автора судить о своём творчестве и проталкивать оценку. Творчество должно говорить само за себя. Когда автору приходится говорить за творчество, это показатель, что с творчеством есть некоторые проблемы.
С чего же наугад? Это из темы про этот самый обсуждаемый текст, показывает конструктивный диалог, ведомый автором. Автор же сам хотел сравнить поведение.
Читал сегодня и почитываю регулярно. К вопросам о позитивной реакции на проды там — до сих пор хорошо помню, как первым делом предлагалось оторвать мне руки за один релиз, несколько сложнее петросянского текста.
Твой текст — не прод. В интернетах это называется другим словом.
Более я по этой теме тебе никогда отвечать не стану.
Я понял, что хочется полноценный XM-плеер, и указал на наиболее реальный путь его получения. Вложить в реализацию этой затеи неэффективным способом сотни часов моего личного времени — извини, не могу. У меня всегда завал чужих и своих проектов, причём на свои времени и сил не хватает катастрофически.
Конвертор без потери возможностей — почему же вдруг маловероятен? Разве PSG/VTX теряет что-то важное по сравнению с PT3? В плеере XM есть парсер паттернов и эффектов (самая неоднозначная часть). Есть генератор огибающих, управляемый парсером. На выходе они по сути каждый кадр выдают питч и громкость для каждого канала. Этот минимум параметров идёт на низкоуровневую часть ('вейвсинтез'). Достаточно сделать лог этой промежуточной информации, питча и громкости, и мы имеем в разы более простой по устройству плеер на конечном устройстве при 100% таком же результате.
Если нужно проигрывать миллион готовых модулей без промежуточной конверсии, значит однозначно надо брать готовые исходники и адаптировать. Писать с нуля, чтобы миллион модулей заиграл хоть как-то похоже на задуманное их авторами — это сотни человеко-часов, при минимальной мотивации. Сейчас таких ресурсов уже не найти.
Написание именно высокоуровневой части XM-плеера дело крайне неблагодарное, так как формат развивался стихийно и потому не имеет спецификации. Лучшее, что есть — составленное энтузиастами исследование, неполное и неточное. Написание плеера с приличной совместимостью в такой ситуации может занять реально годы. Я считаю, что если нужна прямая поддержка XM (загружать XM-файлы без конвертора), то единственный эффективный путь — взять готовый плеер, в который уже были вложены необходимые усилия (например, github.com/Artefact2/libxm), и либо пробовать компилировать как есть (STM32 должен потянуть, вопрос совместимости кода с компилятором), либо переписывать по его шаблону на более низкий уровень.
Другой вариант, если система закрытая и не предполагает играть сами XM-файлы (т.е. есть только игры и демки, а просто взять SD, накачать туда XM и слушать нельзя) — сделать промежуточный легко и однозначно интерпретируемый формат, типа дампа регистров AY. Конвертер для XM в этот формат можно сделать на основе готового плеера на PC. Это быстрее и проще на всех уровнях. Я экспериментировал с этим подходом, писал 8-канальный плеер чиптюна (только 256-байтные циклические сэмплы) для SounDrive с конвертором из XM, но забросил.
А вот всё это словоизлияние про херню и простые ёбла — едва ли на пользу площадке, имхо. Ну, видимо, каждый как может, пытается создать комфортную для него среду общения.
Примечание: я не говорю, что SunVox чем-то плох, напротив, он хорош. Но steep learning curve, как мне кажется.
Твой текст — не прод. В интернетах это называется другим словом.