diff -urN midi_prog-/Makefile midi_prog/Makefile --- midi_prog-/Makefile Fri Apr 25 22:00:00 2014 +++ midi_prog/Makefile Sat Apr 26 23:00:00 2014 @@ -1,6 +1,6 @@ CC = gcc LIB = -lm -lpthread -L../cui -lcui -TARG = prog35 +TARG = prog36 OBJS = main.o vcf.o ch.o delay.o stat.o note.o env.o tone.o filter.o lfo.o modu.o vco.o wave.o out.o rd.o util.o OBJS += cui_tone.o CFLAGS += -Wall -I.. diff -urN midi_prog-/cui_tone.c midi_prog/cui_tone.c --- midi_prog-/cui_tone.c Fri Apr 25 22:00:00 2014 +++ midi_prog/cui_tone.c Sat Apr 26 23:30:00 2014 @@ -21,16 +21,22 @@ int ch_v = cui_menu_int_get(ch); cui note = cui_name_child(sheet, "note"); int note_v = cui_num_get(note); - cui bs_ch = cui_name_child(sheet, "bs_ch"); - cui tone_i = cui_name_child(bs_ch, "tone_i"); + cui tone_i = cui_name_child(sheet, "tone_i"); int i, n; struct tone_compo_rec *tcr = tone_compo_get(ch_v, note_v, &n); struct tone_rec *tr; - cui bs_vco = cui_name_child(bs_ch, "bs_vco"); - cui wave1 = cui_name_child(bs_vco, "wave1"); - cui wave2 = cui_name_child(bs_vco, "wave2"); - cui tune = cui_name_child(bs_vco, "tune"); - cui mix = cui_name_child(bs_vco, "mix"); + + cui wave1 = cui_name_child(sheet, "wave1"); + cui wave2 = cui_name_child(sheet, "wave2"); + cui tune = cui_name_child(sheet, "tune"); + cui mix = cui_name_child(sheet, "mix"); + + cui filt1 = cui_name_child(sheet, "filt1"); + cui filt2 = cui_name_child(sheet, "filt2"); + cui freq1 = cui_name_child(sheet, "freq1"); + cui freq2 = cui_name_child(sheet, "freq2"); + cui Q1 = cui_name_child(sheet, "Q1"); + cui Q2 = cui_name_child(sheet, "Q2"); i = cui_menu_int_get(tone_i); tr = tcr[i].tone; @@ -40,6 +46,13 @@ cui_num_vp_set(tune, &tr->vco.tune); cui_num_dbl_vp_set(mix, &tr->vco.mix); + cui_menu_popup_vp_set(filt1, &tr->fl1.type); + cui_num_dbl_vp_set(freq1, &tr->fl1.freq); + cui_num_dbl_vp_set(Q1, &tr->fl1.Q); + cui_menu_popup_vp_set(filt2, &tr->fl2.type); + cui_num_dbl_vp_set(freq2, &tr->fl2.freq); + cui_num_dbl_vp_set(Q2, &tr->fl2.Q); + return TRUE; } @@ -54,18 +67,18 @@ cui note = cui_name_child(sheet, "note"); int note_v = cui_num_get(note); cui bs_ch = cui_name_child(sheet, "bs_ch"); - cui prog = cui_name_child(bs_ch, "prog"); + cui prog = cui_name_child(sheet, "prog"); static char prog_buf[16]; - cui tone_n = cui_name_child(bs_ch, "tone_n"); + cui tone_n = cui_name_child(sheet, "tone_n"); static char tone_n_buf[16]; - cui tone_i = cui_name_child(bs_ch, "tone_i"); + cui tone_i = cui_name_child(sheet, "tone_i"); int i, n; struct tone_compo_rec *tcr = tone_compo_get(ch_v, note_v, &n); cui_show_hide(bs_ch, tcr != NULL); if(tcr == NULL) return TRUE; - sprintf(prog_buf, "prog=%d", CH_PROG(val)); + sprintf(prog_buf, "prog=%d", CH_PROG(ch_v)); cui_label_str_set(prog, prog_buf); sprintf(tone_n_buf, "tone_n=%d", n); @@ -85,16 +98,17 @@ char **av = (char **)arg; int init_ret = cui_init(av); - cui root = cui_scpanel_new(NULL, 0, 0, 40, 8, "cui_tone"); + cui root = cui_scpanel_new(NULL, 0, 0, 44, 14, "cui_tone"); cui sheet = cui_scpanel_sheet_get(root); - cui ch, note, bs_ch, note_i, bs_vco; + cui ch, note, bs_ch, note_i, bs_vco, bs_filt; char *wave_lst[] = { "sin", "saw", "square", "noise", NULL }; + char *filt_lst[] = { "OFF", "LPF", "HPF", "BPF", NULL }; ch = cui_menu_int_new(sheet, 0, 0, 2+1, 0, 0, 15); cui_wlb_name_new(sheet, "ch ", "ch", NULL); - note = cui_num_new(sheet, CUI_CHILD_X2+1, CUI_CHILD_Y, 3+3, 69, 0, 127, -1); + note = cui_num_new(sheet, CUI_CHILD_X2+1, CUI_CHILD_Y, 3+3, 69, 0, 127, 0); cui_wlb_name_new(sheet, "note ", "note", NULL); bs_ch = cui_base_new(sheet, 0, CUI_CHILD_Y2+1, 0, 0); @@ -106,7 +120,9 @@ note_i = cui_menu_int_new(bs_ch, CUI_CHILD_X2+1, CUI_CHILD_Y, 2+1, 0, 0, 0); cui_wlb_name_new(bs_ch, "idx ", "tone_i", NULL); - bs_vco = cui_base_new(bs_ch, 0, CUI_CHILD_Y2, 0, 0); + /* vco */ + + bs_vco = cui_base_new(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0); bs_vco->name = "bs_vco"; cui_menu_popup_new(bs_vco, 0, 0, -1, wave_lst, 0); @@ -115,13 +131,41 @@ cui_menu_popup_new(bs_vco, CUI_CHILD_X2+3, CUI_CHILD_Y, -1, wave_lst, 0); cui_wlb_name_new(bs_vco, "wave2 ", "wave2", NULL); - cui_num_new(bs_vco, CUI_CHILD_X, CUI_CHILD_Y2, 6+3, 0, -24000, 24000, -1); + cui_num_new(bs_vco, CUI_CHILD_X, CUI_CHILD_Y2, 6+3, 0, -24000, 24000, 0); cui_wlb_name_new(bs_vco, "tune ", "tune", " cent"); - cui_num_dbl_new(bs_vco, CUI_CHILD_X, CUI_CHILD_Y2, 4+3, 0, 0, 1, 0.01, -1); + cui_num_dbl_new(bs_vco, CUI_CHILD_X, CUI_CHILD_Y2, 4+3, 0, 0, 1, 0.01, 0); cui_wlb_name_new(bs_vco, "mix ", "mix", NULL); cui_wh_fit(bs_vco); + + /* filt */ + + bs_filt = cui_base_new(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0); + bs_filt->name = "bs_filt"; + + cui_menu_popup_new(bs_filt, 0, 0, -1, filt_lst, 0); + cui_wlb_name_new(bs_filt, "filter1 ", "filt1", NULL); + + cui_num_dbl_new(bs_filt, CUI_CHILD_X, CUI_CHILD_Y2, 7+3, 3000, 20, 20000, 0.1, 0); + cui_wlb_name_new(bs_filt, "freq1 ", "freq1", " Hz"); + + cui_num_dbl_new(bs_filt, CUI_CHILD_X, CUI_CHILD_Y2, 5+3, 1, 0, 10, 0.01, 0); + cui_wlb_name_new(bs_filt, "reso1 (Q1) ", "Q1", NULL); + + cui_wh_fit(bs_filt); + + cui_menu_popup_new(bs_filt, bs_filt->w+2, 0, -1, filt_lst, 0); + cui_wlb_name_new(bs_filt, "filter2 ", "filt2", NULL); + + cui_num_dbl_new(bs_filt, CUI_CHILD_X, CUI_CHILD_Y2, 7+3, 3000, 20, 20000, 0.1, 0); + cui_wlb_name_new(bs_filt, "freq2 ", "freq2", " Hz"); + + cui_num_dbl_new(bs_filt, CUI_CHILD_X, CUI_CHILD_Y2, 5+3, 1, 0, 10, 0.01, 0); + cui_wlb_name_new(bs_filt, "reso2 (Q2) ", "Q2", NULL); + + cui_wh_fit(bs_filt); + cui_hide(bs_ch); cui_wh_fit(bs_ch); cui_wh_fit(sheet);