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

« back to all changes in this revision

Viewing changes to synti/stklib/FM4Alg6.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
 
/*  Algorithm 6 (TX81Z) Subclass of       */ 
3
 
/*  4 Operator FM Synth                   */
4
 
/*  by Perry R. Cook, 1995-96             */ 
5
 
/*  This connection topology is three     */
6
 
/*  Carriers and a common Modulator       */
7
 
/*                                        */
8
 
/*                /->1 -\                 */
9
 
/*             4-|-->2 - +-> Out          */
10
 
/*                \->3 -/                 */
11
 
/*                                        */
12
 
/*  Controls: control1 = vowel            */
13
 
/*            control2 = spectral tilt    */
14
 
/*            control3 = LFO speed        */
15
 
/*            modWheel = LFO amount       */
16
 
/*                                        */
17
 
/******************************************/
18
 
 
19
 
#include "FM4Alg6.h"
20
 
 
21
 
FM4Alg6 :: FM4Alg6() : FM4Op()
22
 
{
23
 
    /*  We still don't make the waves here yet, because    */
24
 
    /*  we still don't know what they will be.             */
25
 
}  
26
 
 
27
 
FM4Alg6 :: ~FM4Alg6()
28
 
{
29
 
}
30
 
 
31
 
MY_FLOAT FM4Alg6 :: tick()
32
 
{
33
 
    MY_FLOAT temp,temp2;
34
 
 
35
 
    temp = gains[3] * adsr[3]->tick() * waves[3]->tick();
36
 
    temp2 = vibWave->tick() * modDepth * (MY_FLOAT) 0.1;         /*  Calculate frequency mod  */
37
 
 
38
 
    waves[0]->setFreq(baseFreq * ((MY_FLOAT) 1.0 + temp2) * ratios[0]);
39
 
    waves[1]->setFreq(baseFreq * ((MY_FLOAT) 1.0 + temp2) * ratios[1]);
40
 
    waves[2]->setFreq(baseFreq * ((MY_FLOAT) 1.0 + temp2) * ratios[2]);
41
 
    waves[3]->setFreq(baseFreq * ((MY_FLOAT) 1.0 + temp2) * ratios[3]);
42
 
 
43
 
    waves[0]->addPhaseOffset(temp * mods[0]);
44
 
    waves[1]->addPhaseOffset(temp * mods[1]);
45
 
    waves[2]->addPhaseOffset(temp * mods[2]);
46
 
    waves[3]->addPhaseOffset(twozero->lastOut());
47
 
    twozero->tick(temp);
48
 
    temp =  gains[0] * tilt[0] * adsr[0]->tick() * waves[0]->tick();
49
 
    temp += gains[1] * tilt[1] * adsr[1]->tick() * waves[1]->tick();
50
 
    temp += gains[2] * tilt[2] * adsr[2]->tick() * waves[2]->tick();
51
 
    
52
 
    return temp * (MY_FLOAT) 0.33;
53
 
}
54
 
 
55
 
void FM4Alg6 :: controlChange(int number, MY_FLOAT value)
56
 
{
57
 
 
58
 
}