Record a monophonic 16-bit PCM sound into either memory space, a file or array.

(This task neglects to specify the sample rate, and whether to use signed samples.
The programs in this page might use signed 16-bit or unsigned 16-bit samples, at 8000 Hz, 44100 Hz, or any other sample rate.
Therefore, these programs might not record sound in the same format.)

// chuck this with other shreds to record to file
// example> chuck foo.ck bar.ck rec 
 
// arguments: rec:<filename>
 
// get name
me.arg(0) => string filename;
if( filename.length() == 0 ) "foo.wav" => filename;
 
// pull samples from the dac
dac => Gain g => WvOut w => blackhole;
// this is the output file name
filename => w.wavFilename;
<<<"writing to file:", "'" + w.filename() + "'">>>;
// any gain you want for the output
.5 => g.gain;
 
// temporary workaround to automatically close file on remove-shred
null @=> w;
 
// infinite time loop...
// ctrl-c will stop it, or modify to desired duration
while( true ) 1::second => now;