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
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 };
39 const char * jack_client_name_ptr,
55 get_last_midi_channel(
59 set_last_midi_channel(
65 get_midi_behavior_mode(
69 set_midi_behavior_mode(
71 enum midi_behavior_mode mode);
76 const char * channel_name,
81 jack_mixer_channel_t channel);
83 /* returned values are in dBFS */
85 channel_stereo_meter_read(
86 jack_mixer_channel_t channel,
90 /* returned value is in dBFS */
92 channel_mono_meter_read(
93 jack_mixer_channel_t channel,
98 jack_mixer_channel_t channel);
101 channel_set_midi_change_callback(
102 jack_mixer_channel_t channel,
103 void (*midi_change_callback) (void*),
106 /* volume is in dBFS */
108 channel_volume_write(
109 jack_mixer_channel_t channel,
114 jack_mixer_channel_t channel);
117 channels_volumes_read(jack_mixer_t mixer_ptr);
119 /* balance is from -1.0 (full left) to +1.0 (full right) */
121 channel_balance_write(
122 jack_mixer_channel_t channel,
126 channel_balance_read(
127 jack_mixer_channel_t channel);
130 channel_get_balance_midi_cc(
131 jack_mixer_channel_t channel);
134 channel_set_balance_midi_cc(
135 jack_mixer_channel_t channel,
139 channel_get_volume_midi_cc(
140 jack_mixer_channel_t channel);
143 channel_set_volume_midi_cc(
144 jack_mixer_channel_t channel,
148 channel_get_mute_midi_cc(
149 jack_mixer_channel_t channel);
152 channel_set_mute_midi_cc(
153 jack_mixer_channel_t channel,
157 channel_get_solo_midi_cc(
158 jack_mixer_channel_t channel);
161 channel_set_solo_midi_cc(
162 jack_mixer_channel_t channel,
165 void channel_set_midi_cc_volume_picked_up(jack_mixer_channel_t channel,
168 void channel_set_midi_cc_balance_picked_up(jack_mixer_channel_t channel,
172 channel_autoset_volume_midi_cc(
173 jack_mixer_channel_t channel);
176 channel_autoset_balance_midi_cc(
177 jack_mixer_channel_t channel);
180 channel_autoset_mute_midi_cc(
181 jack_mixer_channel_t channel);
184 channel_autoset_solo_midi_cc(
185 jack_mixer_channel_t channel);
189 jack_mixer_channel_t channel);
195 /* returned value is in dBFS */
197 channel_abspeak_read(
198 jack_mixer_channel_t channel);
201 channel_abspeak_reset(
202 jack_mixer_channel_t channel);
206 jack_mixer_channel_t channel);
210 jack_mixer_channel_t channel);
213 channel_is_out_muted(
214 jack_mixer_channel_t channel);
218 jack_mixer_channel_t channel);
222 jack_mixer_channel_t channel);
226 jack_mixer_channel_t channel);
230 jack_mixer_channel_t channel,
234 channel_set_midi_scale(
235 jack_mixer_channel_t channel,
236 jack_mixer_scale_t scale);
239 channel_get_midi_in_got_events(
240 jack_mixer_channel_t channel);
242 jack_mixer_output_channel_t
245 const char * channel_name,
250 remove_output_channel(
251 jack_mixer_output_channel_t output_channel);
254 output_channel_set_solo(
255 jack_mixer_output_channel_t output_channel,
256 jack_mixer_channel_t channel,
260 output_channel_set_muted(
261 jack_mixer_output_channel_t output_channel,
262 jack_mixer_channel_t channel,
266 output_channel_is_muted(
267 jack_mixer_output_channel_t output_channel,
268 jack_mixer_channel_t channel);
271 output_channel_is_solo(
272 jack_mixer_output_channel_t output_channel,
273 jack_mixer_channel_t channel);
276 output_channel_set_prefader(
277 jack_mixer_output_channel_t output_channel,
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);
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 */