summaryrefslogtreecommitdiff
path: root/opcodes/lorismorph.xml
blob: 58e6b0366b299f8a8e57c9e27fd027b73406bba5 (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
<refentry id="lorismorph">
  <indexterm id="IndexLorisMorph"><primary>lorismorph</primary></indexterm>
  <refentryinfo><title>Spectral Processing:Loris</title></refentryinfo>
  <refmeta>
    <refentrytitle>lorismorph</refentrytitle>
  </refmeta>


  <refnamediv>
    <refname>lorismorph</refname>
    <refpurpose>Morphs two stored sets of bandwidth-enhanced partials
    and stores a new set of partials representing the morphed
    sound. The morph is performed by linearly interpolating the
    parameter envelopes (frequency, amplitude, and bandwidth, or
    noisiness) of the bandwidth-enhanced partials according to
    control-rate frequency, amplitude, and bandwidth morphing
    functions.    </refpurpose>
  </refnamediv>

  <refsect1>
    <title>Syntax</title>
    <synopsis><command>lorismorph</command> isrcidx, itgtidx, istoreidx, kfreqmorphenv, kampmorphenv, kbwmorphenv</synopsis>
  </refsect1>

  <refsect1>
    <title>Description</title> 
    <para><emphasis>lorismorph</emphasis> morphs two stored sets of bandwidth-enhanced
    partials and stores a new set of partials representing the morphed
    sound. The morph is performed by linearly interpolating the
    parameter envelopes (frequency, amplitude, and bandwidth, or
    noisiness) of the bandwidth-enhanced partials according to
    control-rate frequency, amplitude, and bandwidth morphing
    functions.
    </para>  
    </refsect1>

  <refsect1>
    <title>Initialization</title>

    <para><emphasis>istoreidx, ireadidx, isrcidx, itgtidx</emphasis> are
    labels that identify a stored set of bandwidth-enhanced
    partials. <emphasis>lorisread</emphasis> imports partials from a SDIF file and stores them
    with the integer label istoreidx. <emphasis>lorismorph</emphasis> morphs sets of partials
    labeled <emphasis>isrcidx</emphasis> and <emphasis>itgtidx</emphasis>, and stores the resulting partials with
    the integer label <emphasis>istoreidx</emphasis>. <emphasis>lorisplay</emphasis> renders the partials stored
    with the label <emphasis>ireadidx</emphasis>. The labels are used only at initialization
    time, and may be reused without any cost or benefit in efficiency, and
    without introducing any interaction between instruments or
    instances.</para>

  </refsect1>

  <refsect1>
    <title>Performance</title>
    <para><emphasis>lorismorph</emphasis> generates a set of bandwidth-enhanced partials by
    morphing two stored sets of partials, the source and target partials,
    which may have been imported using <emphasis>lorisread</emphasis>, or generated by another
    unit generator, including another instance of <emphasis>lorismorph</emphasis>. The morph is
    performed by interpolating the parameters of corresponding (labeled)
    partials in the two source sounds. The sound morph is
    described by three control-rate morphing envelopes. <emphasis>kfreqmorphenv</emphasis>
    describes the interpolation of partial frequency values in the two
    source sounds. When <emphasis>kfreqmorphenv</emphasis> is 0, partial frequencies are
    obtained from the partials stored at <emphasis>isrcidx</emphasis>. When <emphasis>kfreqmorphenv</emphasis> is 1,
    partial frequencies are obtained from the partials at <emphasis>itgtidx</emphasis>. When
    <emphasis>kfreqmorphenv</emphasis> is between 0 and 1, the partial frequencies are
    interpolated between corresponding source and target
    partials. Interpolation of partial amplitudes and bandwidth
    (noisiness) coefficients are similarly described by <emphasis>kampmorphenv</emphasis> and
    <emphasis>kbwmorphenv</emphasis>.</para>
  </refsect1>

  <refsect1>
    <title>Credits</title>
    <para>This implementation of the Loris unit generators was written by Kelly
    Fitz (<ulink
    url="mailto:loris@cerlsoundgroup.org">loris@cerlsoundgroup.org</ulink>). It is patterned after a prototype implementation of the
    <emphasis>lorisplay</emphasis> unit generator written by Corbin Champion, and based on the
    method of Bandwidth-Enhanced Additive Synthesis and on the sound
    morphing algorithms implemented in the Loris library for sound
    modeling and manipulation. The opcodes were further adapted as a
    plugin for Csound 5 by Michael gogins.</para>
  </refsect1>

</refentry>