summaryrefslogtreecommitdiff
path: root/doc/html/recording.html
diff options
context:
space:
mode:
authorGary Scavone <gary@music.mcgill.ca>2013-10-11 01:46:50 +0200
committerStephen Sinclair <sinclair@music.mcgill.ca>2013-10-11 01:46:50 +0200
commit0876bbd0bad22677b23342c828bc36c3babbed4e (patch)
treedbd91a7beefce7da18aa9319df8328945ad66c77 /doc/html/recording.html
parent332b0956ae798ea52073fe5b889696a33e0f11f2 (diff)
Release 4.0.0 tarball4.0.0
Diffstat (limited to 'doc/html/recording.html')
-rw-r--r--doc/html/recording.html76
1 files changed, 76 insertions, 0 deletions
diff --git a/doc/html/recording.html b/doc/html/recording.html
new file mode 100644
index 0000000..47c0178
--- /dev/null
+++ b/doc/html/recording.html
@@ -0,0 +1,76 @@
+<HTML>
+<HEAD>
+<TITLE>The RtAudio Home Page</TITLE>
+<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
+<LINK REL="SHORTCUT ICON" HREF="http://www.music.mcgill.ca/~gary/favicon.ico">
+</HEAD>
+<BODY BGCOLOR="#FFFFFF">
+<CENTER>
+<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="annotated.html">Class/Enum List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </CENTER>
+<HR>
+<!-- Generated by Doxygen 1.4.4 -->
+<h1><a class="anchor" name="recording">Recording</a></h1>Using <a class="el" href="classRtAudio.html">RtAudio</a> for audio input is almost identical to the way it is used for playback. Here's the blocking playback example rewritten for recording:<p>
+<div class="fragment"><pre class="fragment"><span class="preprocessor">#include "<a class="code" href="RtAudio_8h.html">RtAudio.h</a>"</span>
+<span class="preprocessor">#include &lt;iostream&gt;</span>
+
+<span class="keywordtype">int</span> record( <span class="keywordtype">void</span> *outputBuffer, <span class="keywordtype">void</span> *inputBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBufferFrames,
+ <span class="keywordtype">double</span> streamTime, <a class="code" href="RtAudio_8h.html#a12">RtAudioStreamStatus</a> status, <span class="keywordtype">void</span> *userData )
+{
+ <span class="keywordflow">if</span> ( status )
+ std::cout &lt;&lt; <span class="stringliteral">"Stream overflow detected!"</span> &lt;&lt; std::endl;
+
+ <span class="comment">// Do something with the data in the "inputBuffer" buffer.</span>
+
+ <span class="keywordflow">return</span> 0;
+}
+
+<span class="keywordtype">int</span> main()
+{
+ <a class="code" href="classRtAudio.html">RtAudio</a> adc;
+ <span class="keywordflow">if</span> ( adc.<a class="code" href="classRtAudio.html#a3">getDeviceCount</a>() &lt; 1 ) {
+ std::cout &lt;&lt; <span class="stringliteral">"\nNo audio devices found!\n"</span>;
+ exit( 0 );
+ }
+
+ <a class="code" href="structRtAudio_1_1StreamParameters.html">RtAudio::StreamParameters</a> parameters;
+ parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o0">deviceId</a> = adc.<a class="code" href="classRtAudio.html#a6">getDefaultInputDevice</a>();
+ parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o1">nChannels</a> = 2;
+ parameters.<a class="code" href="structRtAudio_1_1StreamParameters.html#o2">firstChannel</a> = 0;
+ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> sampleRate = 44100;
+ <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferFrames = 256; <span class="comment">// 256 sample frames</span>
+
+ <span class="keywordflow">try</span> {
+ adc.<a class="code" href="classRtAudio.html#a7">openStream</a>( NULL, &amp;parameters, RTAUDIO_SINT16,
+ sampleRate, &amp;bufferFrames, &amp;record );
+ adc.<a class="code" href="classRtAudio.html#a9">startStream</a>();
+ }
+ <span class="keywordflow">catch</span> ( <a class="code" href="classRtError.html">RtError</a>&amp; e ) {
+ e.<a class="code" href="classRtError.html#a2">printMessage</a>();
+ exit( 0 );
+ }
+
+ <span class="keywordtype">char</span> input;
+ std::cout &lt;&lt; <span class="stringliteral">"\nRecording ... press &lt;enter&gt; to quit.\n"</span>;
+ std::cin.get( input );
+
+ <span class="keywordflow">try</span> {
+ <span class="comment">// Stop the stream</span>
+ adc.<a class="code" href="classRtAudio.html#a10">stopStream</a>();
+ }
+ <span class="keywordflow">catch</span> (<a class="code" href="classRtError.html">RtError</a>&amp; e) {
+ e.<a class="code" href="classRtError.html#a2">printMessage</a>();
+ }
+
+ <span class="keywordflow">if</span> ( adc.<a class="code" href="classRtAudio.html#a12">isStreamOpen</a>() ) adc.<a class="code" href="classRtAudio.html#a8">closeStream</a>();
+
+ <span class="keywordflow">return</span> 0;
+}
+</pre></div><p>
+In this example, we pass the address of the stream parameter structure as the second argument of the <a class="el" href="classRtAudio.html#a7">RtAudio::openStream()</a> function and pass a NULL value for the output stream parameters. In this example, the <em>record()</em> callback function performs no specific operations. <HR>
+
+<table><tr><td><img src="../images/mcgill.gif" width=165></td>
+ <td>&copy;2001-2007 Gary P. Scavone, McGill University. All Rights Reserved.<br>Maintained by <a href="http://www.music.mcgill.ca/~gary/">Gary P. Scavone</a>.</td></tr>
+</table>
+
+</BODY>
+</HTML>