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);