1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-05-03 17:19:43 +02:00
2015-04-07 22:10:17 -05:00

38 lines
1.5 KiB
Plaintext

(SHAPE-ALG
(NAME "shape")
(ARGUMENTS ("sound_type" "sin") ("sound_type" "fn")
("double" "origin"))
(START (MIN sin))
(TABLE "fn")
(NOT-IN-INNER-LOOP "fn")
(STATE
("double" "time_to_index" "fn->sr")
("double" "origin" "origin")
("table_type" "the_table" "sound_to_table(fn)")
("sample_type *" "fcn_table" "susp->the_table->samples")
("double" "table_len" "susp->the_table->length") )
(TERMINATE (MIN sin))
(LOGICAL-STOP (MIN sin))
(INNER-LOOP "register double offset, x1;
register long table_index;
register double phase = sin;
if (phase > 1.0) phase = 1.0;
else if (phase < -1.0) phase = -1.0;
offset = (phase + origin) * time_to_index;
table_index = (long) offset;
if (table_index < 0) {
table_index = 0;
offset = 0;
}
if (table_index >= table_len) {
offset = table_len - 1;
table_index = (long) offset;
}
x1 = fcn_table[table_index];
output = (sample_type) (x1 + (offset - table_index) *
(fcn_table[table_index + 1] - x1))")
(ALWAYS-SCALE sin)
(CONSTANT "table_len" "time_to_index" "origen" "fcn_table" "the_table")
(FINALIZATION "table_unref(susp->the_table);\n")
)