#include <mikmod.h> #include <allegro.h> #include <libamp.h> #include <easymik.h> #include <tdgui.h> #include <audlib.h> #include "pp.h" MIDI *midi; SAMPLE *samp; BITMAP *bmpp,*pred,*poza; UNIMOD *mf; /* 0 - midi 1 - wav,voc 2 - mp3 3 - mikmod 4 - aud */ void init_player() { poza=create_bitmap(640,480); bmpp=create_bitmap(250,100); pred=create_bitmap(250,100); text_mode(0); tdbox1(pred,0,0,250,100,6); stretch_blit(data_pp,pred,0,0,205,55,2,2,246,25); //195,190 rectfill(pred,5,30,245,70,0); tdbox1(pred,5,30,240,40,1); blit(data_but1,pred,0,0,18,76,214,18); } static char *monoster[]={"STEREO","MONO"}; void nicer_player(char filename[45],char t,BITMAP *pozz) { char k=0,timm=0,tims=0,tbuf[30],c=1,pres=-1,i,m=0,pause=0; int x=195,y=190,mx,my,ox,oy; rectfill(pred,5,30,245,70,0); tdbox1(pred,5,30,240,40,1); textout(pred,font,filename,10,35,255); if(t==0){ sprintf(tbuf,"%dkbps %dHz %s",amp_bitrate,amp_samprat,monoster[!amp_stereo]); textout(pred,font,tbuf,10,55,255); } if(t==1){ sprintf(tbuf,"%dHz %s",aud_freq,monoster[!aud_stereo]); textout(pred,font,tbuf,10,55,255); } if(t==2){ sprintf(tbuf,"BPM %d",mp_bpm); textout(pred,font,tbuf,10,55,255); } if(t==3){ textout(pred,font,"MIDI",10,55,255); } while(k!=1){ if(c==1){ blit(pozz,poza,0,0,0,0,640,480); blit(pred,bmpp,0,0,0,0,250,100); sprintf(tbuf,"TIME %02d:%02d",timm,tims); textout(bmpp,font,tbuf,10,45,255); if(pause==1) textout(bmpp,font,"PAUSE",110,45,155); if(pres>=0) blit(data_but2,bmpp,23*pres,0,18+23*pres,76,23,18); blit(bmpp,poza,0,0,x,y,250,100); show_mouse(0); blit(poza,screen,0,0,0,0,640,480); show_mouse(screen); c=0; } if(pres>=0){ pres=-1;c=1; while(mouse_b); } i=-1; if(mouse_b==1&&m==0&&pres==-1){ mx=mouse_x-x; my=mouse_y-y; if(mx>=0&&my>=0&&mx<250&&my<100){ if(my<17){ ox=mx; oy=my; m=1; c=1; } if(mx>18&&mx<232&&my>76&&my<94) i=(mx-18)/23; } } if(m==1){ mx=mouse_x; my=mouse_y; if(mouse_b){ if((x+ox!=mx)||(y+oy!=my)){ x=mx-ox; y=my-oy; c=1; } } else{ m=0; c=1; } } if(key[KEY_Z]) i=0; if(key[KEY_X]) i=1; if(key[KEY_C]) i=2; if(key[KEY_V]) i=3; if(key[KEY_B]) i=4; /* 0 - rewind 1 - play 2 - pause 3 - exit 4 - ffwd */ pres=i; if(i>=0) c=1; if(i==3) k=1; if(t==0){ if(poll_amp()<=0) __dpmi_yield(); if(i==4) seek_amp_rel(4*amp_samprat/amp_pollsize); /* seek 4 seconds */ if(i==0) seek_amp_rel(-4*amp_samprat/amp_pollsize); /* seek 4 seconds */ if(i==1) replay_amp(); if(amp_dec_time!=timm*60+tims){ timm=amp_dec_time/60; tims=amp_dec_time%60; c=1; } } if(t==1){ if(poll_aud()<0) k=1; if(i==1){restart_aud();} if(i==2){ if(pause==0){ pause_aud(); pause=1; } else{ resume_aud(); pause=0; } } } if(t==2){ if(i==0) MP_PrevPosition(); if(i==4) MP_NextPosition(); if(i==1) MP_SetPosition(0); if(mp_patpos!=tims){ tims=mp_patpos; c=1; } if(mp_sngpos!=timm){ timm=mp_sngpos; c=1; } } if(t==3){ if(i==0) midi_seek(midi_pos-1); if(i==4) midi_seek(midi_pos+1); if(i==2){ if(pause==0){ midi_pause(); pause=1; } else{ midi_resume(); pause=0; } c=1; } if(i==1) midi_seek(0); if(midi_pos!=timm*60+tims){ timm=midi_pos/60; tims=midi_pos%60; c=1; } } /*******************************************/ if(key[KEY_ESC]) k=1; } clear_keybuf(); text_mode(-1); } void paceplay_play(char t,char filename[45],BITMAP *pozz) { default_gfx(); if(t==0) { install_sound(0,-1,0); midi=load_midi(filename); if(midi==NULL){ remove_sound(); billalert("ERROR","Error in MIDI!",0,"&OK",0,'o',0); return; } play_midi(midi,1); nicer_player(filename,3,pozz); stop_midi(); destroy_midi(midi); remove_sound(); } if(t==1) { install_sound(-1,0,0); samp=load_sample(filename); if(samp==NULL){ remove_sound(); billalert("ERROR","Error in WAVE!",0,"&OK",0,'o',0); return; } play_sample(samp,255,128,1000,1); billalert("DIGI player",filename,digi_driver->desc,"&Stop",0,'s',0); // todo: this shity function (play wave) stop_sample(samp); destroy_sample(samp); remove_sound(); } if(t==2){ install_sound(-1,0,0); install_amp(); load_amp(filename,0); nicer_player(filename,0,pozz); unload_amp(); remove_sound(); } if(t==3){ init_mikmod(DEVICE_AUTODETECT); mf=init_mod(filename); if(mf==NULL){ end_mikmod(); billalert("ERROR","Error in module!",0,"&OK",0,'o',0); return; } play_mod(mf,1); nicer_player(filename,2,pozz); stop_mod(); free_mod(mf); end_mikmod(); } if(t==5){ install_sound(-1,0,0); if(load_aud_stream(filename,1)!=TRUE){ remove_sound(); billalert("ERROR","Error in AUD file!",0,"&OK",0,'o',0); return; } nicer_player(filename,1,pozz); unload_aud_stream(); remove_sound(); } }