~ubuntu-branches/ubuntu/breezy/muse/breezy

« back to all changes in this revision

Viewing changes to synti/stklib/TwoPole.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Kobras
  • Date: 2004-02-07 15:18:22 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040207151822-es27xxkzbcxkebjm
Tags: 0.6.3-1
* New upstream version.
* Added patches:
  + [10_alsa_init_fix] New, from upstream CVS.
    Initialize direction variable when setting Alsa parameters.
  + [10_canvas_translation_fix] New, from upstream CVS.
    Do not translate tooltips twice in canvas popup.
  + [10_checkbox_fix] New, from upstream CVS.
    Use proper set/test methods on metronome checkboxes.
  + [10_html_doc_cleanup] New.
    Fix links and HTML errors in documentation.
  + [20_allow_system_timer] New.
    The new upstream version fails by default if the real-time clock
    could not be accessed (usually the case when not running suid-root).
    This patch reverts the old behaviour of falling back to the more
    inaccurate system timer.
* Updated patches:
  + [11_PIC_fixes_fixup] Rediffed.
* Removed patches:
  + [20_no_atomic_asm] Merged upstream.
* debian/compat: Splice out debhelper compatibility level from rules file.
* debian/control: Build-depend on latest jack release by default.
  Closes: #228788
* debian/control: Bump standards version.
* debian/control: Use auto-generated debconf dependency via misc:Depends.
* debian/control: Minor tweaks to the long description.
* debian/control: Tighten fluidsynth build dependency to sane version.
* debian/muse.doc-base: New. Register HTML documentation with doc-base.
* debian/templates: Tiny rewording, and typo fix.
* debian/templates, debian/po/*: Switch to po-debconf for translations.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*******************************************/
2
 
/*  Two Pole Filter Class,                 */
3
 
/*  by Perry R. Cook, 1995-96              */ 
4
 
/*  See books on filters to understand     */
5
 
/*  more about how this works.  Nothing    */
6
 
/*  out of the ordinary in this version.   */
7
 
/*******************************************/
8
 
 
9
 
#include "TwoPole.h"
10
 
 
11
 
TwoPole :: TwoPole() : Filter()
12
 
{
13
 
  outputs = (MY_FLOAT *) malloc(2 * sizeof(MY_FLOAT));
14
 
  poleCoeffs[0] = (MY_FLOAT) 0.0;
15
 
  poleCoeffs[1] = (MY_FLOAT) 0.0;
16
 
  gain = (MY_FLOAT) 1.0;
17
 
  this->clear();
18
 
}
19
 
 
20
 
TwoPole :: ~TwoPole()
21
 
{
22
 
  free(outputs);
23
 
}
24
 
 
25
 
void TwoPole :: clear()
26
 
{
27
 
  outputs[0] = (MY_FLOAT) 0.0;
28
 
  outputs[1] = (MY_FLOAT) 0.0;
29
 
  lastOutput = (MY_FLOAT) 0.0;
30
 
}
31
 
 
32
 
void TwoPole :: setPoleCoeffs(MY_FLOAT *coeffs)
33
 
{
34
 
  poleCoeffs[0] = coeffs[0];
35
 
  poleCoeffs[1] = coeffs[1];
36
 
}
37
 
 
38
 
void TwoPole :: setFreqAndReson(MY_FLOAT freq, MY_FLOAT reson)
39
 
{
40
 
  poleCoeffs[1] = - (reson * reson);
41
 
  poleCoeffs[0] = (MY_FLOAT) 2.0 * reson * cos(TWO_PI * (double) freq / SRATE);
42
 
}
43
 
 
44
 
void TwoPole :: setGain(MY_FLOAT aValue)
45
 
{
46
 
  gain = aValue;
47
 
}
48
 
 
49
 
MY_FLOAT TwoPole :: tick(MY_FLOAT sample) // Perform Filter Operation
50
 
{                                         //  TwoPole is a two pole filter (duh!)
51
 
  MY_FLOAT temp;                          //  Look it up in your favorite DSP text
52
 
  temp = sample * gain;
53
 
  temp += poleCoeffs[0] * outputs[0];
54
 
  temp += poleCoeffs[1] * outputs[1];
55
 
  outputs[1] = outputs[0];
56
 
  outputs[0] = temp;
57
 
  lastOutput = outputs[0];
58
 
  return lastOutput;
59
 
}
60