diff -urN midi_prog-/Makefile midi_prog/Makefile --- midi_prog-/Makefile 2014-04-23 23:30:00.000000000 +0900 +++ midi_prog/Makefile 2014-04-24 01:00:00.000000000 +0900 @@ -1,6 +1,6 @@ CC = gcc LIB = -lm -lpthread -L../cui -lcui -TARG = prog32 +TARG = prog33 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 += pth.o CFLAGS += -Wall -I.. diff -urN midi_prog-/main.c midi_prog/main.c --- midi_prog-/main.c 2014-04-23 23:30:00.000000000 +0900 +++ midi_prog/main.c 2014-04-24 01:00:00.000000000 +0900 @@ -76,8 +76,6 @@ double tempo_sec; pthread_t pth; - if(pthread_create(&pth, NULL, pth_func, av)) ERR("pthrad_create"); - out_init(&otr, ac, av); note_buf_init(); stat_buf_init(); @@ -89,6 +87,9 @@ ch_inf[i].bend_range = 2; ch_inf[i].prog =-1; } + + if(pthread_create(&pth, NULL, pth_func, av)) ERR("pthrad_create"); + tempo = 500000; tempo_delta_sum = 0; tempo_sec = 0; diff -urN midi_prog-/pth.c midi_prog/pth.c --- midi_prog-/pth.c 2014-04-23 23:30:00.000000000 +0900 +++ midi_prog/pth.c 2014-04-24 01:00:00.000000000 +0900 @@ -7,20 +7,24 @@ #include "tone.h" static int -hdr(cui obj, int evt, int val, void *prm) +hdr(cui ch, int evt, int val, void *prm) { + /* CUI_EVT_BUTTON */ + cui sheet = (cui)prm; + cui bs_ch = cui_index_to_child(sheet, 2); + cui wave1 = cui_index_to_child(bs_ch, 0); + cui wave2 = cui_index_to_child(bs_ch, 1); int n; - struct tone_compo_rec *tcr = tone_compo_get(0, 69, &n); - struct tone_rec *tr = tcr[0].tone; - cui wave1 = cui_index_to_child(sheet, 1); - cui wave2 = cui_index_to_child(sheet, 2); - if(wave1->flags & CUI_FLG_HIDE){ - cui_menu_popup_vp_set(wave1, &tr->vco.wave1); - cui_show(wave1); - cui_menu_popup_vp_set(wave2, &tr->vco.wave2); - cui_show(wave2); - } + struct tone_compo_rec *tcr = tone_compo_get(val, -1, &n); + struct tone_rec *tr; + + cui_show_hide(bs_ch, tcr != NULL); + if(tcr == NULL) return TRUE; + + tr = tcr[0].tone; + cui_menu_popup_vp_set(wave1, &tr->vco.wave1); + cui_menu_popup_vp_set(wave2, &tr->vco.wave2); return TRUE; } @@ -32,15 +36,20 @@ cui root = cui_scpanel_new(NULL, 0, 0, 20, 8, "cui_tone"); cui sheet = cui_scpanel_sheet_get(root); - cui update = cui_button_new(sheet, 0, 0, "update"); + cui lb = cui_label_new(sheet, 0, 0, "ch"); + cui ch = cui_menu_int_new(sheet, cui_x2(lb)+1, lb->y, 2+1, 0, 0, 15); + + cui bs_ch = cui_base_new(sheet, 0, cui_y2(ch)+1, 0, 0); char *lst[] = { "sin", "saw", "square", "noise", NULL }; - cui wave1 = cui_menu_popup_new(sheet, 0, 1, 6+1, lst, 0); - cui wave2 = cui_menu_popup_new(sheet, 0, 2, 6+1, lst, 0); + + cui_menu_popup_new(bs_ch, 0, 0, 6+1, lst, 0); + cui_menu_popup_new(bs_ch, 0, 1, 6+1, lst, 0); - cui_hide(wave1); - cui_hide(wave2); - cui_bind(update, CUI_EVT_BUTTON, hdr, sheet); + cui_hide(bs_ch); + cui_wh_fit(bs_ch); cui_wh_fit(sheet); + cui_bind(ch, CUI_EVT_BUTTON, hdr, sheet); + cui_handler_call(ch, CUI_EVT_BUTTON, 0); cui_main(root, NULL);