Вам нужно знать частоту дискретизации аудио потока, который вы производите.Если ваша частота дискретизации равна fs , и вы пытаетесь воспроизводить тон с частотой f , то вам необходимо производить полный цикл (период) каждые fs. / f образцов.Кроме того, во время каждого аудиосэмпла вы должны продвигаться на f / fs одного цикла.Таким образом, если ваш волновой стол содержит n записей, представляющих полный цикл, то вам нужно продвинуться на n * f / fs записей нааудиосэмпл.
Например, для фс = 44,1 кГц, f = 1 кГц, n = 1024, ваш прирост должен быть 1024 *1000/44100 = 23,22 записи на выборку.
Обратите внимание, что обычно вы получаете нецелое значение приращения.Чтобы получить правильную высоту звука, вы не должны округлять это значение при увеличении.Вместо этого вы должны округлять только при преобразовании значения вашего аккумулятора в значение индекса таблицы.(Более сложный подход - это своего рода интерполяция между записями.)