На вскидку, не трассируя, думаю похрустывает не из за басов.
При программном масштабировании сэмпла используется раскрытый цикл на 256 итераций. к адресу прибавляется целая и дробная часть от коэффициента масштаба. И только по окончании 256 итреаций делается проверка на конец сэмпла и или на пересечение зацикливания. Что бы компенсировать 256 пропущенных проверок я в конце цикла делаю 512 байт копии начала цикла. Если цикл менее 512 байт то делаю несколько копий в этих 512 байтах. (если длинна цикла 64 байта то будет 8 копий) и так в каждом сэмпле. Это помогает от щелчков и треска, если целая часть масштаба менее 2. Если же масштаб больше 2, то проверка может улететь далеко за 512 байт и в буфер схватить случайные данные, которые дальше 512 байт лежат.
Ноты звучат высокие 4 - 5 октава и скорее всего масштаб там больше 2-х. Выхода два. увеличить память под копию до 1 кб или 2 кб. Или делать проверку чаще, не раз в 256 а раз в 128 итераций.
Я надеюсь на появление ДМА в НГС и тогда вопрос программного масштабирования и проверки конца цикла или сэмпла уйдет сам собой.





Ответить с цитированием