2 * STed: trkset.c (track set subroutine)
8 static void exetrk_dsp(int);
10 /***************************/
16 trk_no_cur(track,2);if(cx<0){trk_no_cur(track,1);}else{trk_lin(track,cx,1);}
17 ke=inkey2();sh=B_SFTSNS();
18 trk_no_cur(track,0);if(cx>=0){trk_lin(track,cx,0);}
24 ex=str_search("1234567890,./*-+=\x0d",t); /* */
27 if(ex<btrack || ex>btrack+17){
28 btrack=ex/9*9;if(btrack>18){btrack=18;}
37 msg("TRACK No.=");j=vinput(track+1,0x802);msg_clr();
38 if(es==0 && j>0 && j<=36){
40 if(j<btrack || j>btrack+17){
41 btrack=j/9*9;if(btrack>18){btrack=18;}
47 if( ke==27 ){return(-1);}
49 if( ke==0x0b ){track=btrack;}
51 if( ke==0x05 ){track--;if(track<btrack){track=btrack+17;}}
52 if( ke==0x18 ){track++;if(track>btrack+17){track=btrack;}}
54 if( ke==0x17 && btrack>0){
55 if(sh&1){btrack-=1;track-=1;}else{btrack-=9;track-=9;}
56 if(btrack<0){btrack=0;track=0;}
59 if( ke==0x12 && btrack<18){
60 if(sh&1){btrack+=1;track+=1;}else{btrack+=9;track+=9;}
61 if(btrack>18){btrack=18;track=18;}
66 trk_no_dis();return(0);
69 /***************************/
70 void trk_no_cur(int i,int m)
74 if(m==0){a=15;b=8;}else{a=0;b=15;if(m==2){b=11;}}
76 if(i>=btrack && i<btrack+18){
77 vdis(13,192+(i-btrack)*16,i+1,2,a,b);
81 /***************************/
84 vdis2(21+14,0,track+1,2,15,8);vdis2(21+14,512,track+1,2,15,8);
87 /***************************/
92 edfield(-1);edit_scr=0;logo(-1);i=track;
97 trk_no_cur(i,2);if(cx<0){trk_no_cur(i,1);}else{trk_lin(i,cx,1);}
98 ke=inkey3();sh=ke>>8;ke=ke&0xff;
99 if(ke>='a' && ke<='z'){ke-=32;}
100 trk_no_cur(i,0);if(cx>=0){trk_lin(i,cx,0);}
103 if( ke>='A' && ke<='Z' && (sh&4)!=0 ){
104 if(cnfflag&0x200){sh=1-(sh&1);}
105 if(sh&1){option(ke-'A',1);}else{option2(ke-'A',1,0,0);}
111 if( ke==0xe0 ){if((sh&1)==0){poplay(0,4);}else{poplay(0,5);}}
112 if( ke==0xe1 ){if((sh&1)==0){poplay(0,1);}else{poplay(0,2);}}
119 ex=str_search("1234567890,./*-+=\x0d",t); /* */
122 if(i<btrack || i>=btrack+18){
123 btrack=i/9*9;if(btrack>18){btrack=18;}
134 ex=str_search("1234567890,./ *-+=\x0d",t);
136 if(cx==1){mch[i]=ex;ke=0;}
144 msg("TRACK No.=");ex=vinput(i+1,0x802);msg_clr();
145 if(es==0 && ex>0 && ex<=36){
147 if(i<btrack || i>=btrack+18){
148 btrack=i/9*9;if(btrack>18){btrack=18;}
156 if( cx<0 || (sh&1)!=0 ){
160 if(i<btrack || i>=btrack+18){
161 btrack=i/9*9;if(btrack>18){btrack=18;}
164 if(B_SFTSNS()&1){break;}
166 if(real_record()==0){form3();}
173 int ex=trmod[i];trmod[i]=(ex&0xfc)+((ex+1)&3);
179 strcpy(tmp0,chstr(mch[i]));
180 B_LOCATE(21,y);sinput(tmp0,0x803);ex=strch(mch[i],tmp0);
181 /* May.06.2001 NAGANO Daisuke <breeze.nagano@nifty.ne.jp> */
183 if(es==0 && ex<=STED3_MAX_PORT_NUMBER*16 && ex>=0 ){mch[i]=ex;}
185 if(es==0 && ex<33 && ex>=0 ){mch[i]=ex;}
189 int ex=trst[i];if(ex>127){ex=ex-256;}
190 B_LOCATE(25,y);ex=vinput(ex,0x803);
191 if(es==0 && (ex>=-99 && ex<=99)){
192 if( ex<0 ){ex=ex+256;}
196 int ex=trkey[i];if( ex>63 && ex<128){ex=ex-128;}
197 B_LOCATE(29,y);ex=vinput(ex,0x803);
198 if(es==0 && ((ex>=-64 && ex<64) || ex==128)){
199 if( ex<0 ){ex=ex+128;}
204 if(ex<0x80){ex=0x80;}else{if(ex==0x80){ex=0x90;}else{ex=0;}}
208 if( cx==5 ){B_LOCATE(37,y);sinput(trkmemo[i],36);}
212 if( ke>='0' && ke<='9' ){
219 tmp0[0]=ke;tmp0[1]=0;
220 B_LOCATE(21,y);sinput(tmp0,0x403);ex=strch(mch[i],tmp0);
221 /* May.06.2001 NAGANO Daisuke <breeze.nagano@nifty.ne.jp> */
223 if(es==0 && ex<=STED3_MAX_PORT_NUMBER*16 && ex>=0 ){mch[i]=ex;}
225 if(es==0 && ex<33 && ex>=0 ){mch[i]=ex;}
229 int ex=trst[i];if(ex>127){ex=ex-256;}
230 B_LOCATE(25,y);ex=vinput(ke-'0',0x403);
232 if(es==0 && (ex>=-99 && ex<=99)){
233 if( ex<0 ){ex=ex+256;}
237 int ex=trkey[i];if( ex>63 && ex<128){ex=ex-128;}
238 B_LOCATE(29,y);ex=vinput(ke-'0',0x403);
239 if(es==0 && ((ex>=-64 && ex<64) || ex==128)){
240 if( ex<0 ){ex=ex+128;}
246 if( ke=='+' || ke=='>' || ke=='.' ){
248 int ex=trmod[i];trmod[i]=(ex&0xfc)+((ex+1)&3);
251 int ex=mch[i];ex++;if(ex>32){ex=0;}
255 int ex=trst[i];if(ex>127){ex=ex-256;}
256 if(sh&1){ex+=12;}else{ex++;}
258 if( ex<0 ){ex=ex+256;}
262 int ex=trkey[i];if( ex>63 && ex<128){ex=ex-128;}
263 if(sh&1){ex+=12;}else{ex++;}
265 if( ex<0 ){ex=ex+128;}
270 if(ex<0x80){ex=0x80;}else{if(ex==0x80){ex=0x90;}else{ex=0;}}
274 if( ke=='-' || ke=='<' || ke==',' ){
276 int ex=trmod[i];trmod[i]=(ex&0xfc)+((ex+3)&3);
279 int ex=mch[i];ex--;if(ex<0){ex=32;}
283 int ex=trst[i];if(ex>127){ex=ex-256;}
284 if(sh&1){ex-=12;}else{ex--;}
286 if( ex<0 ){ex=ex+256;}
290 int ex=trkey[i];if( ex>63 && ex<128){ex=ex-128;}
291 if(sh&1){ex-=12;}else{ex--;}
293 if( ex<0 ){ex=ex+128;}
298 if(ex<0x80){ex=0x90;}else{if(ex==0x90){ex=0x80;}else{ex=0;}}
305 if( cx==0 ){trmod[i]=0;}
306 if( cx==1 ){mch[i]=0;}
307 if( cx==2 ){trst[i]=0;}
308 if( cx==3 ){trkey[i]=/*0x80*/0;}
309 if( cx==4 ){trrhy[i]=0;}
314 if( cx==0 ){trmod[j]=0;}
315 if( cx==1 ){mch[j]=0;}
316 if( cx==2 ){trst[j]=0;}
317 if( cx==3 ){trkey[j]=/*0x80*/0;}
318 if( cx==4 ){trrhy[j]=0;}
326 int ex=trmod[i]^1;trmod[i]=ex;
331 if( ex>16 ){ex-=16;}else{ex+=16;}
336 int ex=trst[i];if(ex>127){ex=ex-256;}
338 if(ex>=-99 && ex<=99){
339 if( ex<0 ){ex=ex+256;}
345 if( ex>63 ){ex=ex-128;}
346 ex=-ex;if( ex<0 ){ex=ex+128;}
350 if( cx==4 ){trrhy[i]=(trrhy[i]^0x80);}
354 if( ke==0x0b ){i=btrack;}
356 if( ke==0x05 ){i--;if(i<btrack){i=btrack+17;}}
357 if( ke==0x18 ){i++;if(i>btrack+17){i=btrack;}}
358 if( ke==0x13 ){cx--;if(cx<-1){cx=5;}}
359 if( ke==0x04 ){cx++;if(cx>5){cx=-1;}}
361 if( ke==0x17 && btrack>0){
362 if(sh&1){btrack-=1;i-=1;}else{btrack-=9;i-=9;}
363 if(i<0){btrack=0;i=0;}
366 if( ke==0x12 && btrack<18){
367 if(sh&1){btrack+=1;i+=1;}else{btrack+=9;i+=9;}
368 if(btrack>18){btrack=18;i=18;}
373 if( ke=='P' ){trmod_set(i,0,sh&1);ke=0;}
374 if( ke=='M' ){trmod_set(i,1,sh&1);ke=0;}
375 if( ke=='X' ){trmod_set(i,2,sh&1);ke=0;}
376 if( ke=='R' ){trmod_set(i,3,sh&1);ke=0;}
381 B_LOCATE(55,6);B_PRINT("ExChange Track Data");
382 B_LOCATE(72,7);B_PRINT("Source Track=");B_PRINT(fstr(i+1,2));
383 B_LOCATE(68,8);B_PRINT("Distnation Track=");
384 exc1: ex=trk_sel(cx);if(ex==0 && i==track){goto exc1;}
386 B_LOCATE(68+17,8);B_PRINT(fstr(track+1,2));
387 ts_swap(i,track);trk_lin(i,-1,0);trk_lin(track,-1,0);}
393 B_LOCATE(55,6);B_PRINT("Copy Track Data");
394 B_LOCATE(72,7);B_PRINT("Source Track=");B_PRINT(fstr(i+1,2));
395 B_LOCATE(68,8);B_PRINT("Distnation Track=");
396 cpy1: ex=trk_sel(cx);if(ex==0 && i==track){goto cpy1;}
398 B_LOCATE(68+17,8);B_PRINT(fstr(track+1,2));
399 ts_copy(i,track);trk_lin(track,-1,0);}
406 B_LOCATE(55,6);B_PRINT("Insert Track Data");
407 B_LOCATE(72,7);B_PRINT("Source Track=");B_PRINT(fstr(i+1,2));
408 B_LOCATE(68,8);B_PRINT("Distnation Track=");
409 ins1: ex=trk_sel(cx);if(ex==0 && i==track){goto ins1;}
411 B_LOCATE(68+17,8);B_PRINT(fstr(track+1,2));
412 ts_ins(i,track);for(j=0;j<36;j++){trk_lin(j,-1,0);}
420 B_LOCATE(55,6);B_PRINT("Sort Track Data");
421 B_LOCATE(72,7);B_PRINT("Start Track=");B_PRINT(fstr(i+1,2));
422 B_LOCATE(72,8);B_PRINT("End Track=");
423 srt1: ex=trk_sel(cx);if(ex==0 && i>=track){goto srt1;}
425 B_LOCATE(68+17,8);B_PRINT(fstr(track+1,2));
426 ts_sort(i,track);for(j=0;j<36;j++){trk_lin(j,-1,0);}
434 B_LOCATE(55,6);B_PRINT("Mix Track Data");
435 B_LOCATE(72,7);B_PRINT("Source Track 1=");B_PRINT(fstr(track+1,2));
436 B_LOCATE(72,8);B_PRINT("Source Track 2=");
437 mix1: ex=trk_sel(cx);if(ex==0 && i==track){goto mix1;}
440 B_LOCATE(72+15,8);B_PRINT(fstr(track+1,2));
441 B_LOCATE(71,9);B_PRINT("Distnation Track=");
445 B_LOCATE(71+17,9);B_PRINT(fstr(track+1,2));
447 trk_lin(i,-1,0);trk_lin(i2,-1,0);trk_lin(track,-1,0);
451 txerase(432,107-16,744,164+16);
453 if( ke==12 || ke=='D' ){
454 B_LOCATE(55,6);B_PRINT("Erase Track Data");
455 B_LOCATE(79,7);B_PRINT("Track=");B_PRINT(fstr(i+1,2));
456 msg(_("Delete all track data"));
457 if(yn_sel()>0){ts_clear(i);trk_lin(i,-1,0);}
461 B_LOCATE(55,6);B_PRINT("Optimize Track Data");
462 B_LOCATE(79,7);B_PRINT("Track=");
463 if(sh&1){B_PRINT("All");}else{B_PRINT(fstr(i+1,2));}
464 msg(_("Optimize track data"));
471 trk_opt_sub(j,0,tr_len[j]);trk_lin(j,-1,0);
475 trk_opt_sub(i,0,tr_len[i]);trk_lin(i,-1,0);
480 if( ke=='A' || ke=='R' ){
482 B_LOCATE(55,6);B_PRINT("SameMeas Compress Track Data");
484 B_LOCATE(55,6);B_PRINT("Repeat Compress Track Data");
486 B_LOCATE(79,7);B_PRINT("Track=");
487 if(sh&1){B_PRINT("All");}else{B_PRINT(fstr(i+1,2));}
488 msg(_("Compress track data"));
520 B_LOCATE(55,6);B_PRINT("SameMeas/Repeat Extract Track Data");
521 B_LOCATE(79,7);B_PRINT("Track=");
522 if(sh&1){B_PRINT("All");}else{B_PRINT(fstr(i+1,2));}
523 msg(_("Extrack track data"));
529 if(tr_len[j]>4){ts_ext(j);trk_lin(j,-1,0);}
532 ts_ext(i);trk_lin(i,-1,0);
539 B_LOCATE(55,6);B_PRINT("Meas End Rewrite");
540 B_LOCATE(79,7);B_PRINT("Track=");
541 if(sh&1){B_PRINT("All");}else{B_PRINT(fstr(i+1,2));}
542 ts_measend(i,sh);/*trk_lin(i,-1,0);*/
543 txerase(432,107-16,744,164+16);
549 char tmp0[128],path2[128];
553 strcpy(path2,trk_path);fsel(trk_file,path2,0x005);
554 if( es==0 && trk_file[0]!=0 ){
555 strcpy(tmp0,path2);strcat(tmp0,trk_file);
556 msg(_("Loading track data ..."));
557 if(trk_load(tmp0)==0){
558 if(!(cnfflag&0x0008)){strcpy(trk_path,path2);}
567 char tmp0[128],path2[128];
571 strcpy(path2,trk_path);fsel(trk_file,path2,0x105);
572 if( es==0 && trk_file[0]!=0 ){
573 strcpy(tmp0,path2);strcat(tmp0,trk_file);
574 msg(_("Saving track data ..."));
575 if(trk_save(tmp0)==0){
576 if(!(cnfflag&0x0008)){strcpy(trk_path,path2);}
584 logo(512);edit_scr=0;
587 /***************************/
588 /*「現在 Track 1 を処理しています」*/
589 void exetrk_dsp(int i)
591 B_LOCATE(55,9);B_PRINT("TRACK=");B_PRINT(fstr(i+1,2));
594 /***************************/
595 void trmod_set(int tr,int md,int sh)
612 /***************************/
613 void trk_lin(int i,int cx,int m)
617 static char play_mode[5][5]={"Play","Mute"," Mix"," Rec"," Rec"};
618 static char play_modec[5]={3,2,1,6,6};
620 if(i<btrack || i>btrack+17){return;}
623 if(m==1){c1=0;c2=15;}else{c1=15;c2=0;}
626 if(cx<0){vdis2(13,y,i+1,2,15,-1);}
629 int cl0=play_modec[trmod[i]&3],cl1=c1,cl2=c2;
632 sdis2(16,y,play_mode[trmod[i]&3],4,cl1,cl2);}
636 strcpy(tmp0,chstr(ex));
637 sdis2(21,y,tmp0,3,c1,c2);
641 if( ex>127 ){ex=ex-256;}
642 vdis2(25,y,ex,3,c1,c2);
647 sdis2(29,y,"OFF",3,c1,c2);
649 if( ex>63 ){ex=ex-128;}
650 vdis2(29,y,ex,3,c1,c2);
655 strcpy(tmp0,"ON ");if(trrhy[i]>0x80){tmp0[2]='+';}
656 sdis2(33,y,tmp0,3,c1,c2);
658 sdis2(33,y,"OFF",3,c1,c2);}
660 /* if(cx==5 || cx<0){sdis2(37,y,trkmemo[i],36,c1,c2);}*/
661 if(cx==5 || cx<0){sdis2(37,y,eucconv(trkmemo[i]),36,c1,c2);}
662 if(cx<0 && m<2){trksize(i);}
665 /***************************/
666 void ts_swap(int a,int b)
672 if(size_change(a,tr_len[b])){return;}
673 if(size_change(b,tr_len[a])){return;}
675 memcpy_l(dat,trk[a],tr_len[a]);
676 memcpy_l(trk[a],trk[b],tr_len[b]);
677 memcpy_l(trk[b],dat,tr_len[a]);
679 for(i=0;i<2;i++){for(j=0;j<4;j++){
680 d=tr_pos[a][i][j];tr_pos[a][i][j]=tr_pos[b][i][j];tr_pos[b][i][j]=d;}}
682 d=tr_len[a];tr_len[a]=tr_len[b];tr_len[b]=d;
684 d=trmod[a];trmod[a]=trmod[b];trmod[b]=d;
685 d=trrhy[a];trrhy[a]=trrhy[b];trrhy[b]=d;
686 d=mch[a];mch[a]=mch[b];mch[b]=d;
687 d=trkey[a];trkey[a]=trkey[b];trkey[b]=d;
688 d=trst[a];trst[a]=trst[b];trst[b]=d;
689 strcpy(tmp0,trkmemo[a]);strcpy(trkmemo[a],trkmemo[b]);strcpy(trkmemo[b],tmp0);
692 /***************************/
693 void ts_ins(int a,int b)
698 for(i=a;i<b;i++){ts_swap(i,i+1);}
700 for(i=a-1;i>b-1;i--){ts_swap(i,i+1);}
704 /***************************/
705 void ts_sort(int a,int b)
710 B_LOCATE(55,9);B_PRINT("TRACK=");B_PRINT(fstr(i+1,2));
712 if( (mch[i]>mch[j] || ( mch[j]==10||mch[j]==26) ||mch[i]==0) && mch[j]!=0 ){
719 /***************************/
720 void ts_copy(int a,int b)
725 if(size_change(b,tr_len[a])){return;}
727 memcpy_l(trk[b],trk[a],tr_len[a]);
729 for(i=0;i<2;i++){for(j=0;j<4;j++){tr_pos[b][i][j]=tr_pos[a][i][j];}}
730 tr_len[b]=tr_len[a];trmod[b]=trmod[a];
732 mch[b]=mch[a];trkey[b]=trkey[a];trst[b]=trst[a];
733 strcpy(trkmemo[b],trkmemo[a]);
736 /***************************/
741 trk[a][0]=0xfe;tr_len[a]=4;
742 for(j=0;j<4;j++){tr_pos[a][0][j]=0;tr_pos[a][1][j]=0;}
743 trmod[a]=0;trno[a]=a+1;trrhy[a]=0;mch[a]=a+1;trkey[a]=0;trst[a]=0;
744 if(a==9){trrhy[9]=128;trkey[9]=128;}
751 /***************************/
752 void ts_mix(int tr1,int tr2,int tr3)
760 po=trk_ext_sub(tr1,(char*)cpbuf);if(po==0){return;}
761 po=trk_ext_sub(tr2,(char*)rcpbuf);if(po==0){return;}
763 po=trk_mix_sub(cpbuf,rcpbuf);
764 if(size_change(tr3,po+4)){return;}
766 memcpy_l(trk[tr3],dat,po);trk[tr3][po]=0xfe;tr_len[tr3]=po+4;
771 /***************************/
772 void ts_measend(int tr1,int sh)
774 static unsigned char bars[4*7]={
775 0xf9,0,0,0, 0xf9,0,0,0, 0,48,0,0, 0xf8,4,0,0, 0,0,0,0,
776 0xfd,0,0,0, 0xf8,3,0,0};
778 int po,mc,barlen,ofs,maxm;
782 msg("MEAS END CHANGE");
784 barlen = tbase * 4 * beat1 / beat2;
785 B_LOCATE(17,1);B_PRINT("MEAS ST=");
786 barlen=vinput(barlen,0x804);if(es!=0){msg_clr();return;}
787 if(barlen<24 || barlen>2000){goto loop;}
789 B_LOCATE(30,1);B_PRINT("OFFSET=");
790 ofs=vinput(0,0x804);if(es!=0){msg_clr();return;}
791 if(ofs<0 || ofs>2000){goto loop2;}
793 B_LOCATE(42,1);B_PRINT("LAST MEAS=");
794 maxm=vinput(0,0x804);if(es!=0){msg_clr();return;}
795 if(maxm<0 || maxm>2000){goto loop3;}
801 if(tr_len[tr1]<=4){goto skip;}
803 po=trk_ext_sub(tr1,(char*)cpbuf);if(po==0){return;}
805 po=0;mc=((tr_step[tr1]-ofs)/barlen);
807 if(maxm>0 && mc<maxm){mc=maxm;if(ofs){mc--;}}
812 dat[po]=0;dat[po+1]=0;dat[po+2]=0;dat[po+3]=0;
813 if(i<240){dat[po+1]=i;i=0;}else{dat[po+1]=240;i-=240;}
820 memcpy(&dat[po],bars,4*7);
822 dat[po+9]=barlen;dat[po+13]=1;
825 dat[po+9]=240;dat[po+13]=barlen/240;
826 bl=barlen-240*dat[po+13];
830 if(mc<240){dat[po+25]=mc;mc=0;}else{dat[po+25]=240;mc-=240;}
834 po=repeat_ext(rcpbuf,po);
836 po=trk_mix_sub(rcpbuf,cpbuf);
837 if(size_change(tr1,po+4)){return;}
839 if(po>4 && dat[po-4]==0xfd && dat[po-8]==0xfd){po-=4;}
841 memcpy_l(trk[tr1],dat,po);
842 trk[tr1][po]=0xfe;tr_len[tr1]=po+4;
847 tr1++;if(tr1<36){goto loopx;}
852 /***************************/
859 po=trk_ext_sub(i,(char*)cpbuf);if(po==0){return;}
862 if(size_change(i,po)){return;}
864 memcpy_l(trk[i],cpbuf,po);
866 /* trk_lin(i,-1,0);*/
869 /***************************/
872 int i,us=-(4*36),s,c=0,fr=buff_free,yy;
874 if(tr<0){c=-1;}else{tr_step[tr]=step_cluc2(tr,0,tr_len[tr]);}
877 fr+=(tr_alc[i]-tr_len[i]);
878 if((tr==-1 || tr==i)&& i>=btrack && i<btrack+18){
879 yy=192+(i-btrack)*16;
881 vdis2(74,yy,(tr_len[i]-4)>>2,5,15,c);
882 s=tr_step[i];vdis2(80,yy,s,12,15,c);
885 vdis2(6,0,fr>>2,7,15,8);vdis2(6,512,fr>>2,7,15,8);
886 vdis2(21,0,us>>2,7,15,8);vdis2(21,512,us>>2,7,15,8);
889 /***************************/
893 for(i=0 ;i<36;i++){tr_step[i]=step_cluc2(i,0,tr_len[i]);}
896 /***************************/