<?xml version="1.0"?>
<!DOCTYPE ladspa SYSTEM "ladspa-swh.dtd">
<?xml-stylesheet href="ladspa.css" type="text/css"?>

<ladspa>
  <global>
    <meta name="maker" value="Steve Harris &lt;steve@plugin.org.uk&gt;"/>
    <meta name="copyright" value="GPL"/>
    <meta name="properties" value="HARD_RT_CAPABLE"/>
  </global>

  <plugin label="const" id="1909" class="UtilityPlugin">
    <name>Constant Signal Generator</name>
    <p>This plugin add an output DC offset at the given amplitude to the input
signal. It has no real use other than for debugging and in modular synths.</p>

    <callback event="activate"><![CDATA[
      last_amp = 0.0f;
    ]]></callback>

    <callback event="run"><![CDATA[
      unsigned long pos;
      const float delta = (amplitude - last_amp) / (sample_count - 1);
      float amp = last_amp;

      for (pos = 0; pos < sample_count; pos++) {
	amp += delta;
        buffer_write(output[pos], input[pos] + amp);
      }

      plugin_data->last_amp = amp;
    ]]></callback>

    <port label="amplitude" dir="input" type="control" hint="default_0">
      <name>Signal amplitude</name>
      <p>Controls the amplitude of the output signal.</p>
      <range min="-1" max="1.1"/>
    </port>

    <port label="input" dir="input" type="audio">
      <name>Input</name>
    </port>

    <port label="output" dir="output" type="audio">
      <name>Output</name>
    </port>

    <instance-data label="last_amp" type="float" />
  </plugin>
</ladspa>
