void digi_play_midi_song( char * filename, char * melodic_bank, char * drum_bank, int loop ) { if(FindArg("-nomusic")) return; if (!filename) send_ipc("p"); else { char buf[128]; sprintf(buf,"p%s",filename); send_ipc(buf); } }
int digi_play_midi_song(char *filename, char *melodic_bank, char *drum_bank, int loop) { if (!filename) send_ipc("p"); else { char buf[128]; sprintf(buf, "p%s", filename); send_ipc(buf); } return 1; // FIXME: assume everything is OK }
void digi_play_midi_song(char *filename, char *melodic_bank, char *drum_bank, int loop) { if (GameArg.SndNoMusic) return; if (!filename) send_ipc("p"); else { char buf[128]; sprintf(buf, "p%s", filename); send_ipc(buf); } rephmi=loop; }
int DigiPlayMidiSong( char * filename, char * melodic_bank, char * drum_bank, int loop ) { char buf[128]; sprintf(buf,"p%s",filename); send_ipc(buf); return 0; }
void digi_set_midi_volume( int mvolume ) { char buf[128]; if(FindArg("-nomusic")) return; sprintf(buf,"v%i",mvolume); send_ipc(buf); }
void digi_set_midi_volume( int mvolume ) { char buf[128]; if (GameArg.SndNoMusic) return; sprintf(buf,"v%i",mvolume); send_ipc(buf); }
void DigiStopCurrentSong() { #ifdef HMIPLAY char buf[10]; sprintf(buf,"s"); send_ipc(buf); #endif }
void digi_audio_stop_current_song() { #ifdef HMIPLAY char buf[10]; sprintf(buf,"s"); send_ipc(buf); #endif #ifdef _WIN32 if (digi_midi_song_playing) { hmp_close(hmp); hmp = NULL; digi_midi_song_playing = 0; } #endif }
int emc_send(int plug, void * msg, int flag){ int result=-1; struct easymc_plug * pg = (struct easymc_plug *)global_get_plug(plug); if(!pg){ errno = ENOPLUG; return -1; } if(pg->ipc_){ if(0 == send_ipc(pg->ipc_, msg, flag)){ result = 0; } } if(pg->tcp_){ if(0 == send_tcp(pg->tcp_, msg, flag)){ result = 0; } } return result; }
void DigiSetMidiVolume( int mvolume ) { char buf[128]; sprintf(buf,"v%i",mvolume); send_ipc(buf); }
void digi_set_midi_volume( int mvolume ) { char buf[128]; sprintf(buf,"v%i",mvolume); send_ipc(buf); }
void play_hmi (void * arg) { int i; int pos = 0x308; int n_chunks = 0; int low_dtime; int low_chunk; int csec, lcsec; int qid; int ipc_read = 0; int k=0; struct msgbuf *rcv; Track_info *t_info; con_printf(CON_DEBUG,"play_hmi\n"); stop = 0; ipc_read=0; rcv=d_malloc(sizeof(long) + 16); rcv->mtype=1; rcv->mtext[0]='0'; qid=msgget ((key_t) ('l'<<24) | ('d'<<16) | ('e'<<8) | 's', 0660); if(qid == -1) { return; } do { ipc_read=do_ipc(qid,rcv,0); } while(rcv->mtext[0] != 'p'); stop=0; rcv->mtext[0] = '0'; seq_init(); n_chunks=data[0x30]; t_info = d_malloc(sizeof(Track_info)*n_chunks); while(1) { for(i=0;i<n_chunks;i++) { t_info[i].position = pos + 12; t_info[i].status = PLAYING; t_info[i].time = get_dtime(data,&t_info[i].position); pos += (( (0xff & data[pos + 5]) << 8 ) + (0xff & data[pos + 4])); } lcsec = 0; SEQ_START_TIMER(); do { low_chunk = -1; k++; i=0; do { if (t_info[i].status == PLAYING) low_chunk = i; i++; } while((low_chunk <=0) && (i<n_chunks)); if (low_chunk == -1) break; low_dtime = t_info[low_chunk].time; for(i=1;i<n_chunks;i++) { if ((t_info[i].time < low_dtime) && (t_info[i].status == PLAYING)) { low_dtime = t_info[i].time; low_chunk = i; } } if (low_dtime < 0) con_printf(CON_URGENT,"Serious warning: d_time negative!!!!!!\n"); csec = 0.86 * low_dtime; //flush sequencer buffer after 20 events if (k == 20) { ioctl(seqfd, SNDCTL_SEQ_SYNC); k = 0; } #ifdef WANT_AWE32 cut_trough(); #endif if (csec != lcsec) { SEQ_WAIT_TIME(csec); } lcsec = csec; t_info[low_chunk].status = do_track_event(data,&t_info[low_chunk].position); if (t_info[low_chunk].status == 3) { con_printf(CON_URGENT,"Error playing data in chunk %d\n",low_chunk); t_info[low_chunk].status = STOPPED; } if (t_info[low_chunk].status == PLAYING) t_info[low_chunk].time += get_dtime(data,&t_info[low_chunk].position); //Check if the song has reached the end stop = t_info[0].status; for(i=1;i<n_chunks;i++) stop &= t_info[i].status; // ZICO - since we don't seem to have a real repeat call we need a hack // endlevel song does change rephmi to 0 while endlevel. endlevel song takes about 1950 csec till it's finished if (!rephmi && csec > 1950) send_ipc("s"); if((do_ipc(qid,rcv,IPC_NOWAIT) > 0) && (rcv->mtext[0]=='p')) { n_chunks=data[0x30]; t_info = d_realloc(t_info,sizeof(Track_info)*n_chunks); stop = 1; rcv->mtext[0] = '0'; stop_all(); } } while(!stop); SEQ_STOP_TIMER(); if( stop == 2) { stop_all(); do { ipc_read=do_ipc(qid,rcv,0); } while(rcv->mtext[0] != 'p'); rcv->mtext[0] = '0'; n_chunks=data[0x30]; t_info = d_realloc(t_info,sizeof(Track_info)*n_chunks); stop = 0; } pos=0x308; } d_free(data); d_free(t_info); d_free(rcv); }
void digi_play_midi_song( char * filename, char * melodic_bank, char * drum_bank, int loop ) { char buf[128]; sprintf(buf,"p%s",filename); send_ipc(buf); }
int main(int argc, const char *argv[]) { tm_cmd_t ipc_cmd; char i; int fd, opt_idx, c, max_pnl=PNL_NUM; char *short_opts = "p:sa:n:e:f:chvC:T:b:i:"; pid_t pid; if(argc == 1) tm_test_usage(); memset((char*)&ipc_cmd, 0, sizeof(tm_cmd_t)); while ((c = getopt_long(argc, (char* const*)argv, short_opts, long_opts, &opt_idx)) != -1) { switch(c) { case 'C': memcpy(client_name, optarg, strlen(optarg)); break; case 'T': memcpy(target_name, optarg, strlen(optarg)); break; case 'b': ttm.arg.bind.set=1; memcpy(bind_buf, optarg, strlen(optarg)); break; case 'a': ttm.arg.ap.set = 1; memcpy(ap_buf, optarg, strlen(optarg)); break; case 'n': ttm.set_pnl_num = 1; ttm.pnl_num = optarg[0] - '0'; break; case 'e': ttm.arg.evt.set = 1; memcpy(evt_buf, optarg, strlen(optarg)); break; case 'f': ttm.arg.fb.set = 1; memcpy(fb_buf, optarg, strlen(optarg)); break; case 'i': ttm.arg.pnl_evt.set = 1; memcpy(pnl_evt_buf, optarg, strlen(optarg)); break; case 'c': ttm.calibrate = 1; break; case 'p': ttm.pnl_arg = optarg[0] - '0'; break; case 's': ttm.split = 1; break; case 'h': tm_test_usage(); break; case 'v': tm_test_version(); break; default: break; } } parse_options(); #if TEST_DEBUG show_args_for_debug(); #endif if(ttm.calibrate) { tm_calibrate(); return 0; } if(ttm.set_pnl_num) max_pnl = ttm.pnl_num; if(ttm.pnl_arg < 0 || ttm.pnl_arg > max_pnl) { printf("set panel error\n"); tm_test_usage(); } if(!ttm.arg.ap.set) { printf("no set ap\n"); return 0; } signal(SIGSEGV, sig); signal(SIGINT, sig); signal(SIGTERM, sig); ttm.mode = ttm.arg.ap.num - 1; set_ttm(); set_button_num(ttm.arg.ap.num + 3); set_comment(); // set fb position for (i = 0; i < max_pnl; i++) { printf("panel %d pan : %s\n",i,ttm.fb[(int)i].pan); printf("panel %d fb : %s\n",i,ttm.fb[(int)i].dev); printf("panel %d evt : %s\n",i,ttm.evt[(int)i].dev); if((fd=open(ttm.fb[(int)i].pan, O_RDWR))>=0) { if (write(fd, "0,0", 3)<0) { dbg_log("write pan error, pan : %s",ttm.fb[(int)i].pan); } close(fd); } else { printf("open pan error\n"); } #if 1 pid = fork(); if (pid == -1) { printf("fork %d error \n", i); } else if (pid == 0) { ts_test(&ttm.fb[(int)i], &ttm.evt[(int)i]); _exit(0); } #endif } if(open_ipc()) return 0; // ipc_cmd.general.hdr=0xd0; // ipc_cmd.len=1; // ttm.wait_ver=1; // send_ipc(&ipc_cmd); // // while(ttm.wait_ver) // sleep(1); // set ap display for (i = 0; i < 3; i++) { if(ttm.mode == MONO_AP) { ipc_cmd.stretch.hdr=0xa1; ipc_cmd.stretch.panel=i; ipc_cmd.stretch.ap=ttm.arg.ap.data[0]; ipc_cmd.len=3; send_ipc(&ipc_cmd); } else { ipc_cmd.clear.hdr=0xa2; ipc_cmd.clear.panel=i; ipc_cmd.len=2; send_ipc(&ipc_cmd); for(int j=0; j<ttm.arg.ap.num; j++) { ipc_cmd.append.hdr=0xa0; ipc_cmd.append.panel=i; ipc_cmd.append.ap=ttm.arg.ap.data[j]; set_pnl_append_cmd(&ipc_cmd.append, j); set_ap_append_cmd(&ipc_cmd.append, j); ipc_cmd.len=11; send_ipc(&ipc_cmd); } } } if(g_ipc.server) { lst_close_channel(g_ipc.server); g_ipc.server = NULL; } return 0; }