release: 13
[jack_mixer.git] / jack_mixer.h
blob395e1a2d8af3e1520959e71ad2a30a91e210e75b
1 /* -*- Mode: C ; c-basic-offset: 2 -*- */
2 /*****************************************************************************
4 * This file is part of jack_mixer
6 * Copyright (C) 2006 Nedko Arnaudov <nedko@arnaudov.name>
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
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.
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.
21 *****************************************************************************/
23 #ifndef JACK_MIXER_H__DAEB51D8_5861_40F2_92E4_24CA495A384D__INCLUDED
24 #define JACK_MIXER_H__DAEB51D8_5861_40F2_92E4_24CA495A384D__INCLUDED
26 #include <stdbool.h>
28 #include "scale.h"
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;
35 enum midi_behavior_mode { Jump_To_Value, Pick_Up };
37 jack_mixer_t
38 create(
39 const char * jack_client_name_ptr,
40 bool stereo);
42 void
43 destroy(
44 jack_mixer_t mixer);
46 unsigned int
47 get_channels_count(
48 jack_mixer_t mixer);
50 const char*
51 get_client_name(
52 jack_mixer_t mixer);
54 int
55 get_last_midi_channel(
56 jack_mixer_t mixer);
58 unsigned int
59 set_last_midi_channel(
60 jack_mixer_t mixer,
61 int new_channel);
64 int
65 get_midi_behavior_mode(
66 jack_mixer_t mixer);
68 unsigned int
69 set_midi_behavior_mode(
70 jack_mixer_t mixer,
71 enum midi_behavior_mode mode);
73 jack_mixer_channel_t
74 add_channel(
75 jack_mixer_t mixer,
76 const char * channel_name,
77 bool stereo);
79 const char *
80 channel_get_name(
81 jack_mixer_channel_t channel);
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);
90 /* returned value is in dBFS */
91 void
92 channel_mono_meter_read(
93 jack_mixer_channel_t channel,
94 double * mono_ptr);
96 bool
97 channel_is_stereo(
98 jack_mixer_channel_t channel);
100 void
101 channel_set_midi_change_callback(
102 jack_mixer_channel_t channel,
103 void (*midi_change_callback) (void*),
104 void *user_data);
106 /* volume is in dBFS */
107 void
108 channel_volume_write(
109 jack_mixer_channel_t channel,
110 double volume);
112 double
113 channel_volume_read(
114 jack_mixer_channel_t channel);
116 void
117 channels_volumes_read(jack_mixer_t mixer_ptr);
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);
125 double
126 channel_balance_read(
127 jack_mixer_channel_t channel);
130 channel_get_balance_midi_cc(
131 jack_mixer_channel_t channel);
133 unsigned int
134 channel_set_balance_midi_cc(
135 jack_mixer_channel_t channel,
136 int new_cc);
139 channel_get_volume_midi_cc(
140 jack_mixer_channel_t channel);
142 unsigned int
143 channel_set_volume_midi_cc(
144 jack_mixer_channel_t channel,
145 int new_cc);
148 channel_get_mute_midi_cc(
149 jack_mixer_channel_t channel);
151 unsigned int
152 channel_set_mute_midi_cc(
153 jack_mixer_channel_t channel,
154 int new_cc);
157 channel_get_solo_midi_cc(
158 jack_mixer_channel_t channel);
160 unsigned int
161 channel_set_solo_midi_cc(
162 jack_mixer_channel_t channel,
163 int new_cc);
165 void channel_set_midi_cc_volume_picked_up(jack_mixer_channel_t channel,
166 bool status);
168 void channel_set_midi_cc_balance_picked_up(jack_mixer_channel_t channel,
169 bool status);
171 void
172 channel_autoset_volume_midi_cc(
173 jack_mixer_channel_t channel);
175 void
176 channel_autoset_balance_midi_cc(
177 jack_mixer_channel_t channel);
179 void
180 channel_autoset_mute_midi_cc(
181 jack_mixer_channel_t channel);
183 void
184 channel_autoset_solo_midi_cc(
185 jack_mixer_channel_t channel);
187 void
188 remove_channel(
189 jack_mixer_channel_t channel);
191 void
192 remove_channels(
193 jack_mixer_t mixer);
195 /* returned value is in dBFS */
196 double
197 channel_abspeak_read(
198 jack_mixer_channel_t channel);
200 void
201 channel_abspeak_reset(
202 jack_mixer_channel_t channel);
204 void
205 channel_out_mute(
206 jack_mixer_channel_t channel);
208 void
209 channel_out_unmute(
210 jack_mixer_channel_t channel);
212 bool
213 channel_is_out_muted(
214 jack_mixer_channel_t channel);
216 void
217 channel_solo(
218 jack_mixer_channel_t channel);
220 void
221 channel_unsolo(
222 jack_mixer_channel_t channel);
224 bool
225 channel_is_soloed(
226 jack_mixer_channel_t channel);
228 void
229 channel_rename(
230 jack_mixer_channel_t channel,
231 const char * name);
233 void
234 channel_set_midi_scale(
235 jack_mixer_channel_t channel,
236 jack_mixer_scale_t scale);
238 bool
239 channel_get_midi_in_got_events(
240 jack_mixer_channel_t channel);
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);
249 void
250 remove_output_channel(
251 jack_mixer_output_channel_t output_channel);
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);
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);
265 bool
266 output_channel_is_muted(
267 jack_mixer_output_channel_t output_channel,
268 jack_mixer_channel_t channel);
270 bool
271 output_channel_is_solo(
272 jack_mixer_output_channel_t output_channel,
273 jack_mixer_channel_t channel);
275 void
276 output_channel_set_prefader(
277 jack_mixer_output_channel_t output_channel,
278 bool pfl_value);
280 bool
281 output_channel_is_prefader(
282 jack_mixer_output_channel_t output_channel);
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);
288 bool
289 output_channel_is_in_prefader(
290 jack_mixer_output_channel_t output_channel,
291 jack_mixer_channel_t channel);
293 #endif /* #ifndef JACK_MIXER_H__DAEB51D8_5861_40F2_92E4_24CA495A384D__INCLUDED */