<!-- Converted to DocBook/SGML by Kevin Conder -->
<refentry id="pvsadsyn">
  <refmeta>
    <refentrytitle>pvsadsyn</refentrytitle>
  </refmeta>

  <refnamediv>
    <refname>pvsadsyn</refname>
    <refpurpose>
      Resynthesize using a fast oscillator-bank.
      <indexterm id="IndexPvsadsyn"><primary>pvsadsyn</primary></indexterm>
    </refpurpose>
  </refnamediv>
  
  <refsect1>
    <title>Description</title>
    <para>
      Resynthesize using a fast oscillator-bank.
    </para>
  </refsect1>

  <refsect1>
    <title>Syntax</title>
    <synopsis>ar <command>pvsadsyn</command> fsrc, inoscs, kfmod [, ibinoffset] [, ibinincr] [, iinit]</synopsis>
  </refsect1>

  <refsect1>
    <title>Initialization</title>
    <para>
      <emphasis>inoscs</emphasis> -- The number of analysis bins to synthesise. Cannot be larger than the size of fsrc (see <link linkend="pvsinfo"><citetitle>pvsinfo</citetitle></link>), e.g. as created by <link linkend="pvsanal"><citetitle>pvsanal</citetitle></link>.  Processing time is directly proportional to inoscs.
    </para>

    <para>
      <emphasis>ibinoffset</emphasis> (optional, default=0) -- The first (lowest) bin to resynthesise, counting from 0 (default = 0).
    </para>

    <para>
      <emphasis>ibinincr</emphasis> (optional) -- Starting from bin ibinoffset, resynthesize bins ibinincr apart.
    </para>

    <para>
      <emphasis>iinit</emphasis> (optional) --  Skip reinitialization. This is not currently implemented for any of these opcodes, and it remains to be seen if it is even practical.
    </para>
  </refsect1>

  <refsect1>
    <title>Performance</title>
    <para>
      <emphasis>kfmod</emphasis> -- Scale all frequencies by factor kfmod. 1.0 = no change, 2 =  up one octave.
    </para>

    <para>
      <emphasis>pvsadsyn</emphasis> is experimental, and implements the oscillator bank using a fast direct calculation method, rather than a lookup table. This takes advantage of the fact, empirically arrived at, that for the analysis rates generally used, (and presuming analysis using <link linkend="pvsanal"><citetitle>pvsanal</citetitle></link>, where frequencies in a bin change only slightly between frames) it is not necessary to interpolate frequencies between frames, only amplitudes. Accurate resynthesis is often contingent on the use of pvsanal with iwinsize = ifftsize*2.
    </para>

    <para> 
      This opcode is the most likely to change, or be much extended, according to feedback and advice from users. It is likely that a full interpolating table-based method will be added, via a further optional iarg. The parameter list to pvsadsyn mimics that for <link linkend="pvadd"><citetitle>pvadd</citetitle></link>, but excludes spectral extraction.
    </para>
  </refsect1>

  <refsect1>
    <title>Examples</title>
    <para>
      <informalexample>
        <programlisting>
; resynth the first 100 odd-numbered bins, with pitch scaling envelope.
kpch  linseg    1,p3/3,1,p3/3,1.5,p3/3,1
aout  pvsadsyn  fsrc, 100,kpch,1,2
        </programlisting>
      </informalexample>
    </para>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <link linkend="pvsynth"><citetitle>pvsynth</citetitle></link>
    </para>
  </refsect1>
 
  <refsect1>
    <title>Credits</title>
    <para>
      <simplelist>
        <member>Author: &namerichard;</member>
        <member>August 2001 </member>
      </simplelist>
    </para>

    <para>New in version 4.13</para>
  </refsect1>
</refentry>
