audio/cpp/ WriteASineWave


#include <cmath>
#include <cstdint>
#include <vector>
#include <fstream>
#include <cstdio>
using std::sin;
constexpr double pi = 3.141592653589793238462643383279502884;

int main() {
  int sr = 48000;
  float len = 2.0f;
  float freq = 440.0f;
  double phase_per_sample = 2*pi*freq/sr;
  int nsamps = (int)(len*sr);
  std::vector<float> data(nsamps, 0.0f);
  std::printf("size: %ld\n",data.size());
  for(int i=0; i<nsamps; i++ ) {
    data[i] = sin(i*phase_per_sample);
  }

  std::fstream output_file;
  output_file.open("output.pcm", std::ios::out | std::ios::binary );
  output_file.write(reinterpret_cast<const char*>(data.data()),data.size()*sizeof(float));
  output_file.close();
}