// // Programmer: Craig Stuart Sapp <craig@ccrma.stanford.edu> // Creation Date: Thu Jun 21 13:05:20 PDT 2001 // Last Modified: Wed Jun 27 16:42:48 PDT 2001 // Filename: ...sig/examples/sig/sigAudio/recordfile.cpp // Syntax: C++ // // Description: Simple example audio reading program. // #include "sigAudio.h" AudioInput audioinput; void recordFile(AudioInput& audioinput, char* filename, int framecount); //////////////////////////////////////////////////////////////////////// int main(void) { audioinput.open16LSB(1, 44100); cout << "Recording input from microphone..." << endl; recordFile(audioinput, "test.wav", 100); cout << "Done recording input audio." << endl; audioinput.close(); return 0; } //////////////////////////////////////////////////////////////////////// ////////////////////////////// // // recordFile -- record from audio input into a soundfile on disk. // Audio data is passed though a DC blocking filter before it is saved. // #define AUDIO_BUFFER_SIZE 4096 void recordFile(AudioInput& audioinput, char* filename, int framecount) { unsigned char audio_buffer[AUDIO_BUFFER_SIZE]; unsigned short* ab = (unsigned short*)&audio_buffer; SoundHeader outheader; outheader.setHighMono(); SoundFileOut outsound(filename, outheader); DCBlock blocker; Constant signalvalue; outsound.connect(blocker); blocker.connect(signalvalue); double sample = 0.0; int i, k; for (i=0; i<framecount; i++) { audioinput.read((unsigned char*)audio_buffer, AUDIO_BUFFER_SIZE); for (k=0; k<AUDIO_BUFFER_SIZE/2; k++) { sample = ((double)((short)ab[k]))/(long)0x8000; signalvalue.setValue(sample); Tick(outsound); } } } // md5sum: d89d3200ef5e9025de6eab93729b75b7 recordfile.cpp [20050403]