欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

uif_sfgen.c

A GTK sound font editor. Sound font files are used to synthesize instruments from audio samples for
C
第 1 页 / 共 2 页
字号:
  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), box, label);  /* create vbox for second page */  box = gtk_vbox_new (FALSE, 0);  gtk_widget_show (box);  /* Vol Envelope frame */  frame = gtk_frame_new (_("Volume Envelope"));  gtk_widget_show (frame);  gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 2);  box1 = gtk_vbox_new (TRUE, 0);  gtk_widget_show (box1);  gtk_container_add (GTK_CONTAINER (frame), box1);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VolEnvDelay);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VolEnvAttack);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VolEnvHold);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VolEnvDecay);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VolEnvSustain);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VolEnvRelease);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_Attenuation);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_Key2VolEnvHold);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_Key2VolEnvDecay);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  /* add the box to the notebook with label */  label = gtk_label_new (_("Vol Envelope"));  gtk_widget_show (label);  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), box, label);  /* create vbox for third page */  box = gtk_vbox_new (FALSE, 0);  gtk_widget_show (box);  /* Mod Envelope frame */  frame = gtk_frame_new (_("Modulation Envelope"));  gtk_widget_show (frame);  gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 2);  box1 = gtk_vbox_new (TRUE, 0);  gtk_widget_show (box1);  gtk_container_add (GTK_CONTAINER (frame), box1);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModEnvDelay);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModEnvAttack);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModEnvHold);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModEnvDecay);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModEnvSustain);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModEnvRelease);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModEnv2Pitch);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModEnv2FilterFc);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_Key2ModEnvHold);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_Key2ModEnvDecay);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  /* add the box to the notebook with label */  label = gtk_label_new (_("Mod Envelope"));  gtk_widget_show (label);  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), box, label);  /* create vbox for fourth page */  box = gtk_vbox_new (FALSE, 0);  gtk_widget_show (box);  /* LFO frame */  /* LFO stands for Low Frequency Oscillator */  frame = gtk_frame_new (_("Modulation LFO"));  gtk_widget_show (frame);  gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 2);  box1 = gtk_vbox_new (TRUE, 0);  gtk_widget_show (box1);  gtk_container_add (GTK_CONTAINER (frame), box1);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModLFODelay);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModLFOFreq);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModLFO2Pitch);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModLFO2FilterFc);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_ModLFO2Vol);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  frame = gtk_frame_new (_("Vibrato LFO"));  gtk_widget_show (frame);  gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 2);  box1 = gtk_vbox_new (TRUE, 0);  gtk_widget_show (box1);  gtk_container_add (GTK_CONTAINER (frame), box1);  box2 = gtk_hbox_new (TRUE, 0);  gtk_widget_show (box2);  gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VibLFODelay);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VibLFOFreq);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  ctrl = create_gen_control (Gen_VibLFO2Pitch);  gtk_box_pack_start (GTK_BOX (box2), ctrl, TRUE, TRUE, 2);  /* add the box to the notebook with label */  label = gtk_label_new (_("LFOs"));  gtk_widget_show (label);  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), box, label);  sfgen_ctrl_notebook = notebook;  return (scroll_win);}static voidsfgen_set_view_mode (gint mode){				/* set mode for gen view */  GtkWidget *list;  static gchar blank[] = "--";  guint16 genid;  gint i, i2;  switch (mode)    {    case GENMODE_INACTIVE:      for (i = 0; i < CLIST_LAST; i++)	{	  list = sfgen_clists[i];	  for (i2 = 0; i2 < GTK_CLIST (list)->rows; i2++)	    {	      gtk_clist_set_text (GTK_CLIST (list), i2, 1, blank);	      gtk_clist_set_text (GTK_CLIST (list), i2, 2, blank);	    }	}      break;    case GENMODE_ABS:      for (i = 0; i < CLIST_LAST; i++)	{	  list = sfgen_clists[i];	  for (i2 = 0; i2 < GTK_CLIST (list)->rows; i2++)	    {	      genid =		GPOINTER_TO_INT (gtk_clist_get_row_data (GTK_CLIST (list),		  i2));	      /* genconv[].unittxt are constant strings, translate them */	      gtk_clist_set_text (GTK_CLIST (list), i2, 1,		_(genconv[genparms[genid].unit].unittxt));	      gtk_clist_set_text (GTK_CLIST (list), i2, 2, blank);	    }	}      break;    case GENMODE_OFS:      for (i = 0; i < CLIST_LAST; i++)	{	  list = sfgen_clists[i];	  for (i2 = 0; i2 < GTK_CLIST (list)->rows; i2++)	    {	      genid =		GPOINTER_TO_INT (gtk_clist_get_row_data (GTK_CLIST (list),		  i2));	      /* genconv[].ofstxt are constant strings, translate them */	      gtk_clist_set_text (GTK_CLIST (list), i2, 1,		_(genconv[genparms[genid].unit].ofstxt));	      gtk_clist_set_text (GTK_CLIST (list), i2, 2, blank);	    }	}      break;    }}static voidsfgen_view_update (SFGenAmount * garr){  GtkWidget *list;  gchar vbuf[20];  gint i, i2, genid;  gboolean absval;  absval = (sfgen_mode == GENMODE_ABS);  for (i = 0; i < CLIST_LAST; i++)    {      list = sfgen_clists[i];      for (i2 = 0; i2 < GTK_CLIST (list)->rows; i2++)	{	  genid =	    GPOINTER_TO_INT (gtk_clist_get_row_data (GTK_CLIST (list), i2));	  /* convert the generator value to user units */	  gen_sf2userstr (genid, garr[genid], vbuf, absval);	  gtk_clist_set_text (GTK_CLIST (list), i2, 2, vbuf);	}    }}static voidsfgen_cb_gen_clist_button_pressed (GtkWidget * btn, gint page){  sfgen_set_win (SFGEN_CTRL);  gtk_notebook_set_page (GTK_NOTEBOOK (sfgen_ctrl_notebook), page);  /* update gen view/ctrl toggle buttons on toolbar and main menu */  tbar_set_lowpane_togbtn (SFGEN_CTRL);  sfmenu_set_lowpane_radio_item (SFGEN_CTRL);}static GtkWidget *create_gen_clist (gchar * title, gint page){  GtkWidget *list;  gchar *titles[3];  titles[0] = title;  titles[1] = _("unit");  titles[2] = _("value");  list = gtk_clist_new_with_titles (3, titles);  gtk_widget_show (GTK_WIDGET (list));  gtk_clist_set_column_width (GTK_CLIST (list), 0, (gint) (85));  gtk_clist_set_column_width (GTK_CLIST (list), 1, (gint) (40));  gtk_clist_set_column_width (GTK_CLIST (list), 2, (gint) (60));  gtk_clist_set_column_justification (GTK_CLIST (list), 1,    GTK_JUSTIFY_CENTER);  gtk_clist_set_column_justification (GTK_CLIST (list), 2, GTK_JUSTIFY_RIGHT);  gtk_clist_set_selection_mode (GTK_CLIST (list), GTK_SELECTION_EXTENDED);  gtk_clist_column_titles_passive (GTK_CLIST (list));  gtk_clist_column_title_active (GTK_CLIST (list), 0);  gtk_signal_connect (GTK_OBJECT (GTK_CLIST (list)->column[0].button),    "clicked", GTK_SIGNAL_FUNC (sfgen_cb_gen_clist_button_pressed),    GINT_TO_POINTER (page));  return (list);}static voidadd_gen_citem (guint16 genid, GtkWidget * list){  gint row;  gchar *data[] = { NULL, "--", "--" };  /* genparms[].label are constant strings, must be translated by gettext */  data[0] = _(genparms[genid].label);  row = gtk_clist_append (GTK_CLIST (list), data);  gtk_clist_set_row_data (GTK_CLIST (list), row,    GINT_TO_POINTER ((gint) genid));}static GtkWidget *sfgen_view_create (void){  GtkWidget *scroll_win;  GtkWidget *box, *box2;  GtkWidget *list;  scroll_win = gtk_scrolled_window_new (NULL, NULL);  gtk_container_border_width (GTK_CONTAINER (scroll_win), 0);  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_win),    GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);  gtk_widget_show (scroll_win);  box = gtk_hbox_new (TRUE, 0);  gtk_widget_show (GTK_WIDGET (box));  gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroll_win), box);  box2 = gtk_vbox_new (FALSE, 0);  gtk_widget_show (GTK_WIDGET (box2));  sfgen_clists[CLIST_PITCH] = list = create_gen_clist (_("Pitch"), 0);  add_gen_citem (Gen_CoarseTune, list);  add_gen_citem (Gen_FineTune, list);  add_gen_citem (Gen_ScaleTune, list);  gtk_box_pack_start (GTK_BOX (box2), list, TRUE, TRUE, 0);  sfgen_clists[CLIST_EFFECTS] = list = create_gen_clist (_("Effects"), 0);  add_gen_citem (Gen_FilterQ, list);  add_gen_citem (Gen_FilterFc, list);  add_gen_citem (Gen_ReverbSend, list);  add_gen_citem (Gen_ChorusSend, list);  add_gen_citem (Gen_Pan, list);  gtk_box_pack_start (GTK_BOX (box2), list, TRUE, TRUE, 0);  gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0);  sfgen_clists[CLIST_VOLENV] = list = create_gen_clist (_("Vol Envelope"), 1);  add_gen_citem (Gen_VolEnvDelay, list);  add_gen_citem (Gen_VolEnvAttack, list);  add_gen_citem (Gen_VolEnvHold, list);  add_gen_citem (Gen_VolEnvDecay, list);  add_gen_citem (Gen_VolEnvSustain, list);  add_gen_citem (Gen_VolEnvRelease, list);  add_gen_citem (Gen_Attenuation, list);  add_gen_citem (Gen_Key2VolEnvHold, list);  add_gen_citem (Gen_Key2VolEnvDecay, list);  gtk_box_pack_start (GTK_BOX (box), list, TRUE, TRUE, 0);  sfgen_clists[CLIST_MODENV] = list = create_gen_clist (_("Mod Envelope"), 2);  add_gen_citem (Gen_ModEnvDelay, list);  add_gen_citem (Gen_ModEnvAttack, list);  add_gen_citem (Gen_ModEnvHold, list);  add_gen_citem (Gen_ModEnvDecay, list);  add_gen_citem (Gen_ModEnvSustain, list);  add_gen_citem (Gen_ModEnvRelease, list);  add_gen_citem (Gen_ModEnv2Pitch, list);  add_gen_citem (Gen_ModEnv2FilterFc, list);  add_gen_citem (Gen_Key2ModEnvHold, list);  add_gen_citem (Gen_Key2ModEnvDecay, list);  gtk_box_pack_start (GTK_BOX (box), list, TRUE, TRUE, 0);  box2 = gtk_vbox_new (FALSE, 0);  gtk_widget_show (GTK_WIDGET (box2));  sfgen_clists[CLIST_MODLFO] = list = create_gen_clist (_("Mod LFO"), 3);  add_gen_citem (Gen_ModLFODelay, list);  add_gen_citem (Gen_ModLFOFreq, list);  add_gen_citem (Gen_ModLFO2Pitch, list);  add_gen_citem (Gen_ModLFO2FilterFc, list);  add_gen_citem (Gen_ModLFO2Vol, list);  gtk_box_pack_start (GTK_BOX (box2), list, TRUE, TRUE, 0);  sfgen_clists[CLIST_VIBLFO] = list = create_gen_clist (_("Vibrato LFO"), 3);  add_gen_citem (Gen_VibLFODelay, list);  add_gen_citem (Gen_VibLFOFreq, list);  add_gen_citem (Gen_VibLFO2Pitch, list);  gtk_box_pack_start (GTK_BOX (box2), list, TRUE, TRUE, 0);  gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0);  return (scroll_win);}/* toggles active generator window between view/control */voidsfgen_set_win (gint wintype){  GtkWidget *new_win, *old_win;  if (wintype == sfgen_actv_win)    return;  switch (wintype)    {    case SFGEN_VIEW:      new_win = sfgen_view;      break;    case SFGEN_CTRL:      new_win = sfgen_ctrl;      break;    case SFGEN_SAMVIEW:      new_win = samview_win;      break;    default:      return;    }  switch (sfgen_actv_win)    {    case SFGEN_VIEW:      old_win = sfgen_view;      break;    case SFGEN_CTRL:      old_win = sfgen_ctrl;      break;    case SFGEN_SAMVIEW:      old_win = samview_win;      break;    }  gtk_widget_hide (old_win);  gtk_widget_show (new_win);  /* if view to switch to is gen view or control then update it */  if (wintype != SFGEN_SAMVIEW && uisf_selected_zone)    sfgen_update (uisf_selected_zone);  sfgen_actv_win = wintype;}GtkWidget *sfgen_win_create (void){  GtkWidget *box;  box = gtk_vbox_new (FALSE, 0);  gtk_widget_show (box);  sfgen_view = sfgen_view_create ();  sfgen_ctrl = sfgen_ctrl_create ();  samview_win = samview_create ();  gtk_widget_hide (sfgen_ctrl);  gtk_widget_hide (samview_win);  gtk_box_pack_start (GTK_BOX (box), sfgen_view, TRUE, TRUE, 0);  gtk_box_pack_start (GTK_BOX (box), sfgen_ctrl, TRUE, TRUE, 0);  gtk_box_pack_start (GTK_BOX (box), samview_win, TRUE, TRUE, 0);  sfgen_actv_win = SFGEN_VIEW;  return (box);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -