summaryrefslogtreecommitdiff
path: root/opcodes/vdelayxw.xml
blob: ce937d6ae39bf1c9b66209c0affd1dfb4dc17ecf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<refentry id="vdelayxw">
<indexterm id="IndexVdelayxw"><primary>vdelayxw</primary></indexterm>
  <refentryinfo><title>Signal Modifiers:Delay</title></refentryinfo>
  <refmeta>
    <refentrytitle>vdelayxw</refentrytitle>
  </refmeta>



  <refnamediv>
    <refname>vdelayxw</refname>
    <refpurpose>
      Variable delay opcodes with high quality interpolation.
          </refpurpose>
  </refnamediv>
  
  <refsect1>
    <title>Description</title>
    <para>
       Variable delay opcodes with high quality interpolation.
    </para>
  </refsect1>

  <refsect1>
    <title>Syntax</title>
    <synopsis>aout <command>vdelayxw</command> ain, adl, imd, iws [, ist]</synopsis>
  </refsect1>

  <refsect1>
    <title>Initialization</title>
    <para>
      <emphasis>aout</emphasis> -- output audio signal
    </para>

    <para>
      <emphasis>ain</emphasis> -- input audio signal
    </para>

    <para>
      <emphasis>adl</emphasis> -- delay time in seconds
    </para>

    <para>
      <emphasis>imd</emphasis> -- max. delay time (seconds)
    </para>

    <para>
      <emphasis>iws</emphasis> -- interpolation window size (see below)
    </para>

    <para>
      <emphasis>ist</emphasis> -- skip initialization if not zero
    </para>
  </refsect1>

  <refsect1>
    <title>Performance</title>
    <para>
      These opcodes use high quality (and slow) interpolation, that is much more accurate than the currently available linear and cubic interpolation. The <emphasis>iws</emphasis> parameter sets the number of input samples used for calculating one output sample (allowed values are any integer multiply of 4 in the range 4 - 1024); higher values mean better quality and slower speed.
    </para>
 
    <para>
      The vdelayxw opcodes change the position of the write tap in the delay line (unlike all other delay ugens that move the read tap), and are most useful for implementing Doppler effects where the position of the listener is fixed, and the sound source is moving.
    </para>

    <note>
      <title>Notes</title>
      <para>
        <itemizedlist>
          <listitem><para>Delay time is measured in seconds (unlike in vdelay and vdelay3), and must be a-rate.</para></listitem>
          <listitem><para>The minimum allowed delay is iws/2 samples.</para></listitem>
          <listitem><para>Using the same variables as input and output is allowed in these opcodes.</para></listitem>
          <listitem><para>In vdelayxw*, changing the delay time has some effects on output volume: <literallayout>a = 1 / (1 + dt)</literallayout> where a is the output gain, and dt is the change of delay time per seconds.</para></listitem>
          <listitem><para>These opcodes are best used in the double-precision version of Csound.</para></listitem>
        </itemizedlist>
      </para>
    </note>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <link linkend="vdelayx"><citetitle>vdelayx</citetitle></link>,
      <link linkend="vdelayxq"><citetitle>vdelayxq</citetitle></link>,
      <link linkend="vdelayxs"><citetitle>vdelayxs</citetitle></link>,
      <link linkend="vdelayxwq"><citetitle>vdelayxwq</citetitle></link>,
      <link linkend="vdelayxws"><citetitle>vdelayxws</citetitle></link>
    </para>
  </refsect1>
</refentry>