1 /* Convert to mono `Filter'
2 
3  * Copyright (C) 1999 S.J. Tappin
4  * Derived from the Copy only filter (J.A. Bezemer 1998)
5  *
6  * Licensed under the terms of the GNU General Public License.
7  * ABSOLUTELY NO WARRANTY.
8  * See the file `COPYING' in this directory.
9  */
10 
11 #include "signpr_mono.h"
12 #include "signpr_general.h"
13 #include "errorwindow.h"
14 
15 
16 void
monoize_param_defaults(parampointer_t parampointer)17 monoize_param_defaults (parampointer_t parampointer)
18 {
19 }
20 
21 #ifndef SWIG
22 void
monoize_param_screen(parampointer_t parampointer)23 monoize_param_screen (parampointer_t parampointer)
24 {
25   error_window ("This `filter' does not have adjustable parameters. It \
26 just averages the left & right signals.");
27 }
28 #endif
29 
30 void
init_monoize_filter(int filterno,parampointer_t parampointer)31 init_monoize_filter (int filterno, parampointer_t parampointer)
32 {
33   parampointer->buffer = init_buffer (0, 0);
34 
35   parampointer->filterno = filterno;
36 }
37 
38 void
delete_monoize_filter(parampointer_t parampointer)39 delete_monoize_filter (parampointer_t parampointer)
40 {
41   delete_buffer (&parampointer->buffer);
42 }
43 
44 
45 sample_t
46 #ifndef SWIG
monoize_filter(parampointer_t parampointer)47 monoize_filter (parampointer_t parampointer)
48 #else
49 monoize_filter (parampointer_t parampointer, int *filter_type)
50 #endif
51 {
52   sample_t sample;
53   longsample_t sum;
54 
55 #ifndef SWIG
56   advance_current_pos (&parampointer->buffer, parampointer->filterno);
57 #else
58   advance_current_pos (&parampointer->buffer, parampointer->filterno, filter_type);
59 #endif
60 
61   sample = get_from_buffer (&parampointer->buffer, 0);
62   sum.left = (sample.left + sample.right) / 2;
63   sample.left = sum.left;
64   sample.right = sum.left;
65 
66   return sample;
67 }
68