/* Organize Playing Sequence - Ed Wiles, 21st March 1995 */ /* NOTE: Ignores sections! (i.e. only works with one playing sequence) */ /* Also ignores line highlighting */ address OCTAMED_REXX options results 'wi_request "Really organize the playing sequence? (Blocks may be deleted)" Organize|Cancel' if result = 0 then exit 'ed_getnumblocks var numblocks' if numblocks = 1 then do 'wi_showstring Song has only one block!' exit end 'op_update off' 'wi_close playingseq' 'wi_close blocklist' 'wi_close blockproperties' block = 0 'wi_showstring Deleting blocks not in playing sequence...' do until block >= result 'ed_isblockinseq block' block if result = 0 then do 'ed_goto block' block 'ed_deleteblock' end block = block + 1 ed_getnumblocks end 'ed_getnumplayseq var seqlen' 'wi_showstring Getting sequence blocks...' do i = 1 to seqlen 'ed_getplayseqblock' i 'var oldseq.'i end newseq.0 = 0; 'ed_setplayseqblock 0 0' newblock = 1; flag = -1; 'wi_showstring Organizing playing sequence...' do seqpos = 1 to seqlen - 1 do i = 0 to seqpos - 1 if oldseq.i = oldseq.seqpos then do flag = i break end end if flag >= 0 then newseq.seqpos = newseq.flag else do newseq.seqpos = newblock newblock = newblock + 1 end 'ed_setplayseqblock' seqpos newseq.seqpos; flag = -1 end currblock = 0 'wi_showstring Swapping blocks...' do seqpos = 0 to seqlen - 1 if newseq.seqpos < currblock then iterate if oldseq.seqpos ~= newseq.seqpos then do 'ed_goto block' oldseq.seqpos 'ed_getnumtracks var oldtracks' 'ed_getblockname var oldname' 'rn_copy block' 'ed_goto block' newseq.seqpos 'ed_getnumtracks var newtracks' if oldtracks > newtracks then 'ed_setblocktracks' oldtracks 'ed_getblockname var newname' 'rn_swap block' if oldtracks < newtracks then do 'ed_setblocktracks' oldtracks 'ed_setblocktracks block' oldseq.seqpos newtracks end if compare(oldname, newname) ~= 0 then do flag = 1 'ed_setblockname "'oldname'"' end 'ed_goto block' oldseq.seqpos 'rn_paste block' if flag = 1 then do flag = 0 'ed_setblockname "'newname'"' end do i = seqpos + 1 to seqlen - 1 if oldseq.i = currblock then oldseq.i = oldseq.seqpos end end currblock = currblock + 1 end 'ed_gotoblock first' 'ed_gotoplayseq first' 'op_update on' 'wi_showstring Playing sequence organized.'