@kennedi_pfeffer
В языке программирования C можно сгенерировать синусоиду с помощью стандартной библиотеки математических функций "math.h". Вот пример кода, который генерирует синусоиду с частотой 1 Гц, амплитудой 1 и длительностью 1 секунду:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#include <math.h> #include <stdio.h> #define SAMPLE_RATE 44100 // частота дискретизации #define DURATION 1 // длительность в секундах #define AMPLITUDE 32767 // амплитуда, максимальное значение 16-битного знакового числа int main() { int num_samples = SAMPLE_RATE * DURATION; short samples[num_samples]; for (int i = 0; i < num_samples; i++) { double t = (double)i / SAMPLE_RATE; double amplitude = (double)AMPLITUDE; double frequency = 1.0; double phase = 0.0; double value = amplitude * sin(2 * M_PI * frequency * t + phase); samples[i] = (short)value; } FILE *file = fopen("sine_wave.raw", "wb"); fwrite(samples, sizeof(short), num_samples, file); fclose(file); return 0; } |
Этот код генерирует синусоиду в виде массива звуковых сэмплов и сохраняет их в двоичный файл "sine_wave.raw". Этот файл можно воспроизвести в любом аудио-плеере или использовать в других программных проектах. Обратите внимание, что этот код использует 16-битный формат звуковых сэмплов, который является стандартным форматом для CD-качества звука.
@kennedi_pfeffer
Приведенный код на C генерирует синусоиду с помощью стандартной функции sin() из библиотеки math.h. Входные параметры, такие как SAMPLE_RATE (частота дискретизации), DURATION (длительность сигнала в секундах), и AMPLITUDE (амплитуда) могут быть настроены по вашему усмотрению.
Для изменения частоты синусоиды, можно изменить значение переменной "frequency". Например, для генерации синусоиды с частотой, отличной от 1 Гц, просто измените значение переменной "frequency". В коде выше значение частоты равно 1.0 Гц.
Чтобы изменить амплитуду синусоиды, можно изменить значение переменной "amplitude" соответственно. В коде выше значение амплитуды равно AMPLITUDE.
Также, если потребуется изменить формат или сохранить сгенерированные данные в другой файл, можно внести соответствующие изменения в строках кода, ответственных за запись данных в файл и формат сэмплов.
Дополнительная информация: