Хорошо, я нашел ответ.
Первый раз, когда вы хотите установить два диапазона. Прежде всего, это оригинальный диапазон в линейной шкале. Второе - диапазон в целевом логарифмическом масштабе c. На мой вопрос:
[начало ==================== конец]
[firstSample ======== ====== sampleRate * Duration]
Затем вы хотите рассчитать разговор по формулам. Я пишу это на Desmos: https://www.desmos.com/calculator/utb5nu1pvq
И мой код:
SinSweep()
{
start=20;
end=200;
sampleRate=1000;
range=end-start;
sampleCount=sampleRate*duration;
logMax=log10f(end/start);
currentSample=0;
f=start;
While(1){
switch (type) {
case Linear:
f = (((currentSample-1)/sampleCount)*range)+start;
break;
case Logarithmic:
f = start*(powf(10, logMax*(currentSample/sampleCount)));
break;
}
currentSample++;
if(f >= end){
f = start;
currentSample = 0;
}
}
}