diff -urN midi_prog-/Makefile midi_prog/Makefile --- midi_prog-/Makefile Sat Apr 26 23:00:00 2014 +++ midi_prog/Makefile Sun Apr 27 22:00:00 2014 @@ -1,6 +1,6 @@ CC = gcc LIB = -lm -lpthread -L../cui -lcui -TARG = prog36 +TARG = prog37 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 Sat Apr 26 23:30:00 2014 +++ midi_prog/cui_tone.c Sun Apr 27 22:00:00 2014 @@ -38,6 +38,32 @@ cui Q1 = cui_name_child(sheet, "Q1"); cui Q2 = cui_name_child(sheet, "Q2"); + cui attack = cui_name_child(sheet, "attack"); + cui decay = cui_name_child(sheet, "decay"); + cui sustain = cui_name_child(sheet, "sustain"); + cui release = cui_name_child(sheet, "release"); + + cui level = cui_name_child(sheet, "level"); + + cui lfo_mp1 = cui_name_child(sheet, "lfo_mp1"); + cui lfo_mp2 = cui_name_child(sheet, "lfo_mp2"); + cui lfo_mf1 = cui_name_child(sheet, "lfo_mf1"); + cui lfo_mf2 = cui_name_child(sheet, "lfo_mf2"); + + cui lfo_wave = cui_name_child(sheet, "lfo_wave"); + cui lfo_freq = cui_name_child(sheet, "lfo_freq"); + cui lfo_delay = cui_name_child(sheet, "lfo_delay"); + + cui env_mp1 = cui_name_child(sheet, "env_mp1"); + cui env_mp2 = cui_name_child(sheet, "env_mp2"); + cui env_mf1 = cui_name_child(sheet, "env_mf1"); + cui env_mf2 = cui_name_child(sheet, "env_mf2"); + + cui delay = cui_name_child(sheet, "delay"); + cui delay_sec = cui_name_child(sheet, "delay_sec"); + cui delay_gain = cui_name_child(sheet, "delay_gain"); + cui chorus = cui_name_child(sheet, "chorus"); + i = cui_menu_int_get(tone_i); tr = tcr[i].tone; @@ -53,6 +79,32 @@ cui_num_dbl_vp_set(freq2, &tr->fl2.freq); cui_num_dbl_vp_set(Q2, &tr->fl2.Q); + cui_num_dbl_vp_set(attack, &tr->env.attack); + cui_num_dbl_vp_set(decay, &tr->env.decay); + cui_num_dbl_vp_set(sustain, &tr->env.sustain); + cui_num_dbl_vp_set(release, &tr->env.release); + + cui_num_dbl_vp_set(level, &tr->level); + + cui_num_vp_set(lfo_mp1, &tr->lfo_modu.pitch1); + cui_num_vp_set(lfo_mp2, &tr->lfo_modu.pitch2); + cui_num_vp_set(lfo_mf1, &tr->lfo_modu.filter1); + cui_num_vp_set(lfo_mf2, &tr->lfo_modu.filter2); + + cui_menu_popup_vp_set(lfo_wave, &tr->lfo.wave); + cui_num_dbl_vp_set(lfo_freq, &tr->lfo.freq); + cui_num_dbl_vp_set(lfo_delay, &tr->lfo.delay); + + cui_num_vp_set(env_mp1, &tr->env_modu.pitch1); + cui_num_vp_set(env_mp2, &tr->env_modu.pitch2); + cui_num_vp_set(env_mf1, &tr->env_modu.filter1); + cui_num_vp_set(env_mf2, &tr->env_modu.filter2); + + cui_menu_popup_vp_set(delay, &tr->delay.onoff); + cui_num_dbl_vp_set(delay_sec, &tr->delay.sec); + cui_num_dbl_vp_set(delay_gain, &tr->delay.gain); + cui_menu_popup_vp_set(chorus, &tr->chorus); + return TRUE; } @@ -98,12 +150,14 @@ char **av = (char **)arg; int init_ret = cui_init(av); - cui root = cui_scpanel_new(NULL, 0, 0, 44, 14, "cui_tone"); + cui root = cui_scpanel_new(NULL, 0, 0, 44, 20, "cui_tone"); cui sheet = cui_scpanel_sheet_get(root); - cui ch, note, bs_ch, note_i, bs_vco, bs_filt; + cui ch, note, bs_ch, note_i, bs_vco, bs_filt, bs_env; + cui bs_lfo_modu, bs_lfo, bs_env_modu, bs_delay; char *wave_lst[] = { "sin", "saw", "square", "noise", NULL }; char *filt_lst[] = { "OFF", "LPF", "HPF", "BPF", NULL }; + char *onoff_lst[] = { "OFF", "ON", NULL }; ch = cui_menu_int_new(sheet, 0, 0, 2+1, 0, 0, 15); cui_wlb_name_new(sheet, "ch ", "ch", NULL); @@ -122,8 +176,7 @@ /* vco */ - bs_vco = cui_base_new(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0); - bs_vco->name = "bs_vco"; + bs_vco = cui_title_panel_new_sheet(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0, " VCO "); cui_menu_popup_new(bs_vco, 0, 0, -1, wave_lst, 0); cui_wlb_name_new(bs_vco, "wave1 ", "wave1", NULL); @@ -141,8 +194,7 @@ /* filt */ - bs_filt = cui_base_new(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0); - bs_filt->name = "bs_filt"; + bs_filt = cui_title_panel_new_sheet(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0, " Filter "); cui_menu_popup_new(bs_filt, 0, 0, -1, filt_lst, 0); cui_wlb_name_new(bs_filt, "filter1 ", "filt1", NULL); @@ -166,9 +218,101 @@ cui_wh_fit(bs_filt); + /* env */ + + bs_env = cui_title_panel_new_sheet(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0, " ENV "); + + cui_num_dbl_new(bs_env, 0, 0, 5+3, 0, 0, 10, 0.01, 0); + cui_wlb_name_new(bs_env, "attack ", "attack", " sec"); + + cui_num_dbl_new(bs_env, CUI_CHILD_X, CUI_CHILD_Y2, 5+3, 0, 0, 10, 0.01, 0); + cui_wlb_name_new(bs_env, "decay ", "decay", " sec"); + + cui_num_dbl_new(bs_env, CUI_CHILD_X, CUI_CHILD_Y2, 5+3, 0, 0, 1, 0.01, 0); + cui_wlb_name_new(bs_env, "sustain ", "sustain", " (0..1)"); + + cui_num_dbl_new(bs_env, CUI_CHILD_X, CUI_CHILD_Y2, 5+3, 0, 0, 10, 0.01, 0); + cui_wlb_name_new(bs_env, "release ", "release", " sec"); + + cui_wh_fit(bs_env); + + cui_num_dbl_new(bs_ch, 0, CUI_CHILD_Y2+1, 5+3, 0, 0, 10, 0.01, 0); + cui_wlb_name_new(bs_ch, "level ", "level", NULL); + + /* lfo modu */ + + bs_lfo_modu = cui_title_panel_new_sheet(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0, " LFO modu "); + + cui_num_new(bs_lfo_modu, 0, 0, 6+3, 0, -24000, 24000, 0); + cui_wlb_name_new(bs_lfo_modu, "pitch1 ", "lfo_mp1", " cent"); + + cui_num_new(bs_lfo_modu, CUI_CHILD_X2+2, CUI_CHILD_Y, 6+3, 0, -24000, 24000, 0); + cui_wlb_name_new(bs_lfo_modu, "pitch2 ", "lfo_mp2", " cent"); + + cui_num_new(bs_lfo_modu, 0, CUI_CHILD_Y2, 6+3, 0, -24000, 24000, 0); + cui_wlb_name_new(bs_lfo_modu, "filter1 ", "lfo_mf1", " cent"); + + cui_num_new(bs_lfo_modu, CUI_CHILD_X2+2, CUI_CHILD_Y, 6+3, 0, -24000, 24000, 0); + cui_wlb_name_new(bs_lfo_modu, "filter2 ", "lfo_mf2", " cent"); + + cui_wh_fit(bs_lfo_modu); + + /* lfo */ + + bs_lfo = cui_title_panel_new_sheet(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0, " LFO "); + + cui_menu_popup_new(bs_lfo, 0, 0, -1, wave_lst, 0); + cui_wlb_name_new(bs_lfo, "wave ", "lfo_wave", NULL); + + cui_num_dbl_new(bs_lfo, CUI_CHILD_X2+2, CUI_CHILD_Y, 7+3, 4, 0, 20000, 0.1, 0); + cui_wlb_name_new(bs_lfo, "freq ", "lfo_freq", " Hz"); + + cui_num_dbl_new(bs_lfo, CUI_CHILD_X2+2, CUI_CHILD_Y, 4+3, 0, 0, 10, 0.1, 0); + cui_wlb_name_new(bs_lfo, "delay ", "lfo_delay", " sec"); + + cui_wh_fit(bs_lfo); + + /* env modu */ + + bs_env_modu = cui_title_panel_new_sheet(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0, " ENV modu "); + + cui_num_new(bs_env_modu, 0, 0, 6+3, 0, -24000, 24000, 0); + cui_wlb_name_new(bs_env_modu, "pitch1 ", "env_mp1", " cent"); + + cui_num_new(bs_env_modu, CUI_CHILD_X2+2, CUI_CHILD_Y, 6+3, 0, -24000, 24000, 0); + cui_wlb_name_new(bs_env_modu, "pitch2 ", "env_mp2", " cent"); + + cui_num_new(bs_env_modu, 0, CUI_CHILD_Y2, 6+3, 0, -24000, 24000, 0); + cui_wlb_name_new(bs_env_modu, "filter1 ", "env_mf1", " cent"); + + cui_num_new(bs_env_modu, CUI_CHILD_X2+2, CUI_CHILD_Y, 6+3, 0, -24000, 24000, 0); + cui_wlb_name_new(bs_env_modu, "filter2 ", "env_mf2", " cent"); + + cui_wh_fit(bs_env_modu); + + /* delay */ + + bs_delay = cui_title_panel_new_sheet(bs_ch, 0, CUI_CHILD_Y2+1, 0, 0, " delay "); + + cui_menu_popup_new(bs_delay, 0, 0, -1, onoff_lst, 0); + cui_wlb_name_new(bs_delay, NULL, "delay", NULL); + + cui_num_dbl_new(bs_delay, CUI_CHILD_X2+2, CUI_CHILD_Y, 4+3, 0, 0, 10, 0.1, 0); + cui_wlb_name_new(bs_delay, NULL, "delay_sec", " sec"); + + cui_num_dbl_new(bs_delay, CUI_CHILD_X2+2, CUI_CHILD_Y, 4+3, 0, 0, 10, 0.1, 0); + cui_wlb_name_new(bs_delay, "gain ", "delay_gain", NULL); + + cui_wh_fit(bs_delay); + + cui_menu_popup_new(bs_ch, 0, CUI_CHILD_Y2+1, -1, onoff_lst, 0); + cui_wlb_name_new(bs_ch, "chorus ", "chorus", NULL); + cui_hide(bs_ch); cui_wh_fit(bs_ch); cui_wh_fit(sheet); + + cui_wh_set(root, sheet->w+2, sheet->h+2); cui_bind(ch, CUI_EVT_BUTTON, ch_note_hdr, sheet); cui_bind(note, CUI_EVT_BUTTON, ch_note_hdr, sheet);