diff options
author | Steve M. Robbins <smr@debian.org> | 2011-10-22 04:54:51 +0200 |
---|---|---|
committer | Steve M. Robbins <smr@debian.org> | 2011-10-22 04:54:51 +0200 |
commit | dd657ad3f1428b026486db3ec36691df17ddf515 (patch) | |
tree | 6ffb465595479fb5a76c1a6ea3ec992abaa8c1c1 /tran/sine.alg |
Import nyquist_3.05.orig.tar.gz
[dgit import orig nyquist_3.05.orig.tar.gz]
Diffstat (limited to 'tran/sine.alg')
-rw-r--r-- | tran/sine.alg | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tran/sine.alg b/tran/sine.alg new file mode 100644 index 0000000..e00afde --- /dev/null +++ b/tran/sine.alg @@ -0,0 +1,31 @@ +(SINE-ALG +(NAME "sine") +(ARGUMENTS ("time_type" "t0") ("double" "hz") ("rate_type" "sr") ("time_type" "d")) +(STATE ("long" "phase" "0") + ("long" "ph_incr" "round(((hz * SINE_TABLE_LEN) * (1 << SINE_TABLE_SHIFT) / sr))")) +(TERMINATE (AFTER "d")) +(INNER-LOOP "output = sine_table[phase >> SINE_TABLE_SHIFT]; + phase += ph_incr; + phase &= SINE_TABLE_MASK;") +(MAINTAIN ("phase" + "susp->phase = (susp->phase + susp->ph_incr * togo) & SINE_TABLE_MASK")) +(CONSTANT "ph_incr") +(SAMPLE-RATE "sr") +(SUPPORT-HEADER "#define SINE_TABLE_LEN 2048 +#define SINE_TABLE_MASK 0x7FFFFFFF +#define SINE_TABLE_SHIFT 20 +void sine_init(); +extern sample_type sine_table[]; +") +(SUPPORT-FUNCTIONS " +sample_type sine_table[SINE_TABLE_LEN + 1]; + +void sine_init() +{ + int i; + for (i = 0; i <= SINE_TABLE_LEN; i++) + sine_table[i] = (sample_type) (sin((PI * 2 * i) / SINE_TABLE_LEN)); +} +") +) + |