> Dem_v © (19.12.09 23:12)
Если коротко и быстро - найти библиотеки типа bass.dll например или AudioLab (ссылки на этом форуме уже давали, поищи тут или в интернете) - там есть и генераторы тона и средства записи в аудио файл (или примеры как это сделать).
А если хочется самому например в wav файл формата PCM (и возможно используя АПИ), то -
если правильно понял, нужен синус 10 кгЦ. Тогда формула будет
Sin((F*2.0 *PI *I)/T) - где F собственно частота, I - шаг итерации (счетчик цикла напрмер для for), T - частота дискретизации, PI =3,14...... По Котельникову для 10 кГц частоту дискретизации надо брать не менее 20 000 Гц (ближайшая "стандартная" для аудио 22 050). А что бы точек на период было поболее двух, то частоту дискретизации надо увеличить (например взять 44 100).
Далее, функция Sin у нас дает не целочисленный результат. В wav файл PCM формата надо писать целочисленные значения 8 бит или 16 бит на канал. Соответственно результат синуса надо умножить на коэффциент ( для 16 бит например на 32767 для получения полного размаха амплитуды ) и привести к Smallint знаковое (целое 16 бит) (Trunc или Round). Полученный массив значений надо привязать к заголовку типа
WAVHDR = packed record
riff: array[0..3] of Char;
len: DWord;
cWavFmt: array[0..7] of Char;
dwHdrLen: DWord;
wFormat: Word;
wNumChannels: Word;
dwSampleRate: DWord;
dwBytesPerSec: DWord;
wBlockAlign: Word;
wBitsPerSample: Word;
cData: array[0..3] of Char;
dwDataLen: DWord;
end;
Значения полей можешь почитать например в https://ccrma.stanford.edu/courses/422/projects/WaveFormat/ или
http://www.sonicspot.com/guide/wavefiles.htmlЕстественно поля заголовка должны быть заполнены. Потом записываешь в файл (например myaudio.wav) заголовок, а следом свои данные. Или если есть желание использовать АПИ - используй функции mmioOpen,mmioCreateChunk, mmioWrite и прочие mmIOXXX (не мой взгляд довольно муторно, по крайней мере в первый раз)