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
27 #include <jack/jack.h>
31 typedef void * jack_mixer_t;
32 typedef void * jack_mixer_kmeter_t;
33 typedef void * jack_mixer_channel_t;
34 typedef void * jack_mixer_output_channel_t;
35 typedef void * jack_mixer_threshold_t;
37 enum midi_behavior_mode { Jump_To_Value, Pick_Up };
41 const char * jack_client_name_ptr,
57 get_last_midi_channel(
61 set_last_midi_channel(
66 get_midi_behavior_mode(
70 set_midi_behavior_mode(
72 enum midi_behavior_mode mode);
77 const char * channel_name,
80 void kmeter_init(jack_mixer_kmeter_t km,
87 jack_mixer_kmeter_t km,
88 jack_default_audio_sample_t *p,
94 jack_mixer_channel_t channel);
96 /* returned values are in dBFS */
98 channel_stereo_meter_read(
99 jack_mixer_channel_t channel,
103 /* returned value is in dBFS */
105 channel_mono_meter_read(
106 jack_mixer_channel_t channel,
110 /* returned values are in dBFS */
112 channel_stereo_kmeter_read(
113 jack_mixer_channel_t channel,
116 double * left_rms_ptr,
117 double * right_rms_ptr);
119 /* returned value is in dBFS */
121 channel_mono_kmeter_read(
122 jack_mixer_channel_t channel,
124 double * mono_rms_ptr);
130 jack_mixer_channel_t channel);
133 channel_set_midi_change_callback(
134 jack_mixer_channel_t channel,
135 void (*midi_change_callback) (void*),
138 /* volume is in dBFS */
140 channel_volume_write(
141 jack_mixer_channel_t channel,
146 jack_mixer_channel_t channel);
149 channels_volumes_read(jack_mixer_t mixer_ptr);
151 /* balance is from -1.0 (full left) to +1.0 (full right) */
153 channel_balance_write(
154 jack_mixer_channel_t channel,
158 channel_balance_read(
159 jack_mixer_channel_t channel);
162 channel_get_balance_midi_cc(
163 jack_mixer_channel_t channel);
166 channel_set_balance_midi_cc(
167 jack_mixer_channel_t channel,
171 channel_get_volume_midi_cc(
172 jack_mixer_channel_t channel);
175 channel_set_volume_midi_cc(
176 jack_mixer_channel_t channel,
180 channel_get_mute_midi_cc(
181 jack_mixer_channel_t channel);
184 channel_set_mute_midi_cc(
185 jack_mixer_channel_t channel,
189 channel_get_solo_midi_cc(
190 jack_mixer_channel_t channel);
193 channel_set_solo_midi_cc(
194 jack_mixer_channel_t channel,
197 void channel_set_midi_cc_volume_picked_up(jack_mixer_channel_t channel,
200 void channel_set_midi_cc_balance_picked_up(jack_mixer_channel_t channel,
204 channel_autoset_volume_midi_cc(
205 jack_mixer_channel_t channel);
208 channel_autoset_balance_midi_cc(
209 jack_mixer_channel_t channel);
212 channel_autoset_mute_midi_cc(
213 jack_mixer_channel_t channel);
216 channel_autoset_solo_midi_cc(
217 jack_mixer_channel_t channel);
221 jack_mixer_channel_t channel);
227 /* returned value is in dBFS */
229 channel_abspeak_read(
230 jack_mixer_channel_t channel);
233 channel_abspeak_reset(
234 jack_mixer_channel_t channel);
238 jack_mixer_channel_t channel);
242 jack_mixer_channel_t channel);
245 channel_is_out_muted(
246 jack_mixer_channel_t channel);
250 jack_mixer_channel_t channel);
254 jack_mixer_channel_t channel);
258 jack_mixer_channel_t channel);
262 jack_mixer_channel_t channel,
266 channel_set_midi_scale(
267 jack_mixer_channel_t channel,
268 jack_mixer_scale_t scale);
271 channel_get_midi_in_got_events(
272 jack_mixer_channel_t channel);
274 jack_mixer_output_channel_t
277 const char * channel_name,
282 remove_output_channel(
283 jack_mixer_output_channel_t output_channel);
286 output_channel_set_solo(
287 jack_mixer_output_channel_t output_channel,
288 jack_mixer_channel_t channel,
292 output_channel_set_muted(
293 jack_mixer_output_channel_t output_channel,
294 jack_mixer_channel_t channel,
298 output_channel_is_muted(
299 jack_mixer_output_channel_t output_channel,
300 jack_mixer_channel_t channel);
303 output_channel_is_solo(
304 jack_mixer_output_channel_t output_channel,
305 jack_mixer_channel_t channel);
308 output_channel_set_prefader(
309 jack_mixer_output_channel_t output_channel,
313 output_channel_is_prefader(
314 jack_mixer_output_channel_t output_channel);
316 void output_channel_set_in_prefader(jack_mixer_output_channel_t output_channel,
317 jack_mixer_channel_t input_channel,
318 bool prefader_value);
321 output_channel_is_in_prefader(
322 jack_mixer_output_channel_t output_channel,
323 jack_mixer_channel_t channel);
325 #endif /* #ifndef JACK_MIXER_H__DAEB51D8_5861_40F2_92E4_24CA495A384D__INCLUDED */