Example #1
0
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);
	}
}
Example #2
0
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
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
void digi_set_midi_volume( int mvolume ) { 
	char buf[128];
	if(FindArg("-nomusic"))
		return;

	sprintf(buf,"v%i",mvolume);
	send_ipc(buf);
}
Example #6
0
void digi_set_midi_volume( int mvolume ) { 
	char buf[128];
	if (GameArg.SndNoMusic)
		return;

	sprintf(buf,"v%i",mvolume);
	send_ipc(buf);
}
Example #7
0
File: digi.c Project: paud/d2x-xl
void DigiStopCurrentSong()
{
#ifdef HMIPLAY
    char buf[10];

    sprintf(buf,"s");
    send_ipc(buf);
#endif
}
Example #8
0
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
}
Example #9
0
File: plug.c Project: easymc/easymc
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;
}
Example #10
0
void DigiSetMidiVolume( int mvolume ) { 
        char buf[128];
    
        sprintf(buf,"v%i",mvolume);
        send_ipc(buf);
}
Example #11
0
void digi_set_midi_volume( int mvolume ) {
	char buf[128];

	sprintf(buf,"v%i",mvolume);
	send_ipc(buf);
}
Example #12
0
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);
	
}
Example #13
0
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);
}
Example #14
0
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;
}