--- cui_midi.c- Sun Apr 20 22:00:00 2014 +++ cui_midi.c Tue Apr 22 00:00:00 2014 @@ -10,35 +10,7 @@ #include "cui/menu.h" #include "cui/num.h" #include "cui/tab.h" - -typedef struct hex_in{ - struct cui_base base; - cui mu, ml; -} *hex_in; - -cui -hex_in_new(cui parent, int x, int y, int v) -{ - cui obj = cui_alloc(sizeof(struct hex_in)); - hex_in p = (hex_in)obj; - char *lst[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", NULL}; - int w = 3; - - cui_base_init(obj, parent, x, y, 0, 0); - p->mu = cui_menu_popup_new(obj, 0, 0, w, lst, (v>>8)&15); - p->ml = cui_menu_popup_new(obj, cui_x2(p->mu)+1, 0, w, lst, v&15); - cui_wh_fit(obj); - return obj; -} - -int -hex_in_get(cui obj) -{ - hex_in p = (hex_in)obj; - cui_menu_popup pu = (cui_menu_popup)p->mu; - cui_menu_popup pl = (cui_menu_popup)p->ml; - return (pu->val << 4) | pl->val; -} +#include "cui/kbd.h" FILE *fp = NULL; #define BUFN 4096 @@ -95,434 +67,6 @@ wrt(); } -int -btn_hdr(cui obj, int evt, int val, void *prm) -{ - /* CUI_EVT_BUTTON */ - - char *s = cui_button_str_get(obj); - cui *prm_arr = (cui *)prm; - cui hxi = prm_arr[0]; - cui lb = prm_arr[1]; - char *lb_buf = cui_label_str_get(lb); - - if(strcmp(s, "Add") == 0){ - int v = hex_in_get(hxi); - set_char(v); - sprintf(lb_buf + strlen(lb_buf), "%02x ", v); - cui_label_str_set(lb, lb_buf); - return TRUE; - } - if(strcmp(s, "Out") == 0){ - wrt(); - lb_buf[0] = '\0'; - cui_label_str_set(lb, lb_buf); - return TRUE; - } - return FALSE; -} - -struct test2{ - cui lb_ch, mn_ch; - cui lb_prog, prog, prog_out; - cui lb_vol, vol, vol_out; - cui lb_onoff, mn_note, lb_note_num, note_num, lb_velo, velo, note_out; - cui bs_note_len; - cui lb_note_len, note_len, lb_ms; -}; - -static int -num_get(cui obj) -{ - cui_num p = (cui_num)obj; - return p->v; -} - -int -t2_btn_hdr(cui obj, int evt, int val, void *prm) -{ - /* CUI_EVT_BUTTON */ - - struct test2 *p = (struct test2 *)prm; - int ch = ((cui_menu_popup)p->mn_ch)->val; - - if(obj == p->prog_out){ - set_char2_wrt((0xc<<4) | ch, num_get(p->prog)); - return TRUE; - }else if(obj == p->vol_out){ - set_char3_wrt((0xb<<4) | ch, 7 /* vol msb */, num_get(p->vol)); - return TRUE; - }else if(obj == p->note_out){ - char *s = cui_menu_popup_str_get(p->mn_note); - int note_num = num_get(p->note_num); - int velo = num_get(p->velo); - if(strcmp(s, "on") == 0){ - set_char3_wrt((9<<4) | ch, note_num, velo); - return TRUE; - }else if(strcmp(s, "off") == 0){ - set_char3_wrt((8<<4) | ch, note_num, velo); - return TRUE; - }else if(strcmp(s, "on/off") == 0){ - int msec = num_get(p->note_len); - set_char3_wrt((9<<4) | ch, note_num, velo); - usleep(msec * 1000); - set_char3_wrt((8<<4) | ch, note_num, velo); - return TRUE; - } - }else if(obj == p->mn_note){ - char *s = cui_menu_popup_str_get(p->mn_note); - if(strcmp(s, "on/off") == 0) cui_show(p->bs_note_len); - else cui_hide(p->bs_note_len); - return TRUE; - } - return FALSE; -} - -struct test3_ch{ - int prog, vol; - int note, note_num, velo, note_len; -}; - -struct test3{ - cui mn_ch, prog, vol; - cui mn_note, note_num, velo, note_out; - cui bs_note_len, note_len; - - int midi_ch; - struct test3_ch ch[16]; -}; - -int -t3_btn_hdr(cui obj, int evt, int val, void *prm) -{ - /* CUI_EVT_BUTTON */ - - struct test3 *p = (struct test3 *)prm; - struct test3_ch *ch = &p->ch[ p->midi_ch ]; - - if(obj == p->mn_ch){ - cui_num_vp_set(p->prog, &ch->prog); - cui_num_vp_set(p->vol, &ch->vol); - cui_menu_popup_set(p->mn_note, ch->note); /* ! */ - cui_handler_call(p->mn_note, CUI_EVT_BUTTON, ch->note); /* ! */ - cui_num_vp_set(p->note_num, &ch->note_num); - cui_num_vp_set(p->velo, &ch->velo); - cui_num_vp_set(p->note_len, &ch->note_len); - }else if(obj == p->prog){ - set_char2_wrt((0xc<<4) | p->midi_ch, ch->prog); - }else if(obj == p->vol){ - set_char3_wrt((0xb<<4) | p->midi_ch, 7 /* vol msb */, ch->vol); - }else if(obj == p->mn_note){ /* ! */ - char *s = cui_menu_popup_str_get(p->mn_note); - if(strcmp(s, "on/off") == 0) cui_show(p->bs_note_len); - else cui_hide(p->bs_note_len); - ch->note = cui_menu_popup_get(p->mn_note); - }else if(obj == p->note_out){ - char *s = cui_menu_popup_str_get(p->mn_note); - if(strcmp(s, "on") == 0){ - set_char3_wrt((9<<4) | p->midi_ch, ch->note_num, ch->velo); - }else if(strcmp(s, "off") == 0){ - set_char3_wrt((8<<4) | p->midi_ch, ch->note_num, ch->velo); - }else if(strcmp(s, "on/off") == 0){ - set_char3_wrt((9<<4) | p->midi_ch, ch->note_num, ch->velo); - usleep(ch->note_len * 1000); - set_char3_wrt((8<<4) | p->midi_ch, ch->note_num, ch->velo); - }else return FALSE; - }else return FALSE; - return TRUE; -} - -/**/ - -typedef struct cui_kbd{ - struct cui_base base; - int v[128]; - int play_mode; - int cursor; - cui sheet; - - cui oct, name, note_no, freq; -} *cui_kbd; - -cui cui_kbd_new(cui parent, int x, int y, int w); -void cui_kbd_init(cui obj, cui parent, int x, int y, int w); -int cui_kbd_hdr(cui obj, int evt, int val, void *prm); -void cui_kbd_set(cui obj, int note, int v); -void cui_kbd_cursor_set(cui obj, int note); -int cui_kbd_cursor_get(cui obj); - - -#include "cui/key.h" - -static int -kbd_note_x(int note) -{ - int i = note % 12; - int o = note / 12; - return o * 14 + i + (i >= 5); -} - -static int -kbd_x_note(int x) -{ - int o = x / 14; - int i = x % 14; - if(i == 5 || i == 13) return -1; - return o * 12 + i - (i >= 5); -} - -cui -cui_kbd_new(cui parent, int x, int y, int w) -{ - cui obj = cui_alloc(sizeof(struct cui_kbd)); - cui_kbd_init(obj, parent, x, y, w); - return obj; -} - -void -cui_kbd_init(cui obj, cui parent, int x, int y, int w) -{ - cui_kbd p = (cui_kbd)obj; - int i; - char *name_lst[] = { "G#", "G", "F#", "F", "E", "D#", "D", "C#", "C", "B", "A#", "A", NULL }; - - cui_base_init(obj, parent, x, y, w, 3); - p->sheet = cui_base_new(obj, 0, 1, kbd_note_x(128), 2); - - obj->flags |= CUI_FLG_CAN_FOCUS; - for(i=0; i<128; i++) p->v[i] = FALSE; - p->play_mode = FALSE; - p->cursor = 69; - cui_x_set(p->sheet, -kbd_note_x(p->cursor)); - - cui_bind(obj, CUI_EVT_DRAW | CUI_EVT_KEY, cui_kbd_hdr, NULL); - - p->oct = cui_menu_int_new(obj, 0, 0, 2+1, 5, -1, 9); - p->name = cui_menu_popup_new(obj, cui_x2(p->oct), 0, 2+1, name_lst, 11); - p->note_no = cui_num_new(obj, cui_x2(p->name)+2, 0, 3+3, 69, 0, 127, 0); - p->freq = cui_num_dbl_new(obj, cui_x2(p->note_no)+2, 0, 7+3, 440.0, 8.2, 12543.9, 0.1, 0); - - cui_bind(p->oct, CUI_EVT_BUTTON, cui_kbd_hdr, obj); - cui_bind(p->name, CUI_EVT_BUTTON, cui_kbd_hdr, obj); - cui_bind(p->note_no, CUI_EVT_BUTTON, cui_kbd_hdr, obj); - cui_bind(p->freq, CUI_EVT_BUTTON, cui_kbd_hdr, obj); -} - -static void -kbd_draw_x_char_attr(cui obj, int fc, int x, char *c_u, int *a_u, char *c_l, int *a_l) -{ - cui_kbd p = (cui_kbd)obj; - int note = kbd_x_note(x); - int blk = x & 1; - *c_u = note < 0 ? '|' : ' '; - *a_u = note >= 0 && blk ? CUI_ATTR_REVERSE : CUI_ATTR_NORMAL; - *c_l = blk ? '|' : ' '; - *a_l = CUI_ATTR_NORMAL; - - if(p->play_mode) *a_l |= CUI_ATTR_ULINE; - if(note == p->cursor){ - if(blk) *c_l = '^'; - else *a_u |= CUI_ATTR_ULINE; - } - if(note >= 0 && p->v[note]){ - if(blk) *c_u = 'o'; - else *c_l = 'o'; - } - if(!p->play_mode && fc){ - *a_u ^= CUI_ATTR_REVERSE; - *a_l ^= CUI_ATTR_REVERSE; - } -} - -static void -kbd_draw_x(cui obj, int fc, int x) -{ - cui_kbd p = (cui_kbd)obj; - char c_u, c_l; - int a_u, a_l; - char buf[2]; - buf[1] = '\0'; - - kbd_draw_x_char_attr(obj, fc, x, &c_u, &a_u, &c_l, &a_l); - - buf[0] = c_u; - cui_draw_str(p->sheet, x, 0, buf, a_u); - - buf[0] = c_l; - cui_draw_str(p->sheet, x, 1, buf, a_l); -} - -static void -kbd_draw_note(cui obj, int fc, int note) -{ - kbd_draw_x(obj, fc, kbd_note_x(note)); -} - -static void -kbd_draw(cui obj, int fc) -{ - cui_kbd p = (cui_kbd)obj; - int x; - for(x=0; xsheet->w; x++) kbd_draw_x(obj, fc, x); -} - -int -cui_kbd_hdr(cui obj, int evt, int val, void *prm) -{ - cui ev_obj = obj; - cui_kbd p = (cui_kbd)obj; - - switch(evt){ - case CUI_EVT_DRAW: - kbd_draw(obj, val == CUI_DRAW_FOCUS); - break; - case CUI_EVT_KEY: - if(!p->play_mode){ - if(val == CUI_KEY_ENTER){ - p->play_mode = TRUE; - cui_draw(obj); - return TRUE; - } - return FALSE; - } - /* play_mode */ - switch(val){ - case CUI_KEY_ENTER: - p->play_mode = FALSE; - cui_draw(obj); - break; - case CUI_KEY_LEFT: - if(p->cursor > 0){ - int mv = -( p->sheet->x + kbd_note_x(p->cursor - 1) ); - if(mv > 0){ - cui_x_set(p->sheet, p->sheet->x + mv); - cui_draw(obj); - } - kbd_draw_note(obj, FALSE, p->cursor--); - kbd_draw_note(obj, FALSE, p->cursor); - cui_num_set(p->note_no, p->cursor); - cui_handler_call(p->note_no, CUI_EVT_BUTTON, p->cursor); - } - break; - case CUI_KEY_RIGHT: - if(p->cursor < 127){ - int mv = p->sheet->x + kbd_note_x(p->cursor + 1) - (obj->w - 1); - if(mv > 0){ - cui_x_set(p->sheet, p->sheet->x - mv); - cui_draw(obj); - } - kbd_draw_note(obj, FALSE, p->cursor++); - kbd_draw_note(obj, FALSE, p->cursor); - cui_num_set(p->note_no, p->cursor); - cui_handler_call(p->note_no, CUI_EVT_BUTTON, p->cursor); - } - break; - case CUI_KEY_UP: - if(p->v[ p->cursor ]){ - p->v[ p->cursor ] = FALSE; - kbd_draw_note(obj, FALSE, p->cursor); - cui_handler_call(obj, CUI_EVT_BUTTON, p->cursor); - } - break; - case CUI_KEY_DOWN: - if(!p->v[ p->cursor ]){ - p->v[ p->cursor ] = TRUE; - kbd_draw_note(obj, FALSE, p->cursor); - cui_handler_call(obj, CUI_EVT_BUTTON, p->cursor | 0x100); /* ON flag */ - } - break; - } - return TRUE; - case CUI_EVT_BUTTON: - obj = (cui)prm; - p = (cui_kbd)obj; - - if(ev_obj == p->note_no){ - int note = val; - int oct_v = (note - 9 + 12) / 12 - 1; - int name_v = (note - 9) % 12; - double fq = 440 * pow(2, (note - 69) / 12.0); - - if(cui_menu_int_get(p->oct) != oct_v) cui_menu_int_set(p->oct, oct_v); - if(cui_menu_popup_get(p->name) != 11-name_v) cui_menu_popup_set(p->name, 11-name_v); - if(cui_num_dbl_get(p->freq) != fq) cui_num_dbl_set(p->freq, fq); - if(cui_kbd_cursor_get(obj) != note) cui_kbd_cursor_set(obj, note); - }else if(ev_obj == p->oct){ - int oct_v = val; - int name_v = 11 - cui_menu_popup_get(p->name); - int note = oct_v * 12 + name_v + 9; - if(cui_num_get(p->note_no) != note){ - cui_num_set(p->note_no, note); - cui_handler_call(p->note_no, CUI_EVT_BUTTON, note); - } - }else if(ev_obj == p->name){ - int oct_v = cui_menu_int_get(p->oct); - int name_v = 11 - val; - int note = oct_v * 12 + name_v + 9; - if(cui_num_get(p->note_no) != note){ - cui_num_set(p->note_no, note); - cui_handler_call(p->note_no, CUI_EVT_BUTTON, note); - } - }else if(ev_obj == p->freq){ - double fq = cui_num_dbl_get(p->freq); - int note = (int)( ( log(fq/440) / log(2) ) * 12 + 69 + 0.5 ); - cui_num_set(p->note_no, note); - cui_handler_call(p->note_no, CUI_EVT_BUTTON, note); - }else return FALSE; - break; - default: - return FALSE; - } - return TRUE; -} - -void -cui_kbd_set(cui obj, int note, int v) -{ - cui_kbd p = (cui_kbd)obj; - p->v[ note ] = v; - kbd_draw_note(obj, cui_focus_get() == obj, note); -} - -int -cui_kbd_get(cui obj, int note) -{ - cui_kbd p = (cui_kbd)obj; - return p->v[ note ]; -} - -void -cui_kbd_cursor_set(cui obj, int note) -{ - cui_kbd p = (cui_kbd)obj; - int bak = p->cursor; - int x, mv = 0; - - if(note < 0) note = 0; - if(note > 127) note = 127; - if(bak == note) return; - - x = p->sheet->x + kbd_note_x(note); - if(x < 0) mv = -x; - else if(x > obj->w-1) mv = -(x - (obj->w-1)); - if(mv != 0){ - cui_x_set(p->sheet, p->sheet->x + mv); - cui_draw(obj); - } - p->cursor = note; - kbd_draw_note(obj, FALSE, bak); - kbd_draw_note(obj, FALSE, p->cursor); -} - -int -cui_kbd_cursor_get(cui obj) -{ - cui_kbd p = (cui_kbd)obj; - return p->cursor; -} - -/**/ - struct test4_ch{ int prog, vol, velo; cui kbd; @@ -567,126 +111,13 @@ int init_ret = cui_init(av); cui root = cui_scpanel_new(NULL, 0, 0, 30, 10, "cui_midi"); cui_scpanel scp = (cui_scpanel)root; - cui quit = cui_base_new(scp->view, 2, 1, 0, 1); /* dmy */ - - cui bs1 = cui_base_new(scp->view, quit->x, cui_y2(quit)+1, 0, 0); - cui hxi = hex_in_new(bs1, 0, 0, 0); - cui add = cui_button_new(bs1, cui_x2(hxi)+2, 0, "Add"); - cui out = cui_button_new(bs1, cui_x2(add)+2, 0, "Out"); - char lb_buf[ BUFN ]; - cui lb = cui_label_new(bs1, 2, cui_y2(hxi)+1, ""); - cui prm_arr[] = { hxi, lb }; - - cui bs2 = cui_base_new(scp->view, quit->x, cui_y2(quit)+1, 0, 0); - char *ch_lst[] = {"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15",NULL}; - char *note_lst[] = {"on", "off", "on/off", NULL}; - struct test2 t2; - - cui bs3 = cui_base_new(scp->view, quit->x, cui_y2(quit)+1, 0, 0); - struct test3 t3; - - cui bs4 = cui_base_new(scp->view, quit->x, cui_y2(quit)+1, 0, 0); + cui bs4 = cui_base_new(scp->view, 1, 1, 0, 0); struct test4 t4; - cui obj; - int div = 96; int i; - cui tab_sheets[] = { bs1, bs2, bs3, bs4 }; - cui_hide(bs1); - cui_hide(bs2); - cui_hide(bs3); cui_hide(bs4); - - lb_buf[0] = '\0'; - cui_label_str_set(lb, lb_buf); - - cui_wh_fit(bs1); - - cui_bind(add, CUI_EVT_BUTTON, btn_hdr, prm_arr); - cui_bind(out, CUI_EVT_BUTTON, btn_hdr, prm_arr); - - /* t2 */ - - t2.lb_ch = cui_label_new(bs2, 0, 0, "midi ch : "); - t2.mn_ch = cui_menu_popup_new(bs2, cui_x2(t2.lb_ch), 0, 4, ch_lst, 0); - t2.lb_prog = cui_label_new(bs2, 2, 2, "prog num : "); - t2.prog = cui_num_new(bs2, cui_x2(t2.lb_prog), 2, 8, 50, 0, 127, 0); - t2.prog_out = cui_button_new(bs2, cui_x2(t2.prog)+2, 2, "Out"); - t2.lb_vol = cui_label_new(bs2, 2, 4, "vol (msb) : "); - t2.vol = cui_num_new(bs2, cui_x2(t2.lb_vol), 4, 8, 64, 0, 127, 0); - t2.vol_out = cui_button_new(bs2, cui_x2(t2.vol)+2, 4, "Out"); - t2.lb_onoff = cui_label_new(bs2, 2, 6, "note : "); - t2.mn_note = cui_menu_popup_new(bs2, cui_x2(t2.lb_onoff), 6, 7, note_lst, 0); - t2.lb_note_num = cui_label_new(bs2, cui_x2(t2.mn_note)+2, 6, "num : "); - t2.note_num = cui_num_new(bs2, cui_x2(t2.lb_note_num), 6, 8, 69, 0, 127, 0); - t2.lb_velo = cui_label_new(bs2, cui_x2(t2.note_num)+2, 6, "velo : "); - t2.velo = cui_num_new(bs2, cui_x2(t2.lb_velo), 6, 8, 64, 0, 127, 0); - t2.note_out = cui_button_new(bs2, cui_x2(t2.velo)+2, 6, "Out"); - t2.bs_note_len = cui_base_new(bs2, t2.mn_note->x, 7, 0, 0); - t2.lb_note_len = cui_label_new(t2.bs_note_len, 0, 0, "note len : "); - t2.note_len = cui_num_new(t2.bs_note_len, cui_x2(t2.lb_note_len), 0, 12, 500, 0, 10*1000, 0); - t2.lb_ms = cui_label_new(t2.bs_note_len, cui_x2(t2.note_len)+2, 0, "msec"); - - cui_bind(t2.prog_out, CUI_EVT_BUTTON, t2_btn_hdr, &t2); - cui_bind(t2.vol_out, CUI_EVT_BUTTON, t2_btn_hdr, &t2); - cui_bind(t2.note_out, CUI_EVT_BUTTON, t2_btn_hdr, &t2); - cui_bind(t2.mn_note, CUI_EVT_BUTTON, t2_btn_hdr, &t2); - - cui_hide(t2.bs_note_len); - cui_wh_fit(t2.bs_note_len); - cui_wh_fit(bs2); - - /* t3 */ - - t3.midi_ch = 0; - for(i=0; i<16; i++){ - t3.ch[i].prog = 0; - t3.ch[i].vol = 0; - t3.ch[i].note = 0; - t3.ch[i].note_num = 69; - t3.ch[i].velo = 64; - t3.ch[i].note_len = 500; - } - obj = cui_label_new(bs3, 0, 0, "midi ch : "); - t3.mn_ch = cui_menu_int_new(bs3, cui_x2(obj), 0, 4, 0, 0, 15); - cui_menu_int_vp_set(t3.mn_ch, &t3.midi_ch); - - obj = cui_label_new(bs3, 2, 2, "prog num : "); - t3.prog = cui_num_new(bs3, cui_x2(obj), 2, 8, 0, 0, 127, 0); - - obj = cui_label_new(bs3, 2, 4, "vol (msb) : "); - t3.vol = cui_num_new(bs3, cui_x2(obj), 4, 8, 0, 0, 127, 0); - - obj = cui_label_new(bs3, 2, 6, "note : "); - t3.mn_note = cui_menu_popup_new(bs3, cui_x2(obj), 6, 7, note_lst, 0); - - obj = cui_label_new(bs3, cui_x2(t3.mn_note)+2, 6, "num : "); - t3.note_num = cui_num_new(bs3, cui_x2(obj), 6, 8, 0, 0, 127, 0); - obj = cui_label_new(bs3, cui_x2(t3.note_num)+2, 6, "velo : "); - t3.velo = cui_num_new(bs3, cui_x2(obj), 6, 8, 0, 0, 127, 0); - t3.note_out = cui_button_new(bs3, cui_x2(t3.velo)+2, 6, "Out"); - - t3.bs_note_len = cui_base_new(bs3, t3.mn_note->x, 7, 0, 0); - obj = cui_label_new(t3.bs_note_len, 0, 0, "note len : "); - t3.note_len = cui_num_new(t3.bs_note_len, cui_x2(obj), 0, 12, 0, 0, 10*1000, 0); - cui_label_new(t3.bs_note_len, cui_x2(t3.note_len)+2, 0, "msec"); - - cui_hide(t3.bs_note_len); - cui_wh_fit(t3.bs_note_len); - cui_wh_fit(bs3); - - cui_bind(t3.mn_ch, CUI_EVT_BUTTON, t3_btn_hdr, &t3); - cui_bind(t3.prog, CUI_EVT_BUTTON, t3_btn_hdr, &t3); - cui_bind(t3.vol, CUI_EVT_BUTTON, t3_btn_hdr, &t3); - cui_bind(t3.note_out, CUI_EVT_BUTTON, t3_btn_hdr, &t3); - cui_bind(t3.mn_note, CUI_EVT_BUTTON, t3_btn_hdr, &t3); - - cui_handler_call(t3.mn_ch, CUI_EVT_BUTTON, cui_menu_int_get(t3.mn_ch)); - - /* t4 */ - t4.midi_ch = t4.bak_ch = 0; for(i=0; i<16; i++){ t4.ch[i].prog = 0; @@ -697,19 +128,20 @@ cui_bind(t4.ch[i].kbd, CUI_EVT_BUTTON, t4_btn_hdr, &t4); } obj = cui_label_new(bs4, 0, 0, "midi ch : "); - t4.mn_ch = cui_menu_int_new(bs4, cui_x2(obj), 0, 4, 0, 0, 15); + t4.mn_ch = cui_menu_int_new(bs4, cui_x2(obj), obj->y, 2+1, 0, 0, 15); cui_menu_int_vp_set(t4.mn_ch, &t4.midi_ch); - obj = cui_label_new(bs4, 2, 2, "prog num : "); - t4.prog = cui_num_new(bs4, cui_x2(obj), 2, 8, 0, 0, 127, 0); + obj = cui_label_new(bs4, 2, cui_y2(t4.mn_ch)+1, "prog num : "); + t4.prog = cui_num_new(bs4, cui_x2(obj), obj->y, 3+3, 0, 0, 127, 0); - obj = cui_label_new(bs4, 2, 4, "vol (msb) : "); - t4.vol = cui_num_new(bs4, cui_x2(obj), 4, 8, 0, 0, 127, 0); + obj = cui_label_new(bs4, 2, cui_y2(t4.prog)+1, "vol (msb) : "); + t4.vol = cui_num_new(bs4, cui_x2(obj), obj->y, 3+3, 0, 0, 127, 0); - obj = cui_label_new(bs4, 2, 6, "velo : "); - t4.velo = cui_num_new(bs4, cui_x2(obj), 6, 8, 0, 0, 127, 0); + obj = cui_label_new(bs4, 2, cui_y2(t4.vol)+1, "velo : "); + t4.velo = cui_num_new(bs4, cui_x2(obj), obj->y, 3+3, 0, 0, 127, 0); cui_wh_fit(bs4); + cui_show(bs4); cui_bind(t4.mn_ch, CUI_EVT_BUTTON, t4_btn_hdr, &t4); cui_bind(t4.prog, CUI_EVT_BUTTON, t4_btn_hdr, &t4); @@ -717,15 +149,8 @@ cui_handler_call(t4.mn_ch, CUI_EVT_BUTTON, cui_menu_int_get(t4.mn_ch)); - /**/ - cui_wh_fit(scp->view); - cui_tab_new(scp->view, quit->x, quit->y, -1, - (char *[]){"1st", "2nd", "3rd", "4th", NULL}, - tab_sheets, 3); - - cui_wh_exp(bs1); cui_wh_set(root, scp->view->w+3, scp->view->h+3); cui_xy_set(scp->rszbox, root->w-1, root->h-1);