home *** CD-ROM | disk | FTP | other *** search
/ Sound, Music & MIDI Collection 2 / SMMVOL2.bin / DEMO / PRG / CIRCLES.ZIP / CI_MAIN.DIX / 00009_TIMEL.ls < prev    next >
Encoding:
Text File  |  1995-05-01  |  6.8 KB  |  288 lines

  1. on timeline cidx
  2.   global t1_segcnt, t2_segcnt, ltl_mix, ltl_time, ltl_scast, ltl_len, namepause_bs, mixedloop
  3.   set cvidx to value(cidx)
  4.   if 0 then
  5.     if cvidx > 0 then
  6.       if not voidp(getAt(ltl_mix, cvidx)) then
  7.         if (getAt(ltl_mix, cvidx) = "M") or (getAt(ltl_mix, cvidx) = "-") then
  8.           repeat with i = 0 to 11
  9.             if (cvidx - i) < 1 then
  10.               exit repeat
  11.             end if
  12.             if getAt(ltl_mix, cvidx - i) = "M" then
  13.               setAt(ltl_mix, cvidx - i, "-")
  14.               exit repeat
  15.             end if
  16.           end repeat
  17.         end if
  18.       end if
  19.     end if
  20.   end if
  21.   mixneed_off()
  22.   set acs to 1
  23.   repeat with i = 1 to 12
  24.     if (i > t1_segcnt) and (i > t2_segcnt) then
  25.       tl_insert(acs, 0, 0, 0, 0)
  26.       set acs to acs + 1
  27.       next repeat
  28.     end if
  29.     set t1_idx to pos2idx(acs, 0)
  30.     set t2_idx to pos2idx(acs, 12)
  31.     if getAt(ltl_mix, acs) = "M" then
  32.       set acs_mix to getAt(ltl_len, acs)
  33.       set acs to acs + acs_mix
  34.       next repeat
  35.     end if
  36.     set s1 to value(ar1seg(mget, t1_idx))
  37.     set s2 to value(ar1seg(mget, t2_idx))
  38.     set n1 to Ar1sound(mget, t1_idx)
  39.     set n2 to Ar1sound(mget, t2_idx)
  40.     if not (s1 = 0) then
  41.       set tmp_s to s1 - 1
  42.       if not (n1 = namepause_bs) then
  43.         set segtime to Ar1time(mget, t1_idx) / s1
  44.       else
  45.         if not (t2_idx = 0) then
  46.           set segtime to Ar1time(mget, t2_idx) / ar1seg(mget, t2_idx)
  47.         end if
  48.       end if
  49.       tl_insert(acs, s1, segtime, Ar1play(mget, t1_idx), "1")
  50.       mixneed_on()
  51.       set acs to acs + 1
  52.       repeat with i = tmp_s down to 1
  53.         tl_insert(acs, "-", segtime, 0, "-")
  54.         set acs to acs + 1
  55.       end repeat
  56.       next repeat
  57.     end if
  58.     if not (s2 = 0) then
  59.       set tmp_s to s2 - 1
  60.       if not (n2 = namepause_bs) then
  61.         set segtime to Ar1time(mget, t2_idx) / s2
  62.       else
  63.         if not (t1_idx = 0) then
  64.           set segtime to Ar1time(mget, t1_idx) / ar1seg(mget, t1_idx)
  65.         end if
  66.       end if
  67.       tl_insert(acs, s2, segtime, Ar1play(mget, t2_idx), "2")
  68.       mixneed_on()
  69.       set acs to acs + 1
  70.       repeat with i = tmp_s down to 1
  71.         tl_insert(acs, "-", segtime, 0, "-")
  72.         set acs to acs + 1
  73.       end repeat
  74.     end if
  75.   end repeat
  76.   set mixedloop to 0
  77. end
  78.  
  79. on pos2idx pos, add
  80.   set retidx to 0
  81.   repeat with i = 1 + add to 12 + add
  82.     if pos = ar1pos(mget, i) then
  83.       set retidx to i
  84.       exit repeat
  85.     end if
  86.   end repeat
  87.   return retidx
  88. end
  89.  
  90. on chk_timeline sel_track, sel_idx, segszval
  91.   set retval to 1
  92.   if sel_track = 1 then
  93.     set add_t to 0
  94.     set sub_t to 12
  95.   else
  96.     set add_t to 12
  97.     set sub_t to -12
  98.   end if
  99.   set i to 1
  100.   repeat while 1
  101.     if AR1idx(mget, i + add_t) = sel_idx then
  102.       set sel_pos to ar1pos(mget, i + add_t)
  103.       set sel_time to Ar1time(mget, i + add_t)
  104.       exit repeat
  105.     end if
  106.     set i to i + 1
  107.   end repeat
  108.   set z to 1
  109.   set chk_idx to 0
  110.   repeat while 1
  111.     if AR1idx(mget, z + add_t + sub_t) <= 0 then
  112.       exit repeat
  113.     end if
  114.     if ar1pos(mget, z + add_t + sub_t) = sel_pos then
  115.       set chk_idx to AR1idx(mget, z + add_t + sub_t)
  116.       exit repeat
  117.     end if
  118.     set z to z + 1
  119.   end repeat
  120.   delay(30)
  121.   if chk_idx <> 0 then
  122.     set totime to 0
  123.     set totseg to 1
  124.     repeat while 1
  125.       if AR1idx(mget, chk_idx) = 0 then
  126.         exit repeat
  127.       end if
  128.       if totseg >= segszval then
  129.         exit repeat
  130.       end if
  131.       set totime to totime + Ar1time(mget, chk_idx)
  132.       set chk_idx to chk_idx + 1
  133.       set totseg to totseg + 1
  134.     end repeat
  135.   end if
  136.   return retval
  137. end
  138.  
  139. on correct_s s
  140.   if chars(s, 1, 1) < " " then
  141.     set s to chars(s, 2, length(s))
  142.   end if
  143.   if chars(s, length(s), length(s)) < " " then
  144.     set s to chars(s, 1, length(s) - 1)
  145.   end if
  146.   return s
  147. end
  148.  
  149. on tl_create
  150.   global ltl_len, ltl_time, ltl_scast, ltl_mix, ltl_upd
  151.   set ltl_len to []
  152.   set ltl_time to []
  153.   set ltl_scast to []
  154.   set ltl_mix to []
  155.   set ltl_upd to []
  156.   setAt(ltl_len, 25, "0")
  157.   setAt(ltl_time, 25, 0)
  158.   setAt(ltl_scast, 25, 0)
  159.   setAt(ltl_mix, 25, 0)
  160.   setAt(ltl_upd, 25, 0)
  161. end
  162.  
  163. on tl_insert pos, len, time, scast, mix
  164.   global ltl_len, ltl_time, ltl_scast, ltl_mix, ltl_upd
  165.   setAt(ltl_len, pos, string(len))
  166.   setAt(ltl_mix, pos, string(mix))
  167.   setAt(ltl_time, pos, time)
  168.   setAt(ltl_scast, pos, scast)
  169. end
  170.  
  171. on tl_delete pos
  172.   global ltl_len, ltl_time, ltl_scast, ltl_mix
  173.   deleteAt(ltl_len, pos)
  174.   deleteAt(ltl_time, pos)
  175.   deleteAt(ltl_scast, pos)
  176.   deleteAt(ltl_mix, pos)
  177.   deleteAt(ltl_upd, pos)
  178. end
  179.  
  180. on tl_timefrom pos
  181.   global ltl_len, ltl_time, ltl_scast, ltl_mix
  182.   set ret_time to 0
  183.   repeat with i = pos to 12
  184.     set ret_time to ret_time + getAt(ltl_time, i)
  185.   end repeat
  186.   return ret_time
  187. end
  188.  
  189. on tl_maxpos dummy
  190.   global ltl_len, ltl_time, ltl_scast, ltl_mix
  191.   set iexit to 0
  192.   repeat with i = 1 to 12
  193.     set iexit to iexit + value(getAt(ltl_len, i))
  194.   end repeat
  195.   return iexit
  196. end
  197.  
  198. on tl_getmixed
  199.   global ltl_len, ltl_time, ltl_scast, ltl_mix
  200.   set iexit to 0
  201.   repeat with i = 1 to 12
  202.     set tmp_i to string(getAt(ltl_mix, i))
  203.     if tmp_i = "M" then
  204.       set iexit to iexit + 1
  205.     end if
  206.   end repeat
  207.   return iexit
  208. end
  209.  
  210. on tl_getupd
  211.   global ltl_len, ltl_time, ltl_scast, ltl_upd
  212.   set iexit to 0
  213.   repeat with i = 1 to 12
  214.     set tmp_i to string(getAt(ltl_upd, i))
  215.     if tmp_i = "U" then
  216.       set iexit to i
  217.       exit repeat
  218.     end if
  219.   end repeat
  220.   return iexit
  221. end
  222.  
  223. on set_remix cidx
  224.   global t1_segcnt, t2_segcnt, ltl_mix, ltl_time, ltl_scast, ltl_len, namepause_bs
  225.   set cvidx to value(cidx)
  226.   if cvidx > 0 then
  227.     if not voidp(getAt(ltl_mix, cvidx)) then
  228.       if (getAt(ltl_mix, cvidx) = "M") or (getAt(ltl_mix, cvidx) = "-") then
  229.         repeat with i = 0 to 11
  230.           if (cvidx - i) < 1 then
  231.             exit repeat
  232.           end if
  233.           if getAt(ltl_mix, cvidx - i) = "M" then
  234.             setAt(ltl_mix, cvidx - i, "-")
  235.             mixneed_on()
  236.             exit repeat
  237.           end if
  238.         end repeat
  239.       end if
  240.     end if
  241.   end if
  242. end
  243.  
  244. on tltimestop led
  245.   global t1_segcnt, t2_segcnt, ltl_mix, ltl_time, ltl_scast, ltl_len, LED_1, LED_2
  246.   if t1_segcnt >= t2_segcnt then
  247.     set tx to t1_segcnt
  248.   else
  249.     set tx to t2_segcnt
  250.   end if
  251.   if led > (tx + 1) then
  252.     return 0
  253.   end if
  254.   set retvar to 0
  255.   repeat with i = 1 to led
  256.     set tmp to getAt(ltl_time, i)
  257.     if tmp = 0 then
  258.       return retvar
  259.     end if
  260.     set retvar to retvar + tmp
  261.   end repeat
  262.   return retvar
  263. end
  264.  
  265. on tltimestart led
  266.   global t1_segcnt, t2_segcnt, ltl_mix, ltl_time, ltl_scast, ltl_len, LED_1, LED_2
  267.   if t1_segcnt >= t2_segcnt then
  268.     set tx to t1_segcnt
  269.   else
  270.     set tx to t2_segcnt
  271.   end if
  272.   if led > tx then
  273.     return 0
  274.   end if
  275.   set retvar to 0
  276.   if led = 1 then
  277.     return 0
  278.   end if
  279.   repeat with i = 1 to led - 1
  280.     set tmp to getAt(ltl_time, i)
  281.     if tmp = 0 then
  282.       return retvar
  283.     end if
  284.     set retvar to retvar + tmp
  285.   end repeat
  286.   return retvar
  287. end
  288.