Commit 7d045f97 authored by Monty Montgomery's avatar Monty Montgomery

Add batch mode operation with -B; allows a previously saved config to be

applied to any input without popping the UI.



git-svn-id: https://svn.xiph.org/trunk/postfish@18490 0101bb08-14d6-0310-b084-bc0e0c8e3800
parent a40b8b87
......@@ -46,7 +46,7 @@ static GtkWidget *limit_readout;
static GtkWidget *mainpanel_inbar;
static subpanel_generic *panel;
static subpanel_generic *panel=NULL;
typedef struct {
GtkWidget *slider;
......@@ -71,18 +71,19 @@ void clippanel_state_from_config(int bank){
config_get_sigat("clippanel_throttle",bank,0,0,0,0,&declip_iterations);
config_get_vector("clippanel_trigger",bank,0,0,0,input_ch,declip_chtrigger);
{
if(panel){
int i=0,j=declip_pending_blocksize;
while(j>64){j>>=1;i++;}
multibar_thumb_set(MULTIBAR(width_bar),i,0);
}
multibar_thumb_set(MULTIBAR(depth_bar),declip_convergence*-.1,0);
multibar_thumb_set(MULTIBAR(limit_bar),declip_iterations*.1,0);
for(i=0;i<input_ch;i++){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(panel->subpanel_activebutton[i]),
declip_active[i]);
multibar_thumb_set(MULTIBAR(trigger_bars[i]),declip_chtrigger[i]*.0001,0);
multibar_thumb_set(MULTIBAR(depth_bar),declip_convergence*-.1,0);
multibar_thumb_set(MULTIBAR(limit_bar),declip_iterations*.1,0);
for(i=0;i<input_ch;i++){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(panel->subpanel_activebutton[i]),
declip_active[i]);
multibar_thumb_set(MULTIBAR(trigger_bars[i]),declip_chtrigger[i]*.0001,0);
}
}
}
......
......@@ -101,7 +101,7 @@ typedef struct multi_panel_state{
} multi_panel_state;
static multi_panel_state *master_panel;
static multi_panel_state **channel_panel;
static multi_panel_state *channel_panel[MAX_INPUT_CHANNELS];
static void compandpanel_state_to_config_helper(int bank,multicompand_settings *s,int A){
......@@ -148,7 +148,7 @@ static void compandpanel_state_from_config_helper(int bank,multicompand_settings
int i;
config_get_sigat("multicompand_active",bank,A,0,0,0,&s->panel_active);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->panel->subpanel_activebutton[0]),s->panel_active);
if(p)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->panel->subpanel_activebutton[0]),s->panel_active);
config_get_sigat("multicompand_freqbank",bank,A,0,0,0,&s->active_bank);
for(i=0;i<multicomp_banks;i++){
......@@ -157,65 +157,73 @@ static void compandpanel_state_from_config_helper(int bank,multicompand_settings
}
config_get_sigat("multicompand_over_set",bank,A,0,0,0,&s->over_mode);
if(s->over_mode)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->over_peak),1);
else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->over_rms),1);
if(p){
if(s->over_mode)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->over_peak),1);
else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->over_rms),1);
}
config_get_sigat("multicompand_over_set",bank,A,0,0,1,&s->over_softknee);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->over_softknee),s->over_softknee);
if(p)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->over_softknee),s->over_softknee);
config_get_sigat("multicompand_over_set",bank,A,0,0,2,&s->over_ratio);
multibar_thumb_set(p->over_compand.s,1000./s->over_ratio,0);
if(p)multibar_thumb_set(p->over_compand.s,1000./s->over_ratio,0);
config_get_sigat("multicompand_over_set",bank,A,0,0,3,&s->over_attack);
multibar_thumb_set(p->over_timing.s,s->over_attack*.1,0);
if(p)multibar_thumb_set(p->over_timing.s,s->over_attack*.1,0);
config_get_sigat("multicompand_over_set",bank,A,0,0,4,&s->over_decay);
multibar_thumb_set(p->over_timing.s,s->over_decay*.1,1);
if(p)multibar_thumb_set(p->over_timing.s,s->over_decay*.1,1);
config_get_sigat("multicompand_over_set",bank,A,0,0,5,&s->over_lookahead);
multibar_thumb_set(p->over_lookahead.s,s->over_lookahead*.1,0);
if(p)multibar_thumb_set(p->over_lookahead.s,s->over_lookahead*.1,0);
config_get_sigat("multicompand_under_set",bank,A,0,0,0,&s->under_mode);
if(s->under_mode)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->under_peak),1);
else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->under_rms),1);
if(p){
if(s->under_mode)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->under_peak),1);
else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->under_rms),1);
}
config_get_sigat("multicompand_under_set",bank,A,0,0,1,&s->under_softknee);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->under_softknee),s->under_softknee);
if(p)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->under_softknee),s->under_softknee);
config_get_sigat("multicompand_under_set",bank,A,0,0,2,&s->under_ratio);
multibar_thumb_set(p->under_compand.s,1000./s->under_ratio,0);
if(p)multibar_thumb_set(p->under_compand.s,1000./s->under_ratio,0);
config_get_sigat("multicompand_under_set",bank,A,0,0,3,&s->under_attack);
multibar_thumb_set(p->under_timing.s,s->under_attack*.1,0);
if(p)multibar_thumb_set(p->under_timing.s,s->under_attack*.1,0);
config_get_sigat("multicompand_under_set",bank,A,0,0,4,&s->under_decay);
multibar_thumb_set(p->under_timing.s,s->under_decay*.1,1);
if(p)multibar_thumb_set(p->under_timing.s,s->under_decay*.1,1);
config_get_sigat("multicompand_under_set",bank,A,0,0,5,&s->under_lookahead);
multibar_thumb_set(p->under_lookahead.s,s->under_lookahead*.1,0);
if(p)multibar_thumb_set(p->under_lookahead.s,s->under_lookahead*.1,0);
config_get_sigat("multicompand_base_set",bank,A,0,0,0,&s->base_mode);
if(s->base_mode)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->base_peak),1);
else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->base_rms),1);
if(p){
if(s->base_mode)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->base_peak),1);
else
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->base_rms),1);
}
config_get_sigat("multicompand_base_set",bank,A,0,0,2,&s->base_ratio);
multibar_thumb_set(p->base_compand.s,1000./s->base_ratio,0);
if(p)multibar_thumb_set(p->base_compand.s,1000./s->base_ratio,0);
config_get_sigat("multicompand_base_set",bank,A,0,0,3,&s->base_attack);
multibar_thumb_set(p->base_timing.s,s->base_attack*.1,0);
if(p)multibar_thumb_set(p->base_timing.s,s->base_attack*.1,0);
config_get_sigat("multicompand_base_set",bank,A,0,0,4,&s->base_decay);
multibar_thumb_set(p->base_timing.s,s->base_decay*.1,1);
if(p)multibar_thumb_set(p->base_timing.s,s->base_decay*.1,1);
propogate_bank_changes_full(s,s->active_bank);
/* setting the active bank also redisplays all the sliders */
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->octave[s->active_bank]),1);
/* safe to call blindly; if the above already triggered the work, this is a no op */
switch(s->active_bank){
case 0:
static_octave(0,&p->octave_full);
break;
case 1:
static_octave(0,&p->octave_half);
break;
case 2:
static_octave(0,&p->octave_two);
break;
if(p){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->octave[s->active_bank]),1);
/* safe to call blindly; if the above already triggered the work, this is a no op */
switch(s->active_bank){
case 0:
static_octave(0,&p->octave_full);
break;
case 1:
static_octave(0,&p->octave_half);
break;
case 2:
static_octave(0,&p->octave_two);
break;
}
}
}
......@@ -1034,8 +1042,6 @@ void compandpanel_create_channel(postfish_mainpanel *mp,
GtkWidget **activebutton){
int i;
channel_panel=calloc(input_ch,sizeof(*channel_panel));
/* a panel for each channel */
for(i=0;i<input_ch;i++){
subpanel_generic *panel;
......
......@@ -71,23 +71,28 @@ void deverbpanel_state_from_config(int bank){
int i;
config_get_vector("deverbpanel_active",bank,0,0,0,input_ch,deverb_channel_set.active);
for(i=0;i<input_ch;i++)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(channel_panel->panel->subpanel_activebutton[i]),
deverb_channel_set.active[i]);
if(channel_panel)
for(i=0;i<input_ch;i++)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(channel_panel->panel->subpanel_activebutton[i]),
deverb_channel_set.active[i]);
config_get_vector("deverbpanel_ratio",bank,0,0,0,deverb_freqs,deverb_channel_set.ratio);
for(i=0;i<deverb_freqs;i++)
multibar_thumb_set(MULTIBAR(channel_panel->bars[i].cslider),
1000./deverb_channel_set.ratio[i],0);
if(channel_panel)
for(i=0;i<deverb_freqs;i++)
multibar_thumb_set(MULTIBAR(channel_panel->bars[i].cslider),
1000./deverb_channel_set.ratio[i],0);
config_get_sigat("deverbpanel_set",bank,0,0,0,0,&deverb_channel_set.linkp);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(channel_panel->link),deverb_channel_set.linkp);
if(channel_panel)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(channel_panel->link),deverb_channel_set.linkp);
config_get_sigat("deverbpanel_set",bank,0,0,0,1,&deverb_channel_set.smooth);
multibar_thumb_set(MULTIBAR(channel_panel->timing.s),deverb_channel_set.smooth*.1,0);
if(channel_panel)
multibar_thumb_set(MULTIBAR(channel_panel->timing.s),deverb_channel_set.smooth*.1,0);
config_get_sigat("deverbpanel_set",bank,0,0,0,3,&deverb_channel_set.release);
multibar_thumb_set(MULTIBAR(channel_panel->timing.s),deverb_channel_set.release*.1,1);
if(channel_panel)
multibar_thumb_set(MULTIBAR(channel_panel->timing.s),deverb_channel_set.release*.1,1);
}
static void compand_change(GtkWidget *w,gpointer in){
......
......@@ -48,7 +48,7 @@ typedef struct eps {
} eq_panel_state;
static eq_panel_state *master_panel;
static eq_panel_state **channel_panel;
static eq_panel_state *channel_panel[MAX_INPUT_CHANNELS];
static void eqpanel_state_to_config_helper(int bank,eq_settings *s,int A){
config_set_integer("eq_active",bank,A,0,0,0,s->panel_active);
......@@ -67,11 +67,12 @@ static void eqpanel_state_from_config_helper(int bank,eq_settings *s,
int i;
config_get_sigat("eq_active",bank,A,0,0,0,&s->panel_active);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->panel->subpanel_activebutton[0]),s->panel_active);
if(p)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->panel->subpanel_activebutton[0]),s->panel_active);
config_get_vector("eq_settings",bank,A,0,0,eq_freqs,s->settings);
for(i=0;i<eq_freqs;i++)
multibar_thumb_set(MULTIBAR(p->bars[i].slider),s->settings[i]*.1,0);
if(p)
for(i=0;i<eq_freqs;i++)
multibar_thumb_set(MULTIBAR(p->bars[i].slider),s->settings[i]*.1,0);
}
......@@ -221,7 +222,6 @@ void eqpanel_create_channel(postfish_mainpanel *mp,
GtkWidget **windowbutton,
GtkWidget **activebutton){
int i;
channel_panel=malloc(input_ch*sizeof(*channel_panel));
/* a panel for each channel */
for(i=0;i<input_ch;i++){
......
......@@ -48,16 +48,16 @@ void limitpanel_state_to_config(int bank){
void limitpanel_state_from_config(int bank){
config_get_sigat("limit_active",bank,0,0,0,0,&limit_active);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(active),limit_active);
if(active)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(active),limit_active);
config_get_sigat("limit_set",bank,0,0,0,0,&limitset.thresh);
multibar_thumb_set(MULTIBAR(t_slider),limitset.thresh*.1,0);
if(t_slider)multibar_thumb_set(MULTIBAR(t_slider),limitset.thresh*.1,0);
config_get_sigat("limit_set",bank,0,0,0,1,&limitset.depth);
multibar_thumb_set(MULTIBAR(k_slider),limitset.depth*.1,0);
if(k_slider)multibar_thumb_set(MULTIBAR(k_slider),limitset.depth*.1,0);
config_get_sigat("limit_set",bank,0,0,0,2,&limitset.decay);
multibar_thumb_set(MULTIBAR(d_slider),limitset.decay*.1,0);
if(d_slider)multibar_thumb_set(MULTIBAR(d_slider),limitset.decay*.1,0);
}
static void limit_change(GtkWidget *w,gpointer in){
......
......@@ -52,6 +52,7 @@ int eventpipe[2];
sig_atomic_t main_looping;
char *configfile="postfish-staterc";
char *version;
int batch = 0;
void clean_exit(int sig){
signal(sig,SIG_IGN);
......@@ -84,9 +85,10 @@ void clean_exit(int sig){
}
const char *optstring = "-c:gh";
const char *optstring = "-c:ghB";
struct option options [] = {
{"batch-mode",no_argument,NULL,'B'},
{"configuration-file",required_argument,NULL,'c'},
{"group",no_argument,NULL,'g'},
{"help",no_argument,NULL,'h'},
......@@ -102,6 +104,8 @@ static void usage(FILE *f){
" postfish [options] infile [infile]+ [-g infile [infile]+]+ > output\n\n"
"OPTIONS:\n"
" -B --batch-mode : process the input in batch mode without\n"
" UI or monitor output\n"
" -c --configuration-file : load state from alternate configuration file\n"
" -g --group : place following input files in a new channel\n"
" grouping\n"
......@@ -179,6 +183,9 @@ void parse_command_line(int argc, char **argv){
input_parse(optarg,newgroup);
newgroup=0;
break;
case 'B':
batch=1;
break;
case 'c':
/* alternate configuration file */
configfile=strdup(optarg);
......@@ -328,7 +335,7 @@ int main(int argc, char **argv){
fprintf(stderr,"Unable to remove block buffering on stdout; continuing\n");
output_probe_stdout(STDOUT_FILENO);
output_probe_monitor();
if(!batch) output_probe_monitor();
/* open all the input files */
if(input_load())exit(1);
......@@ -363,7 +370,13 @@ int main(int argc, char **argv){
signal(SIGINT,clean_exit);
signal(SIGSEGV,clean_exit);
mainpanel_go(argc,argv,input_ch);
if(batch){
mainpanel_state_from_config(0);
playback_active=1;
outset.panel_active[1]=1;
playback_thread(NULL);
}else
mainpanel_go(argc,argv,input_ch);
return(0);
}
......
......@@ -34,7 +34,7 @@
#include "windowbutton.h"
#include "config.h"
static postfish_mainpanel p;
static postfish_mainpanel *p=NULL;
extern char *configfile;
extern sig_atomic_t main_looping;
......@@ -46,20 +46,20 @@ static void mainpanel_state_to_config(int bank){
int i;
float f;
f=multibar_get_value(MULTIBAR(p.masterdB_s),0);
i=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p.masterdB_a));
f=multibar_get_value(MULTIBAR(p->masterdB_s),0);
i=gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p->masterdB_a));
config_set_integer("mainpanel_master_att",bank,0,0,0,0,rint(f*10));
config_set_integer("mainpanel_master_att_active",bank,0,0,0,0,i);
config_set_string("mainpanel_cue_A",0,0,0,0,gtk_entry_get_text(GTK_ENTRY(p.entry_a)));
config_set_string("mainpanel_cue_B",0,0,0,0,gtk_entry_get_text(GTK_ENTRY(p.entry_b)));
config_set_string("mainpanel_cue_A",0,0,0,0,gtk_entry_get_text(GTK_ENTRY(p->entry_a)));
config_set_string("mainpanel_cue_B",0,0,0,0,gtk_entry_get_text(GTK_ENTRY(p->entry_b)));
config_set_integer("mainpanel_loop",0,0,0,0,0,
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p.cue_b)));
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p->cue_b)));
for(i=0;i<input_ch || i<OUTPUT_CHANNELS;i++)
config_set_integer("mainpanel_VU_show",0,0,0,0,i,
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p.channelshow[i])));
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p->channelshow[i])));
clippanel_state_to_config(bank);
compandpanel_state_to_config(bank);
......@@ -73,28 +73,36 @@ static void mainpanel_state_to_config(int bank){
}
static void mainpanel_state_from_config(int bank){
void mainpanel_state_from_config(int bank){
int val,i;
const char *string;
if(!config_get_integer("mainpanel_master_att",bank,0,0,0,0,&val))
multibar_thumb_set(MULTIBAR(p.masterdB_s),val*.1,0);
if(!config_get_integer("mainpanel_master_att",bank,0,0,0,0,&val)){
master_att = val;
if(p)
multibar_thumb_set(MULTIBAR(p->masterdB_s),val*.1,0);
}
if(!config_get_integer("mainpanel_master_att_active",bank,0,0,0,0,&val))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p.masterdB_a),val);
if(!config_get_integer("mainpanel_master_att_active",bank,0,0,0,0,&val)){
if(!val)master_att=0;
if(p)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->masterdB_a),val);
}
/* A/B state are saved but *not* banked */
if((string=config_get_string("mainpanel_cue_A",0,0,0,0)))
action_seta_to(&p,string);
action_seta_to(p,string);
if((string=config_get_string("mainpanel_cue_B",0,0,0,0)))
action_setb_to(&p,string);
if(!config_get_integer("mainpanel_loop",0,0,0,0,0,&val))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p.cue_b),val);
action_setb_to(p,string);
if(p)
if(!config_get_integer("mainpanel_loop",0,0,0,0,0,&val))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->cue_b),val);
for(i=0;i<input_ch || i<OUTPUT_CHANNELS;i++)
if(!config_get_integer("mainpanel_VU_show",0,0,0,0,i,&val))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p.channelshow[i]),val);
if(p)
for(i=0;i<input_ch || i<OUTPUT_CHANNELS;i++)
if(!config_get_integer("mainpanel_VU_show",0,0,0,0,i,&val))
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->channelshow[i]),val);
clippanel_state_from_config(bank);
compandpanel_state_from_config(bank);
......@@ -294,21 +302,20 @@ static void action_entryb(GtkWidget *widget,postfish_mainpanel *p){
}
static void action_seta_to(postfish_mainpanel *p,const char *time){
gtk_entry_set_text(GTK_ENTRY(p->entry_a),time);
off_t cursora=input_time_to_cursor(time),cursorb;
{
const char *time=gtk_entry_get_text(GTK_ENTRY(p->entry_a));
off_t cursora=input_time_to_cursor(time),cursorb;
if(p){
gtk_entry_set_text(GTK_ENTRY(p->entry_a),time);
time=gtk_entry_get_text(GTK_ENTRY(p->entry_b));
cursorb=input_time_to_cursor(time);
if(cursora>=cursorb && loop_active){
loop_active=0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->cue_b),0);
}
input_Acursor_set(cursora);
}
input_Acursor_set(cursora);
}
static void action_seta(GtkWidget *widget,postfish_mainpanel *p){
......@@ -317,20 +324,20 @@ static void action_seta(GtkWidget *widget,postfish_mainpanel *p){
}
static void action_setb_to(postfish_mainpanel *p,const char *time){
off_t cursora,cursorb;
cursorb=input_time_to_cursor(time);
gtk_entry_set_text(GTK_ENTRY(p->entry_b),time);
time=gtk_entry_get_text(GTK_ENTRY(p->entry_a));
cursora=input_time_to_cursor(time);
off_t cursora,cursorb=input_time_to_cursor(time);
if(cursora>=cursorb && loop_active){
loop_active=0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->cue_b),0);
if(p){
gtk_entry_set_text(GTK_ENTRY(p->entry_b),time);
time=gtk_entry_get_text(GTK_ENTRY(p->entry_a));
cursora=input_time_to_cursor(time);
if(cursora>=cursorb && loop_active){
loop_active=0;
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->cue_b),0);
}
}
input_Bcursor_set(cursorb);
}
static void action_setb(GtkWidget *widget,postfish_mainpanel *p){
......@@ -1252,7 +1259,8 @@ void mainpanel_go(int argc,char *argv[], int ch){
char buffer[20];
int i;
int found=0;
memset(&p,0,sizeof(p));
p=calloc(1,sizeof(*p));
found|=look_for_gtkrc(ETCDIR"/postfish-gtkrc");
{
......@@ -1339,9 +1347,9 @@ void mainpanel_go(int argc,char *argv[], int ch){
exit(1);
}
mainpanel_create(&p,labels);
mainpanel_create(p,labels);
mainpanel_state_from_config(0);
animate_fish(&p);
animate_fish(p);
/* set up watching the event pipe */
{
......@@ -1352,7 +1360,7 @@ void mainpanel_go(int argc,char *argv[], int ch){
g_io_channel_set_buffered (channel, FALSE);
g_io_channel_set_close_on_unref (channel, TRUE);
id = g_io_add_watch (channel, G_IO_IN, async_event_handle, &p);
id = g_io_add_watch (channel, G_IO_IN, async_event_handle, p);
g_io_channel_unref (channel);
......
......@@ -86,4 +86,5 @@ struct postfish_mainpanel{
};
extern void mainpanel_go(int n,char *list[],int ch);
extern void mainpanel_state_from_config(int bank);
extern void save_state();
......@@ -67,7 +67,7 @@ typedef struct {
} mix_panelsave;
static atten_panelsave atten_panel;
static mix_panelsave **mix_panels;
static mix_panelsave *mix_panels[MAX_INPUT_CHANNELS];
static void mixblock_state_to_config(int bank, mix_settings *s,int A,int B){
config_set_vector("mixblock_source",bank,A,B,0,3,s->insert_source[B]);
......@@ -103,24 +103,26 @@ void mixpanel_state_to_config(int bank){
static void mixblock_state_from_config(int bank, mix_settings *s,mix_panelsave *p,int A,int B){
int i;
config_get_vector("mixblock_source",bank,A,B,0,3,s->insert_source[B]);
for(i=0;i<3;i++)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->insert_source[B][i]),
s->insert_source[B][i]);
if(p)
for(i=0;i<3;i++)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->insert_source[B][i]),
s->insert_source[B][i]);
config_get_sigat("mixblock_set",bank,A,B,0,0,&s->insert_invert[B]);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->insert_invert[B]),
s->insert_invert[B]);
if(p)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->insert_invert[B]),
s->insert_invert[B]);
config_get_sigat("mixblock_set",bank,A,B,0,1,&s->insert_att[B]);
multibar_thumb_set(MULTIBAR(p->insert_att[B]->s),s->insert_att[B]*.1,0);
if(p)multibar_thumb_set(MULTIBAR(p->insert_att[B]->s),s->insert_att[B]*.1,0);
config_get_sigat("mixblock_set",bank,A,B,0,2,&s->insert_delay[B]);
multibar_thumb_set(MULTIBAR(p->insert_del[B]->s),s->insert_delay[B]*.01,0);
if(p)multibar_thumb_set(MULTIBAR(p->insert_del[B]->s),s->insert_delay[B]*.01,0);
config_get_vector("mixblock_dest",bank,A,B,0,OUTPUT_CHANNELS,s->insert_dest[B]);
for(i=0;i<OUTPUT_CHANNELS;i++)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->insert_dest[B][i]),
s->insert_dest[B][i]);
if(p)
for(i=0;i<OUTPUT_CHANNELS;i++)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->insert_dest[B][i]),
s->insert_dest[B][i]);
}
static void mixdown_state_from_config(int bank, mix_settings *s, mix_panelsave *p, int A){
......@@ -131,13 +133,15 @@ static void mixdown_state_from_config(int bank, mix_settings *s, mix_panelsave *
config_get_sigat("mixplace_set",bank,A,0,0,1,&s->placer_att);
config_get_sigat("mixplace_set",bank,A,0,0,2,&s->placer_delay);
for(i=0;i<OUTPUT_CHANNELS;i++){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->destA[i]),s->placer_destA[i]);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->destB[i]),s->placer_destB[i]);
if(p){
for(i=0;i<OUTPUT_CHANNELS;i++){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->destA[i]),s->placer_destA[i]);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->destB[i]),s->placer_destB[i]);
}
multibar_thumb_set(MULTIBAR(p->place_AB->s),s->placer_place,0);
multibar_thumb_set(MULTIBAR(p->place_atten->s),s->placer_att*.1,0);
multibar_thumb_set(MULTIBAR(p->place_delay->s),s->placer_delay*.01,0);
}
multibar_thumb_set(MULTIBAR(p->place_AB->s),s->placer_place,0);
multibar_thumb_set(MULTIBAR(p->place_atten->s),s->placer_att*.1,0);
multibar_thumb_set(MULTIBAR(p->place_delay->s),s->placer_delay*.01,0);
for(i=0;i<MIX_BLOCKS;i++)
mixblock_state_from_config(bank,s,p,A,i);
......@@ -148,14 +152,17 @@ void mixpanel_state_from_config(int bank){
config_get_vector("mixdown_active",bank,0,0,0,input_ch,mixpanel_active);
for(i=0;i<input_ch;i++){
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(atten_panel.panel->subpanel_activebutton[i]),
mixpanel_active[i]);
if(atten_panel.panel)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(atten_panel.panel->subpanel_activebutton[i]),
mixpanel_active[i]);
config_get_sigat("mixdown_master_attenuate",bank,0,0,0,i,&mix_set[i].master_att);
config_get_sigat("mixdown_master_delay",bank,0,0,0,i,&mix_set[i].master_delay);
multibar_thumb_set(MULTIBAR(atten_panel.att[i]->s),mix_set[i].master_att*.1,0);
multibar_thumb_set(MULTIBAR(atten_panel.del[i]->s),mix_set[i].master_delay*.01,0);
if(atten_panel.att)
multibar_thumb_set(MULTIBAR(atten_panel.att[i]->s),mix_set[i].master_att*.1,0);
if(atten_panel.del)
multibar_thumb_set(MULTIBAR(atten_panel.del[i]->s),mix_set[i].master_delay*.01,0);
mixdown_state_from_config(bank,mix_set+i,mix_panels[i],i);
}
......@@ -527,7 +534,6 @@ void mixpanel_create_channel(postfish_mainpanel *mp,
GtkWidget **windowbutton,
GtkWidget **activebutton){
int i;
mix_panels=malloc(input_ch*sizeof(*mix_panels));
/* a panel for each channel */
for(i=0;i<input_ch;i++){
......
......@@ -70,13 +70,14 @@ void outpanel_state_from_config(int bank){
int i;
config_get_vector("output_active",bank,0,0,0,2,outset.panel_active);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state.monitor_active),outset.panel_active[0]);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state.stdout_active),outset.panel_active[1]);
if(state.monitor_active)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state.monitor_active),outset.panel_active[0]);
if(state.stdout_active)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state.stdout_active),outset.panel_active[1]);
config_get_vector("output_monitor_source",bank,0,0,0,OUTPUT_CHANNELS,outset.monitor.source);
for(i=0;i<OUTPUT_CHANNELS;i++)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state.monitor.source[i]),
outset.monitor.source[i]);
if(state.monitor.source[i])
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state.monitor.source[i]),
outset.monitor.source[i]);
config_get_sigat("output_monitor_set",bank,0,0,0,0,&outset.monitor.device);
......@@ -98,8 +99,9 @@ void outpanel_state_from_config(int bank){
config_get_vector("output_stdout_source",bank,0,0,0,OUTPUT_CHANNELS,outset.stdout.source);
for(i=0;i<OUTPUT_CHANNELS;i++)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state.stdout.source[i]),
outset.stdout.source[i]);
if(state.stdout.source[i])
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(state.stdout.source[i]),
outset.stdout.source[i]);
config_get_sigat("output_stdout_set",bank,0,0,0,0,&outset.stdout.device);
if(state.stdout.device)
......@@ -114,7 +116,6 @@ void outpanel_state_from_config(int bank){
if(state.stdout.format)
gtk_combo_box_set_active(GTK_COMBO_BOX(state.stdout.format),outset.stdout.format);
}
static void menuchange(GtkWidget *w,gpointer in){
......
......@@ -27,3 +27,4 @@ extern void outpanel_create(postfish_mainpanel *mp,
extern void outpanel_state_to_config(int bank);
extern void outpanel_state_from_config(int bank);
extern void output_load(int bank);
......@@ -51,7 +51,7 @@ typedef struct{
} reverb_panel_state;
reverb_panel_state *master_panel;
reverb_panel_state **channel_panel;
reverb_panel_state *channel_panel[MAX_INPUT_CHANNELS];
static void reverbpanel_state_to_config_helper(int bank,reverb_settings *s,int A){
config_set_integer("reverb_active",bank,A,0,0,0,s->active);
......@@ -75,26 +75,25 @@ static void reverbpanel_state_from_config_helper(int bank,reverb_settings *s,
reverb_panel_state *p,int A){
config_get_sigat("reverb_active",bank,A,0,0,0,&s->active);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->panel->subpanel_activebutton[0]),s->active);
if(p)gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p->panel->subpanel_activebutton[0]),s->active);
config_get_sigat("reverb_set",bank,A,0,0,3,&s->roomsize);
multibar_thumb_set(MULTIBAR(p->roomsize->s),s->roomsize,0);
if(p)multibar_thumb_set(MULTIBAR(p->roomsize->s),s->roomsize,0);
config_get_sigat("reverb_set",bank,A,0,0,4,&s->liveness);
multibar_thumb_set(MULTIBAR(p->liveness->s),s->liveness,0);
if(p)multibar_thumb_set(MULTIBAR(p->liveness->s),s->liveness,0);
config_get_sigat("reverb_set",bank,A,0,0,5,&s->wet);
multibar_thumb_set(MULTIBAR(p->wet->s),s->wet,0);
if(p)multibar_thumb_set(MULTIBAR(p->wet->s),s->wet,0);
config_get_sigat("reverb_set",bank,A,0,0,6,&s->width);
multibar_thumb_set(MULTIBAR(p->width->s),s->width,0);
if(p)multibar_thumb_set(MULTIBAR(p->width->s),s->width,0);
config_get_sigat("reverb_set",bank,A,0,0,7,&s->delay);
multibar_thumb_set(MULTIBAR(p->delay->s),s->delay,0);
if(p)multibar_thumb_set(MULTIBAR(p->delay->s),s->delay,0);
config_get_sigat("reverb_set",bank,A,0,0,8,&s->hfdamp);
multibar_thumb_set(MULTIBAR(p->hfdamp->s),s->hfdamp,0);
if(p)multibar_thumb_set(MULTIBAR(p->hfdamp->s),s->hfdamp,0);
}
......@@ -282,8 +281,6 @@ void reverbpanel_create_channel(postfish_mainpanel *mp,
GtkWidget **activebutton){
int i;
/* a panel for each channel */
channel_panel=calloc(input_ch,sizeof(*channel_panel));
for(i=0;i<input_ch;i++){
subpanel_generic *panel;
char buffer[80];
......
......@@ -84,7 +84,7 @@ typedef struct singlecomp_panel_state{
} singlecomp_panel_state;