// basic file operations #include #include using namespace std; int main(int argc, char* argv[]) { if (argc < 5) { cerr << "Usage " << argv[0] << " sample_format sample_rate channels duration" << endl; exit(1); } int len(0); string format(argv[1]); if (format == "S16_LE") len = 2; else if (format == "S24_3LE") len = 3; else if (format == "S32_LE") len = 4; else { cerr << "Unsupported format " << format << endl; exit(1); } int rate(atoi(argv[2])); if (rate != 44100 && rate != 48000 && rate != 88200 && rate != 96000 && rate != 192000 && rate != 384000) { cerr << "Unsupported rate " << rate << endl; exit(1); } int channels = atoi(argv[3]); if (channels % 2 != 0 || channels <= 0 || channels > 64) { cerr << "Unsupported channels " << channels << endl; exit(1); } int duration = atoi(argv[4]); if (duration > 10 || duration < 1) { cerr << "Unsupported duration " << duration << " minutes" << endl; exit(1); } int secs(duration * 60); unsigned char byte(0); fstream myfile; myfile.open("test.raw", ios::out|ios::binary); while(secs--) { int samples(rate); while (samples--) { int ch(channels); while (ch--) { myfile.put(byte); if (len > 1) { myfile.put(byte+1); if (len > 2) { myfile.put(byte+2); if (len > 3) myfile.put(byte+3); } } } byte+=len; } } myfile.close(); return 0; }