]> git.0d.be Git - jack_mixer.git/blob - jack_mixer.h
Set version to 14 in preparation for next release
[jack_mixer.git] / jack_mixer.h
1 /* -*- Mode: C ; c-basic-offset: 2 -*- */
2 /*****************************************************************************
3  *
4  *   This file is part of jack_mixer
5  *
6  *   Copyright (C) 2006 Nedko Arnaudov <nedko@arnaudov.name>
7  *
8  *   This program is free software; you can redistribute it and/or modify
9  *   it under the terms of the GNU General Public License as published by
10  *   the Free Software Foundation; version 2 of the License
11  *
12  *   This program is distributed in the hope that it will be useful,
13  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *   GNU General Public License for more details.
16  *
17  *   You should have received a copy of the GNU General Public License
18  *   along with this program; if not, write to the Free Software
19  *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20  *
21  *****************************************************************************/
22
23 #ifndef JACK_MIXER_H__DAEB51D8_5861_40F2_92E4_24CA495A384D__INCLUDED
24 #define JACK_MIXER_H__DAEB51D8_5861_40F2_92E4_24CA495A384D__INCLUDED
25
26 #include <stdbool.h>
27
28 #include "scale.h"
29
30 typedef void * jack_mixer_t;
31 typedef void * jack_mixer_channel_t;
32 typedef void * jack_mixer_output_channel_t;
33 typedef void * jack_mixer_threshold_t;
34
35 enum midi_behavior_mode { Jump_To_Value, Pick_Up };
36
37 jack_mixer_t
38 create(
39   const char * jack_client_name_ptr,
40   bool stereo);
41
42 void
43 destroy(
44   jack_mixer_t mixer);
45
46 unsigned int
47 get_channels_count(
48   jack_mixer_t mixer);
49
50 const char*
51 get_client_name(
52   jack_mixer_t mixer);
53
54 int
55 get_last_midi_channel(
56   jack_mixer_t mixer);
57
58 unsigned int
59 set_last_midi_channel(
60   jack_mixer_t mixer,
61   int new_channel);
62
63
64 int
65 get_midi_behavior_mode(
66   jack_mixer_t mixer);
67
68 unsigned int
69 set_midi_behavior_mode(
70   jack_mixer_t mixer,
71   enum midi_behavior_mode mode);
72
73 jack_mixer_channel_t
74 add_channel(
75   jack_mixer_t mixer,
76   const char * channel_name,
77   bool stereo);
78
79 const char *
80 channel_get_name(
81   jack_mixer_channel_t channel);
82
83 /* returned values are in dBFS */
84 void
85 channel_stereo_meter_read(
86   jack_mixer_channel_t channel,
87   double * left_ptr,
88   double * right_ptr);
89
90 /* returned value is in dBFS */
91 void
92 channel_mono_meter_read(
93   jack_mixer_channel_t channel,
94   double * mono_ptr);
95
96 bool
97 channel_is_stereo(
98   jack_mixer_channel_t channel);
99
100 void
101 channel_set_midi_change_callback(
102   jack_mixer_channel_t channel,
103   void (*midi_change_callback) (void*),
104   void *user_data);
105
106 /* volume is in dBFS */
107 void
108 channel_volume_write(
109   jack_mixer_channel_t channel,
110   double volume);
111
112 double
113 channel_volume_read(
114   jack_mixer_channel_t channel);
115
116 void
117 channels_volumes_read(jack_mixer_t mixer_ptr);
118
119 /* balance is from -1.0 (full left) to +1.0 (full right) */
120 void
121 channel_balance_write(
122   jack_mixer_channel_t channel,
123   double balance);
124
125 double
126 channel_balance_read(
127   jack_mixer_channel_t channel);
128
129 int
130 channel_get_balance_midi_cc(
131   jack_mixer_channel_t channel);
132
133 unsigned int
134 channel_set_balance_midi_cc(
135   jack_mixer_channel_t channel,
136   int new_cc);
137
138 int
139 channel_get_volume_midi_cc(
140   jack_mixer_channel_t channel);
141
142 unsigned int
143 channel_set_volume_midi_cc(
144   jack_mixer_channel_t channel,
145   int new_cc);
146
147 int
148 channel_get_mute_midi_cc(
149   jack_mixer_channel_t channel);
150
151 unsigned int
152 channel_set_mute_midi_cc(
153   jack_mixer_channel_t channel,
154   int new_cc);
155
156 int
157 channel_get_solo_midi_cc(
158   jack_mixer_channel_t channel);
159
160 unsigned int
161 channel_set_solo_midi_cc(
162   jack_mixer_channel_t channel,
163   int new_cc);
164
165 void channel_set_midi_cc_volume_picked_up(jack_mixer_channel_t channel,
166   bool status);
167
168 void channel_set_midi_cc_balance_picked_up(jack_mixer_channel_t channel,
169   bool status);
170
171 void
172 channel_autoset_volume_midi_cc(
173   jack_mixer_channel_t channel);
174
175 void
176 channel_autoset_balance_midi_cc(
177   jack_mixer_channel_t channel);
178
179 void
180 channel_autoset_mute_midi_cc(
181   jack_mixer_channel_t channel);
182
183 void
184 channel_autoset_solo_midi_cc(
185   jack_mixer_channel_t channel);
186
187 void
188 remove_channel(
189   jack_mixer_channel_t channel);
190
191 void
192 remove_channels(
193   jack_mixer_t mixer);
194
195 /* returned value is in dBFS */
196 double
197 channel_abspeak_read(
198   jack_mixer_channel_t channel);
199
200 void
201 channel_abspeak_reset(
202   jack_mixer_channel_t channel);
203
204 void
205 channel_out_mute(
206   jack_mixer_channel_t channel);
207
208 void
209 channel_out_unmute(
210   jack_mixer_channel_t channel);
211
212 bool
213 channel_is_out_muted(
214   jack_mixer_channel_t channel);
215
216 void
217 channel_solo(
218   jack_mixer_channel_t channel);
219
220 void
221 channel_unsolo(
222   jack_mixer_channel_t channel);
223
224 bool
225 channel_is_soloed(
226   jack_mixer_channel_t channel);
227
228 void
229 channel_rename(
230   jack_mixer_channel_t channel,
231   const char * name);
232
233 void
234 channel_set_midi_scale(
235   jack_mixer_channel_t channel,
236   jack_mixer_scale_t scale);
237
238 bool
239 channel_get_midi_in_got_events(
240   jack_mixer_channel_t channel);
241
242 jack_mixer_output_channel_t
243 add_output_channel(
244   jack_mixer_t mixer,
245   const char * channel_name,
246   bool stereo,
247   bool system);
248
249 void
250 remove_output_channel(
251   jack_mixer_output_channel_t output_channel);
252
253 void
254 output_channel_set_solo(
255   jack_mixer_output_channel_t output_channel,
256   jack_mixer_channel_t channel,
257   bool solo_value);
258
259 void
260 output_channel_set_muted(
261   jack_mixer_output_channel_t output_channel,
262   jack_mixer_channel_t channel,
263   bool muted_value);
264
265 bool
266 output_channel_is_muted(
267   jack_mixer_output_channel_t output_channel,
268   jack_mixer_channel_t channel);
269
270 bool
271 output_channel_is_solo(
272   jack_mixer_output_channel_t output_channel,
273   jack_mixer_channel_t channel);
274
275 void
276 output_channel_set_prefader(
277   jack_mixer_output_channel_t output_channel,
278   bool pfl_value);
279
280 bool
281 output_channel_is_prefader(
282   jack_mixer_output_channel_t output_channel);
283
284 void output_channel_set_in_prefader(jack_mixer_output_channel_t output_channel,
285   jack_mixer_channel_t input_channel,
286   bool prefader_value);
287
288 bool
289 output_channel_is_in_prefader(
290   jack_mixer_output_channel_t output_channel,
291   jack_mixer_channel_t channel);
292
293 #endif /* #ifndef JACK_MIXER_H__DAEB51D8_5861_40F2_92E4_24CA495A384D__INCLUDED */