1 /* this typedef goes here because it is needed by multiseq.c */
2 
3 typedef struct add_susp_struct {
4     snd_susp_node               susp;
5     boolean                     started;
6     int                         terminate_bits;
7     int64_t                     terminate_cnt;
8     int                         logical_stop_bits;
9     boolean                     logically_stopped;
10     sound_type                  s1;
11     int                         s1_cnt;
12     sample_block_type           s1_bptr;        /* block pointer */
13     sample_block_values_type    s1_ptr;
14     sound_type                  s2;
15     int                         s2_cnt;
16     sample_block_type           s2_bptr;        /* block pointer */
17     sample_block_values_type    s2_ptr;
18 
19 #ifdef UPSAMPLECODE
20     /* support for interpolation of s2 */
21     sample_type s2_x1_sample;
22     double s2_phase;
23     double s2_phase_incr;
24 
25     /* support for ramp between samples of s2 */
26     double output_per_s2;
27 #endif
28     /* pointer used to synchronize adds in multiseq */
29     struct multiseq_struct      *multiseq;
30 	int64_t                     s1_prepend; /* offset to susp.current */
31 } add_susp_node, *add_susp_type;
32 
33 sound_type snd_make_add(sound_type s1, sound_type s2);
34 sound_type snd_add(sound_type s1, sound_type s2);
35     /* LISP: (SND-ADD SOUND SOUND) */
36 
37 /* we export these for seq.c and multiseq.c */
38 void add_zero_fill_nn_fetch(snd_susp_type, snd_list_type);
39 void add_s1_s2_nn_fetch(snd_susp_type, snd_list_type);
40 void add_s1_nn_fetch(snd_susp_type, snd_list_type);
41 void add_s2_nn_fetch(snd_susp_type, snd_list_type);
42 void add_mark(snd_susp_type susp);
43 void add_print_tree(snd_susp_type susp, int n);
44 void add_free(snd_susp_type susp);
45