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