home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / cdrom / scdplayer / scdplyrics.rexx < prev    next >
OS/2 REXX Batch file  |  1996-09-03  |  3KB  |  162 lines

  1. /* First try at giving SCDP a lyrics window via MUIRexx */
  2.  
  3. /* Definitions */
  4. Text_Contents = 0x8042f8dc
  5. Text_PreParse = 0x8042566d
  6. Font = 0x8042be50
  7. Font_Big = -6
  8. /* End Definitions */
  9.  
  10. /* Consts */
  11. SLVER="1.0"
  12. VERSTR="$VER: SCDPLyrics 1.0 (30.8.96)"
  13. /* End Consts */
  14.  
  15. ADDRESS SCDPLYRICS
  16.  
  17. OPTIONS RESULTS
  18. OPTIONS FAILAT 120
  19.  
  20. window ID LYRI PORT SCDPLYRICS COMMAND '"SETVAR QUIT QUIT"' TITLE '"SCDPlayer Lyrics 'SLVER' "'
  21.     group
  22.         text ID LINE ATTRS Text_Contents '""' Text_PreParse '"\033c"' Font Font_Big
  23.     endgroup
  24. endwindow
  25.  
  26. 'SETVAR QUIT ""'
  27.  
  28. LastTrack=0
  29. LastIndex=0
  30.  
  31. TS=0
  32. TE=360000
  33. Track=0
  34. Ind=0
  35.  
  36. Running=1
  37. FO=0
  38.  
  39. DO WHILE Running
  40.     'GETVAR QUIT'
  41.     IF ~SHOW('P','SCDP') | ~SHOW('P','SCDPLYRICS') | RESULT~='' THEN DO
  42.         quit
  43.         IF FO THEN
  44.             CALL CLOSE('lfile')
  45.         EXIT
  46.         END
  47.         
  48.     ADDRESS SCDP
  49.     STATUS
  50.     Stat=RESULT
  51.     
  52.     IF(Stat=STOPPED | Stat=NODISK) THEN DO
  53.         Ind=0
  54.         Track=0
  55.         END
  56.     ELSE DO
  57.         PLAYINGTRACK
  58.         IF RC=0 THEN Track=RESULT
  59.         TRACKSTART Track
  60.         IF RC=0 THEN TS=RESULT
  61.         PLAYINGPOS
  62.         IF RC=0 THEN Ind=RESULT-TS
  63.         TRACKEND Track
  64.         IF RC=0 THEN TE=RESULT
  65.         END
  66.     
  67.     ADDRESS SCDPLYRICS
  68.     
  69.     IF Track~=0 & (LastTrack=0 | LastTrack~=Track | Ind<LastIndex) THEN DO     /* Empezar lectura */
  70.         Next=TE-TS+75
  71.         Lyric=''
  72.  
  73.         IF FO THEN
  74.             CALL CLOSE('lfile')
  75.         
  76.         ADDRESS SCDP    
  77.         DISKSPATH
  78.         DP=RESULT
  79.         IDFILENAME
  80.         fname=DP'LY'SUBSTR(RESULT,3)
  81.         ADDRESS SCDPLYRICS
  82.             
  83.         IF ~OPEN('lfile',fname,'R') THEN DO
  84.             FO=0
  85.             text ID LINE ATTRS Text_Contents '"'Lyric'"'
  86.             END
  87.         ELSE DO
  88.             FO=1
  89.         
  90.             l=''
  91.             DO WHILE ~EOF('lfile') & l~='#'Track
  92.                 l=READLN('lfile')
  93.                 END
  94.             
  95.             IF ~EOF('lfile') THEN DO
  96.                 Next=-1
  97.                 Lyric=''
  98.                 END
  99.             ELSE DO
  100.                 text ID LINE ATTRS Text_Contents '"'Lyric'"'
  101.                 END
  102.             END
  103.         END
  104.     
  105.     IF Track=0 THEN DO
  106.         Lyric=''
  107.         Next=2000
  108.         text ID LINE ATTRS Text_Contents '"'Lyric'"'
  109.         IF FO THEN DO
  110.             CALL CLOSE('lfile')
  111.             FO=0
  112.             END
  113.         END
  114.     ELSE DO                 /* Leer siguiente */
  115.         IF FO THEN DO
  116.             FL=~EOF('lfile') 
  117.             END
  118.         ELSE DO
  119.             FL=0
  120.             END
  121.         DO WHILE FL & Ind>Next
  122.             text ID LINE ATTRS Text_Contents '"'Lyric'"'
  123.             l=READLN('lfile')
  124.             IF l='' | LEFT(l,1)='#' THEN DO
  125.                 Next=TE-TS+75
  126.                 Lyric=''
  127.                 END
  128.             ELSE DO
  129.                 PARSE VAR l pos Lyric
  130.                 a=0
  131.                 b=0
  132.                 c=0
  133.                 pa=INDEX(pos,':')
  134.                 pb=INDEX(pos,'.')
  135.                 IF pa~=0 THEN DO
  136.                     a=LEFT(pos,pa-1)
  137.                     IF pb~=0 THEN DO
  138.                         b=SUBSTR(pos,pa+1,pb-pa-1)
  139.                         c=SUBSTR(pos,pb+1)
  140.                         END
  141.                     ELSE DO
  142.                         b=SUBSTR(pos,pa+1)
  143.                         END
  144.                     END
  145.                 Next=a*4500+b*75+(c*15)%2
  146.                 END
  147.             END
  148.         END
  149.     
  150.     
  151.     If Next-Ind>150 THEN DO
  152.         ADDRESS COMMAND "Delay <>NIL: 1000"
  153.         END
  154.     ELSE DO
  155.         ti=min(1000,max(0,((Next-Ind)*1000)%75))
  156.         ADDRESS COMMAND "Delay <>NIL: "ti
  157.         END
  158.         
  159.     LastIndex=Ind
  160.     LastTrack=Track
  161.     END
  162.