亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mm_cb.c

?? 在linux下多媒體開發實例linux下多媒體開發
?? C
字號:
/* * This file contains the callback routines for MusicMachine */#include <assert.h>#include "forms.h"#include "mm.h"#include "soundit.h"#include "mm_util.h"/* array containing notes for all channels */int notes[NUM_CHANNELS][NUM_PAGES*NUM_CHANNELS];/* current position in notes array for each channel */int pos[NUM_CHANNELS];/* flags indicating if a channel is stopped */int stopped[NUM_CHANNELS];/* main window file menu */void file_menu_cbk(FL_OBJECT *ob, long data){  const char *filename;  switch (fl_get_menu(ob)) {  case 1: /* load */    filename = fl_show_fselector("Load from file:", "", "", "");    if (filename != 0)      load_sample_file(filename);    break;  case 2: /* save */    filename = fl_show_fselector("Save to file:", "", "", "");    if (filename != 0) {      save_sample_file(filename);      fl_invalidate_fselector_cache();    }    break;  case 3: /* new */    if (fl_show_question("Clear the current patterns?", 0, 0)) {      clear_samples();      update_bitmaps();    }    break;  case 4: /* about */    fl_show_form(about_window, FL_PLACE_CENTER, FL_FULLBORDER, "About");    break;  case 5: /* quit */    if (fl_show_question("Do you want to quit?", 0, 0)) {      Snd_restore();      exit(0);    }    break;  default:    assert(0); /* should never happen */  }}/* main window edit menu */void edit_menu_cbk(FL_OBJECT *ob, long data){  /* only menu item is "options" */  fl_show_form(sample_window, FL_PLACE_CENTER, FL_FULLBORDER, "Options");}/* play button */void play_button_cbk(FL_OBJECT *ob, long data){  int i;  /* reset position to the start for all channels */  for (i = 0 ; i < NUM_CHANNELS ; i++) {    pos[i] = 0;    stopped[i] = 0;  }  /* start timer object by giving it a very small non-zero value */  fl_set_timer(timer, 0.001);}/* tempo slider */void tempo_slider_cbk(FL_OBJECT *ob, long data){  /* nothing to do */}/* used by callbacks for rhythm buttons for all channels */void channel_callback(FL_OBJECT *ob, long data, int channel){  /* get current value */  int i = (int) data + SAMPLES_PER_PAGE * (int) fl_get_counter_value(page);  /* see which mouse button was pushed */  switch (fl_get_button_numb(ob)) {  case 1:    /* increment value */    notes[channel][i]++;    break;  case 2:    /* note value becomes a rest */    notes[channel][i] = REST;    break;  case 3:    /* decrement value */    notes[channel][i]--;    break;  default:    assert(0); /* should never happen */  }  /* wrap around when first or last value reached */  if (notes[channel][i] == STOP-1)    notes[channel][i] = 16;  if (notes[channel][i] > NUM_SAMPLES)    notes[channel][i] = STOP;  update_bitmap(ob, notes[channel][i]);}/* rhythm buttons for channel 0 */void channel_0_cbk(FL_OBJECT *ob, long data){  channel_callback(ob, data, 0);}/* rhythm buttons for channel 1 */void channel_1_cbk(FL_OBJECT *ob, long data){  channel_callback(ob, data, 1);}/* rhythm buttons for channel 2 */void channel_2_cbk(FL_OBJECT *ob, long data){  channel_callback(ob, data, 2);}/* rhythm buttons for channel 3 */void channel_3_cbk(FL_OBJECT *ob, long data){  channel_callback(ob, data, 3);}/* rhythm buttons for channel 4 */void channel_4_cbk(FL_OBJECT *ob, long data){  channel_callback(ob, data, 4);}/* rhythm buttons for channel 5 */void channel_5_cbk(FL_OBJECT *ob, long data){  channel_callback(ob, data, 5);}/* rhythm buttons for channel 6 */void channel_6_cbk(FL_OBJECT *ob, long data){  channel_callback(ob, data, 6);}/* rhythm buttons for channel 7 */void channel_7_cbk(FL_OBJECT *ob, long data){  channel_callback(ob, data, 7);}/* page button */void page_button_cbk(FL_OBJECT *ob, long data){  /* the button itself updates the page number, we just need to update     the display */  update_bitmaps();}/* stop button */void stop_button_cbk(FL_OBJECT *ob, long data){  /* stop timer by giving it a zero value */  fl_set_timer(timer, 0);}/* callback for timer */void timer_cbk(FL_OBJECT *ob, long data){  int ch;  for (ch = 0 ; ch < NUM_CHANNELS ; ch++)    /* play sound for this channel if it is a note and channel has not       been stopped */    if (notes[ch][pos[ch]] > 0 &&	notes[ch][pos[ch]] <= NUM_SAMPLES &&	!stopped[ch])      Snd_effect(notes[ch][pos[ch]] - 1, ch);  /* advance to next position */  for (ch = 0 ; ch < NUM_CHANNELS ; ch++) {    pos[ch]++;    /* wrap around at end */    if (pos[ch] >= NUM_PAGES*SAMPLES_PER_PAGE)      pos[ch] = 0;    /* check for loop back to start */    if (notes[ch][pos[ch]] == LOOP)      pos[ch] = 0;    /* check for stop */    if (notes[ch][pos[ch]] == STOP)      stopped[ch] = 1;  }  /* set timer for next time, tempo is in beats per minute */  fl_set_timer(ob, 60.0 / fl_get_slider_value(tempo));}/* sample file entry */void sample_file_cbk(FL_OBJECT *ob, long data){  char file[256];  char msg[256];  /* make sure file exists */  strcpy(file, fl_get_input(sample_dir));  strcat(file, "/");  strcat(file, fl_get_input(ob));  if (!file_exists(file)) {    sprintf(msg, "Sample file \"%s\" does not exist.", file);    fl_show_alert("Warning:",		  msg,		  "Enter a valid sample file name and try again.",		  0);  }}/* apply button */void samples_apply_cbk(FL_OBJECT *ob, long data){  /* reload new set of samples and parameters */  init_samples();}/* options dismiss button */void samples_dismiss_cbk(FL_OBJECT *ob, long data){  /* make window go away */  fl_hide_form(sample_window);}/* audio device entry field */void audio_device_cbk(FL_OBJECT *ob, long data){  char msg[256];  const char *file = fl_get_input(ob);  if (!file_exists(file)) {    sprintf(msg, "Sample device \"%s\" does not exist.", file);    fl_show_alert("Warning:",		  msg,		  "Enter a valid sample device file name and try again.",		  0);  }}/* sampling rate entry field */void sampling_rate_cbk(FL_OBJECT *ob, long data){  /* do a simple range check */  int rate = atoi(fl_get_input(sampling_rate));  if (rate < 4000 || rate > 45000)    fl_show_alert("Warning:",		  "Invalid sample rate.",		  "Enter a decimal number between 4000 and 45000",		  0);}/* buttons next to each sample file */void test_sample_cbk(FL_OBJECT *ob, long data){  /* play the sample passed to callback */  Snd_effect(data, data % NUM_CHANNELS);}/* callback for sample directory entry field */void sample_dir_cbk(FL_OBJECT *ob, long data){  const char *file = fl_get_input(ob);  char msg[256];  if (!file_exists(file)) {    sprintf(msg, "Sample directory \"%s\" does not exist.", file);    fl_show_alert("Warning:",		  msg,		  "Enter a valid directory name and try again.",		  0);  }}/* about dismiss button */void about_dismiss_cbk(FL_OBJECT *obj, long data){  /* make window go away */  fl_hide_form(about_window);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久伊人久久99| 成人免费三级在线| 亚洲高清在线精品| 亚洲综合色婷婷| 亚洲午夜久久久久久久久电影院 | 国产欧美精品一区| 亚洲男人天堂av网| 免费观看91视频大全| 国产成人免费视频网站| 99精品国产99久久久久久白柏| 国产精品中文字幕欧美| 欧美亚洲尤物久久| 欧美国产国产综合| 亚洲福中文字幕伊人影院| 一区二区三区 在线观看视频| 亚洲影视在线观看| eeuss鲁片一区二区三区| 精品久久久久久久久久久久久久久| 国产精品久久久久四虎| 韩国三级在线一区| 欧美性欧美巨大黑白大战| 精品久久久久一区二区国产| 亚洲手机成人高清视频| 美女尤物国产一区| 欧美色倩网站大全免费| 综合激情网...| 蜜臀av性久久久久蜜臀aⅴ | 欧美日韩aaaaaa| 国产精品理论片| 国产乱一区二区| 91精品在线麻豆| 亚洲精品美国一| 91在线国产观看| 亚洲欧美激情视频在线观看一区二区三区 | 2024国产精品| 日产欧产美韩系列久久99| 99久久精品免费精品国产| 精品剧情在线观看| 国产中文一区二区三区| 6080午夜不卡| 亚洲1区2区3区4区| 欧美日韩国产精品成人| 亚洲成人一二三| 91精品久久久久久久91蜜桃| 亚洲成人一区二区| 欧美日韩极品在线观看一区| 一区二区三区中文字幕精品精品| jizzjizzjizz欧美| 亚洲大片免费看| 日韩午夜激情视频| zzijzzij亚洲日本少妇熟睡| 中日韩免费视频中文字幕| 国产成人三级在线观看| 亚洲精品亚洲人成人网在线播放| 色伊人久久综合中文字幕| 日韩av高清在线观看| 国产校园另类小说区| 欧美主播一区二区三区美女| 日韩av一区二区在线影视| 欧美国产禁国产网站cc| 欧美无乱码久久久免费午夜一区 | 国产自产v一区二区三区c| 国产精品三级在线观看| 91丨九色porny丨蝌蚪| 国产一区二三区| 毛片av一区二区三区| 亚洲图片另类小说| 久久精品亚洲麻豆av一区二区| 欧洲一区二区三区免费视频| 久久草av在线| 日本视频免费一区| 亚洲一本大道在线| 国产精品动漫网站| 日本一区二区三区在线观看| 欧美日韩国产一级二级| 91成人免费网站| 在线一区二区视频| 欧美在线免费播放| 色婷婷亚洲精品| jvid福利写真一区二区三区| 久久精品国产精品亚洲综合| 秋霞午夜av一区二区三区| 午夜激情一区二区三区| 亚洲一区在线电影| 日韩国产一区二| 日本免费新一区视频| 免费在线观看精品| 国产精品91xxx| 99热99精品| 欧美精品乱码久久久久久按摩 | 国产一区二区在线电影| 91美女片黄在线| 精品久久久久一区二区国产| 亚洲欧美国产三级| 男女男精品网站| 99精品欧美一区二区蜜桃免费 | 国产成人免费9x9x人网站视频| 成人18视频日本| 欧美mv和日韩mv的网站| 亚洲欧美日韩精品久久久久| 婷婷亚洲久悠悠色悠在线播放 | 久久理论电影网| 日韩在线一区二区三区| 色综合久久88色综合天天| 欧美videossexotv100| 亚洲精品国产精华液| 国内精品免费在线观看| 欧美日韩国产成人在线免费| 国产精品视频一区二区三区不卡| 三级亚洲高清视频| 色天天综合久久久久综合片| 久久久噜噜噜久噜久久综合| 国产精品午夜电影| 激情综合亚洲精品| 欧美大片日本大片免费观看| 亚州成人在线电影| 欧美日韩另类一区| 偷窥国产亚洲免费视频| 69成人精品免费视频| 日韩一区精品视频| 欧美一级二级三级蜜桃| 天堂va蜜桃一区二区三区漫画版| 欧美性猛片aaaaaaa做受| 亚洲另类春色校园小说| 一本久久a久久免费精品不卡| 精品国产乱码久久久久久图片 | 欧美三级电影在线看| 亚洲日本护士毛茸茸| 91国偷自产一区二区使用方法| 亚洲一二三区视频在线观看| 色噜噜狠狠色综合欧洲selulu| 樱花草国产18久久久久| 欧美午夜一区二区三区| 热久久国产精品| 欧美激情综合五月色丁香小说| 91欧美一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 久久久综合精品| 色系网站成人免费| 图片区小说区区亚洲影院| 久久久久国产精品人| 欧美丝袜丝交足nylons图片| 狠狠狠色丁香婷婷综合久久五月| 中文字幕一区二区视频| 在线精品视频一区二区三四| 奇米精品一区二区三区在线观看| 国产精品久久久久久久久免费相片 | 色综合久久66| 青椒成人免费视频| 国产亚洲欧美日韩日本| 91精品国产综合久久久久久久久久| 精品一区二区三区视频 | 国产精品66部| 天堂av在线一区| 亚洲成a人在线观看| 国产精品久久久久久久久搜平片| 精品国产免费久久| 日韩视频中午一区| 在线电影国产精品| 欧美性猛交xxxx黑人交| 色综合久久久久久久久久久| 成人一区二区三区在线观看| 亚州成人在线电影| 一区在线观看视频| 国产精品国产三级国产aⅴ原创 | 欧美写真视频网站| 欧美日韩色一区| 欧美精品高清视频| 国产亚洲人成网站| 亚洲免费在线电影| 精品无人码麻豆乱码1区2区| 国产精品66部| 欧美视频三区在线播放| 911精品产国品一二三产区| 日本sm残虐另类| 蜜桃视频在线观看一区| 成人国产精品免费网站| 成人免费精品视频| 国产在线精品一区二区夜色 | 国产资源在线一区| 欧美三片在线视频观看| 国产亚洲欧美日韩在线一区| 亚洲电影第三页| 国产成人精品亚洲777人妖| 欧美日韩黄色一区二区| 最新不卡av在线| 极品美女销魂一区二区三区 | 欧美日韩国产精品自在自线| 精品日韩一区二区三区| 中文字幕一区在线| 国产精品一卡二| 欧美视频一区二区三区| 亚洲欧美一区二区在线观看| 久久精品国内一区二区三区| 欧美精品自拍偷拍| 亚洲电影第三页| www.成人网.com| 亚洲精品亚洲人成人网| av一二三不卡影片| 中文字幕一区二区三区不卡|