Приветствую. Возникла необходимость загрузить и проиграть MOD файл на Спринтере. Скачал несколько мануалов по формату этого файла. В целом, формат понятен, есть пара моментов, но не страшно. Вопросы возникают на следующих моментах:
1. Для проигрывания сэмпла на какой то ноте на амиге используются периоды которые, как я понимаю, используются для Паулы. На машинах без Паулы используют формулу для преобразования периода в частоты, которые и дают те самые ноты. Если я верно понимаю, то для проигрывания сэмпла с более высокой нотой (частотой) производится выборка данных с пропуском скольких-то байт. Для проигрывания на более низких нотах, наоборот, байты дублируются. Хотелось бы понимать, как эти периоды и частоты преобразовать в алгоритм выборки данных. Т.е. когда некая частота и надо брать данные из сэмпла с пропуском или без. В общем, как корректно перемещаться по сэмплу для получения нужных нот.
2. У мод файла есть 2 параметра - темп и кол-во ударов в минуту (BPM). При стандартных параметрах 6/125 получается ровно 50гц. хорошо. а как быть с параметрами вроде 3/125 и другими вариантами? а ещё скорость может меняться командами на каждом шаге. как корректно отслеживать эти скорости и "исполнять" трек на заданных скоростях?
Много читал, но ответов на эти вопросы не смог найти. Может не там искал?
Касательно проигрывания цифры на спринтере: для этого можно использовать CBL - Covox BLaster. Данный девайс умеет работать в одном из нескольких режимов, который можно настроить. Частоты от 8кгц до 96кгц, моно или стерео, 8бит или 16бит. У CBL есть своё FIFO и прерывания которые возникают по мере опустошения этого FIFO. его размер 128/256 байт, в зависимости от выбранного режима. Заполнять буфер можно через акселератор, т.е. очень быстро. Поскольку есть этот девайс, то проигрывать MOD файлы можно асинхронным методом, без привязок к таймингам машины.
Может кто-нибудть помочь в данном вопросе? Спасибо!