Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > f179e338a88e729e528904646d3022b2 > files > 38

python-pyaudio-0.2.7-3.mga4.x86_64.rpm


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Example: Blocking Mode Audio I/O &mdash; PyAudio 0.2.7 documentation</title>
    
    <link rel="stylesheet" href="_static/nature.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '',
        VERSION:     '0.2.7',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="top" title="PyAudio 0.2.7 documentation" href="index.html" /> 
  </head>
  <body>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li><a href="index.html">PyAudio 0.2.7 documentation</a> &raquo;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
          <div class="body">
            
  <div class="section" id="example-blocking-mode-audio-i-o">
<h1>Example: Blocking Mode Audio I/O<a class="headerlink" href="#example-blocking-mode-audio-i-o" title="Permalink to this headline">¶</a></h1>
<div class="highlight-python"><div class="highlight"><pre><span class="sd">&quot;&quot;&quot;PyAudio Example: Play a wave file.&quot;&quot;&quot;</span>

<span class="kn">import</span> <span class="nn">pyaudio</span>
<span class="kn">import</span> <span class="nn">wave</span>
<span class="kn">import</span> <span class="nn">sys</span>

<span class="n">CHUNK</span> <span class="o">=</span> <span class="mi">1024</span>

<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span>
    <span class="k">print</span><span class="p">(</span><span class="s">&quot;Plays a wave file.</span><span class="se">\n\n</span><span class="s">Usage: </span><span class="si">%s</span><span class="s"> filename.wav&quot;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>

<span class="n">wf</span> <span class="o">=</span> <span class="n">wave</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s">&#39;rb&#39;</span><span class="p">)</span>

<span class="c"># instantiate PyAudio (1)</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">pyaudio</span><span class="o">.</span><span class="n">PyAudio</span><span class="p">()</span>

<span class="c"># open stream (2)</span>
<span class="n">stream</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">format</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">get_format_from_width</span><span class="p">(</span><span class="n">wf</span><span class="o">.</span><span class="n">getsampwidth</span><span class="p">()),</span>
                <span class="n">channels</span><span class="o">=</span><span class="n">wf</span><span class="o">.</span><span class="n">getnchannels</span><span class="p">(),</span>
                <span class="n">rate</span><span class="o">=</span><span class="n">wf</span><span class="o">.</span><span class="n">getframerate</span><span class="p">(),</span>
                <span class="n">output</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>

<span class="c"># read data</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">wf</span><span class="o">.</span><span class="n">readframes</span><span class="p">(</span><span class="n">CHUNK</span><span class="p">)</span>

<span class="c"># play stream (3)</span>
<span class="k">while</span> <span class="n">data</span> <span class="o">!=</span> <span class="s">&#39;&#39;</span><span class="p">:</span>
    <span class="n">stream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">wf</span><span class="o">.</span><span class="n">readframes</span><span class="p">(</span><span class="n">CHUNK</span><span class="p">)</span>

<span class="c"># stop stream (4)</span>
<span class="n">stream</span><span class="o">.</span><span class="n">stop_stream</span><span class="p">()</span>
<span class="n">stream</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>

<span class="c"># close PyAudio (5)</span>
<span class="n">p</span><span class="o">.</span><span class="n">terminate</span><span class="p">()</span>
</pre></div>
</div>
<p>To use PyAudio, first instantiate PyAudio using
<a class="reference internal" href="index.html#pyaudio.PyAudio" title="pyaudio.PyAudio"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.PyAudio()</span></tt></a> (1), which sets up the portaudio system.</p>
<p>To record or play audio, open a stream on the desired device with the
desired audio parameters using <a class="reference internal" href="index.html#pyaudio.PyAudio.open" title="pyaudio.PyAudio.open"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.PyAudio.open()</span></tt></a>
(2). This sets up a <a class="reference internal" href="index.html#pyaudio.Stream" title="pyaudio.Stream"><tt class="xref py py-class docutils literal"><span class="pre">pyaudio.Stream</span></tt></a> to play or record
audio.</p>
<p>Play audio by writing audio data to the stream using
<a class="reference internal" href="index.html#pyaudio.Stream.write" title="pyaudio.Stream.write"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.Stream.write()</span></tt></a>, or read audio data from the stream
using <a class="reference internal" href="index.html#pyaudio.Stream.read" title="pyaudio.Stream.read"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.Stream.read()</span></tt></a>. (3)</p>
<p>Note that in &#8220;blocking mode&#8221;, each <a class="reference internal" href="index.html#pyaudio.Stream.write" title="pyaudio.Stream.write"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.Stream.write()</span></tt></a> or
<a class="reference internal" href="index.html#pyaudio.Stream.read" title="pyaudio.Stream.read"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.Stream.read()</span></tt></a> blocks until all the given/requested
frames have been played/recorded.  Alternatively, to generate audio
data on the fly or immediately process recorded audio data, use the
&#8220;callback mode&#8221; outlined below.</p>
<p>Use <a class="reference internal" href="index.html#pyaudio.Stream.stop_stream" title="pyaudio.Stream.stop_stream"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.Stream.stop_stream()</span></tt></a> to pause playing/recording,
and <a class="reference internal" href="index.html#pyaudio.Stream.close" title="pyaudio.Stream.close"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.Stream.close()</span></tt></a> to terminate the stream. (4)</p>
<p>Finally, terminate the portaudio session using
<a class="reference internal" href="index.html#pyaudio.PyAudio.terminate" title="pyaudio.PyAudio.terminate"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.PyAudio.terminate()</span></tt></a> (5)</p>
</div>
<div class="section" id="example-callback-mode-audio-i-o">
<h1>Example: Callback Mode Audio I/O<a class="headerlink" href="#example-callback-mode-audio-i-o" title="Permalink to this headline">¶</a></h1>
<div class="highlight-python"><div class="highlight"><pre><span class="sd">&quot;&quot;&quot;PyAudio Example: Play a wave file (callback version).&quot;&quot;&quot;</span>

<span class="kn">import</span> <span class="nn">pyaudio</span>
<span class="kn">import</span> <span class="nn">wave</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="kn">import</span> <span class="nn">sys</span>

<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">2</span><span class="p">:</span>
    <span class="k">print</span><span class="p">(</span><span class="s">&quot;Plays a wave file.</span><span class="se">\n\n</span><span class="s">Usage: </span><span class="si">%s</span><span class="s"> filename.wav&quot;</span> <span class="o">%</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>

<span class="n">wf</span> <span class="o">=</span> <span class="n">wave</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="s">&#39;rb&#39;</span><span class="p">)</span>

<span class="c"># instantiate PyAudio (1)</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">pyaudio</span><span class="o">.</span><span class="n">PyAudio</span><span class="p">()</span>

<span class="c"># define callback (2)</span>
<span class="k">def</span> <span class="nf">callback</span><span class="p">(</span><span class="n">in_data</span><span class="p">,</span> <span class="n">frame_count</span><span class="p">,</span> <span class="n">time_info</span><span class="p">,</span> <span class="n">status</span><span class="p">):</span>
    <span class="n">data</span> <span class="o">=</span> <span class="n">wf</span><span class="o">.</span><span class="n">readframes</span><span class="p">(</span><span class="n">frame_count</span><span class="p">)</span>
    <span class="k">return</span> <span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">pyaudio</span><span class="o">.</span><span class="n">paContinue</span><span class="p">)</span>

<span class="c"># open stream using callback (3)</span>
<span class="n">stream</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">format</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">get_format_from_width</span><span class="p">(</span><span class="n">wf</span><span class="o">.</span><span class="n">getsampwidth</span><span class="p">()),</span>
                <span class="n">channels</span><span class="o">=</span><span class="n">wf</span><span class="o">.</span><span class="n">getnchannels</span><span class="p">(),</span>
                <span class="n">rate</span><span class="o">=</span><span class="n">wf</span><span class="o">.</span><span class="n">getframerate</span><span class="p">(),</span>
                <span class="n">output</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
                <span class="n">stream_callback</span><span class="o">=</span><span class="n">callback</span><span class="p">)</span>

<span class="c"># start the stream (4)</span>
<span class="n">stream</span><span class="o">.</span><span class="n">start_stream</span><span class="p">()</span>

<span class="c"># wait for stream to finish (5)</span>
<span class="k">while</span> <span class="n">stream</span><span class="o">.</span><span class="n">is_active</span><span class="p">():</span>
    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.1</span><span class="p">)</span>

<span class="c"># stop stream (6)</span>
<span class="n">stream</span><span class="o">.</span><span class="n">stop_stream</span><span class="p">()</span>
<span class="n">stream</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="n">wf</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>

<span class="c"># close PyAudio (7)</span>
<span class="n">p</span><span class="o">.</span><span class="n">terminate</span><span class="p">()</span>
</pre></div>
</div>
<p>In callback mode, PyAudio will call a specified callback function (2)
whenever it needs new audio data (to play) and/or when there is new
(recorded) audio data available.  Note that PyAudio calls the callback
function in a separate thread.  The function has the following
signature <tt class="docutils literal"><span class="pre">callback(&lt;input_data&gt;,</span> <span class="pre">&lt;frame_count&gt;,</span> <span class="pre">&lt;time_info&gt;,</span>
<span class="pre">&lt;status_flag&gt;)</span></tt> and must return a tuple containing <tt class="docutils literal"><span class="pre">frame_count</span></tt>
frames of audio data and a flag signifying whether there are more
frames to play/record.</p>
<p>Start processing the audio stream using
<a class="reference internal" href="index.html#pyaudio.Stream.start_stream" title="pyaudio.Stream.start_stream"><tt class="xref py py-func docutils literal"><span class="pre">pyaudio.Stream.start_stream()</span></tt></a> (4), which will call the
callback function repeatedly until that function returns
<a class="reference internal" href="index.html#pyaudio.paComplete" title="pyaudio.paComplete"><tt class="xref py py-data docutils literal"><span class="pre">pyaudio.paComplete</span></tt></a>.</p>
<p>To keep the stream active, the main thread must not terminate, e.g.,
by sleeping (5).</p>
</div>


          </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li><a href="index.html">PyAudio 0.2.7 documentation</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2012, Hubert Pham.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
    </div>
  </body>
</html>