mcMp3 Player — File Browser

mcMp3Playerv2.2 / mcMp3Playerv2.2 / MCMP3 / mcmp3.mrc

mcmp3.mrc — 44.36 KB — Download this file

; _-==-_-==-_-==-_-==-_-==-_-==-_-==-_-==-_
; mcMp3 Player v2.2
; Author: mc_twistah
; web: http://www.manowarscript.tk
; e-mail: mctwistah@engineer.com or mjtulagan@hotmail.com
; _-==-_-==-_-==-_-==-_-==-_-==-_-==-_-==-_

on *:load: { 
  if ($version >= 6.14) {
    linesep -a
    echo 4 -a  mcMp3 Player v2.2 had been loaded.
    echo 4 -a Author: mc_twistah
    echo 4 -a In case of bugs please e-mail me at mctwistah@engineer.com or mjtulagan@hotmail.com
    echo 4 -a http://www.manowarscript.tk
    linesep -a
    set %mcmp3run 1
    set %mctrans -1
    set %mctrans2 none
    set %files.html 0
    set %bmethod none
    set %dock.pos top
    set %thmedir $scriptdirthemes\default\
    mctheme
    mcmp3 
  }
  else {
    echo -a Sorry but you can not use this addon in $version $+ . Please download the latest mirc at http://www.mirc.com
    echo -a Unloading addon in 2 secs...
    .timer 1 2 .unload -rs $shortfn($scriptdirmcmp3.mrc)
  }
}

on *:unload: {
  write -c $mcmp.dat
  write -c $mcmp3.dat
  if ($insong) || ($inmidi) || ($inwave) { .splay stop }
  .timermp30* off
  $+(.timersc_,$dname,*) off
  unset %prevt %playt %nextt %pauset %stopt %dirt %mutet %addirt %addfilet %cleart %xt %helpt %maint
  unset %plbg %pltxt %pltxtbg %plyrbg %plyrtxtbg %plyrtxt %mctheme %dock.pos %thmedir %mc.info
  unset %mpdir %srchdir %wildcard %wmp.no %mctrans %mctrans2 %files.html %bmethod %thmesel %mcmp3run
  if ($dialog(mcmp3)) { dialog -c mcmp3 }
  if ($dialog(mp3dock)) { dialog -c mp3dock }
  if ($dialog(mcsearch)) { dialog -c mcsearch }
}

alias mcmp3 if (!$dialog(mcmp3)) { themez | dialog -m $+ $1 mcmp3 mcmp3 | if (%mcmp3run == 1) { run $shortfn($scriptdirhelp.htm) | unset %mcmp3run } }

dialog mcmp3 {
  title "mcMp3 Player v2.2 [/mcmp3]"
  size -1 -1 450 120
  icon $mcicon, 0
  list 1, 43 10 190 25
  list 2, 240 10 160 93, extsel size
  icon 3, 53 65 24 24,%prevt, noborder
  icon 4, 83 65 24 24,%playt, noborder
  icon 5, 113 65 24 24,%nextt, noborder
  icon 6, 143 65 24 24,%pauset, noborder
  icon 7, 173 65 24 24,%stopt, noborder
  icon 8, 203 65 24 24,%dirt, noborder
  icon 9, 15 87 16 16,%mutet, noborder
  icon 10, 406 18 24 24,%addirt, noborder
  icon 11, 406 48 24 24,%addfilet, noborder
  icon 12, 406 78 24 24,%cleart, noborder
  icon 13, 425 3 8 8,%xt, noborder
  icon 14, 413 3 6 8,%helpt, noborder
  text "kbps", 15, 55 43 50 15
  text "00:00/00:00", 16, 115 43 55 15
  text "khz", 17, 188 43 50 15
  list 22, 38 25 200 13, size
  list 23,8 15 30 72, size
  button "", 24, 0 0 0 0 0, default
}

alias -l about { if (!$dialog(about)) dialog -mo about about }

dialog about {
  title "About mcMp3 Player v2.2"
  size -1 -1 190 90
  icon 1, 170 3 8 8, $shortfn($scriptdirimages\x.png), noborder
}

on *:dialog:about:*:*: {
  if ($devent == init) {
    dll $dll.path(imgdlg) ImgDlg 1 1 $dialog($dname).hwnd $shortfn($scriptdirimages\about.bmp)
  }
  if ($devent == sclick) { if ($did == 1) dialog -x $dname }
}

alias -l mcProgressbar { if (!$dialog(mcProgressbar)) dialog -m mcProgressbar mcProgressbar }

dialog mcProgressbar {
  title "mcProgressbar"
  size -1 -1 172 50
  text "Loading...", 1, 5 5 165 15
  text "", 2, 5 25 165 15
  text "", 3, 5 45 165 15
}

on *:dialog:mcProgressbar:*:*:{
  if ($devent == init) {
    dll $dll.path(mdx) SetMircVersion $version
    dll $dll.path(mdx) MarkDialog $dname
    dll $dll.path(mdx) SetDialog $dname style border
    dll $dll.path(mdx) SetControlMDX $dname 3 progressbar smooth > $ctl_gen
  }
}

alias -l mcid3 { if (!$dialog(mcid3)) dialog -m mcid3 mcid3 }

dialog mcid3 {
  title "mcID3v1 Tag Editor"
  size -1 -1 280 340
  icon $mcicon, 6
  edit "", 1, 5 5 270 20, autohs read
  box "ID3v1", 2, 5 30 270 142
  text "Title", 3, 40 53 20 15
  edit "", 4, 65 47 200 22, autohs limit 30
  text "Artist", 5, 35 75 25 15
  edit "", 6, 65 70 200 22, autohs limit 30
  text "Album", 7, 31 98 30 15
  edit "", 8, 65 93 200 22, autohs limit 30
  text "Year", 9, 38 122 50 15
  edit "", 10, 65 116 40 22, autohs limit 4
  text "Genre", 11, 115 122 30 15
  combo 12, 145 117 120 200, drop size
  text "Comment", 13, 15 145 45 15
  edit "", 14, 65 140 200 22, autohs limit 30
  box "MPEG info", 15, 5 175 270 135
  text "Size:", 16, 10 195 30 15
  text "", 17, 35 195 75 15
  text "Length:", 18, 10 210 35 15
  text "", 19, 50 210 65 15 
  text "Bitrate:", 20, 10 225 35 15
  text "", 21, 50 225 65 15
  text "Sample:", 22, 10 240 40 15
  text "", 23, 53 240 65 15
  text "Mode:", 24, 10 255 30 15
  text "", 25, 45 255 65 15
  text "CRCs:", 26, 10 270 30 15
  text "", 27, 45 270 65 15
  text "Copyrighted:", 28, 10 285 100 15
  text "", 29, 80 285 20 15
  box "NOTE:", 30, 122 185 148 121
  text "This only changes the ID3v1 Tag but does not change the 'Title' and 'Artist' in the playlist. This does not change the ID3v1 Tag of a filename currently played. Please read help.htm for more info.", 31, 128 200 135 105
  button "&Update", 32, 115 315 50 22
  button "&Cancel", 33, 170 315 50 22
  button "E&xit", 34, 225 315 50 22, ok
}

on *:dialog:mcid3:*:*:{
  if ($devent == init) {
    dll $dll.path(mdx) SetMircVersion $version
    dll $dll.path(mdx) MarkDialog $dname
    didtok $dname 12 59 Blues;Classic Rock;Country;Dance;Disco;Funk;Grunge;Hip-Hop;Jazz;Metal;New Age;Oldies;Other;Pop;R&B;Rap;Reggae;Rock;Techno;Industrial;Alternative;Ska;Death Metal;Pranks;Soundtrack
    didtok $dname 12 59 Euro-Techno;Ambient;Trip-Hop;Vocal;Jazz+Funk;Fusion;Trance;Classical;Instrumental;Acid;House;Game;Sound Clip;Gospel;Noise;AlternRock;Bass;Soul;Punk;Space;Meditative;Instrumental Pop;Instrumental Rock;Ethnic;Gothic
    didtok $dname 12 59 Darkwave;Techno-Industrial;Electronic;Pop-Folk;Eurodance;Dream;Southern Rock;Comedy;Cult;Gangsta;Top 40;Christian Rap;Pop/Funk;Jungle;Native American;Cabaret;New Wave;Psychedelic;Rave;Showtunes;Trailer;Lo-Fi;Tribal;Acid Punk;Acid Jazz
    didtok $dname 12 59 Polka;Retro;Musical;Rock & Roll;Hard Rock;Folk;Folk/Rock;National Folk;Swing;Fast Fusion;Bebob;Latin;Revival;Celtic;Bluegrass;Avantgarde;Gothic Rock;Progressive Rock;Psychedelic Rock;Symphonic Rock;Slow Rock;Big Band;Chorus;Easy Listening;Acoustic
    didtok $dname 12 59 Humour;Speech;Chanson;Opera;Chamber Music;Sonata;Symphony;Booty Bass;Primus;Porn Groove;Satire;Slow Jam;Club;Tango;Samba;Folklore;Ballad;Power Ballad;Rhythmic Soul;Freestyle;Duet;Punk Rock;Drum Solo;Acapella;Euro-house;Dance hall 
  }
  if ($devent == sclick) {
    if ($did == 32) id3display2 $did($dname,1)
    if ($did == 33) id3display1 $did($dname,1)
  }
}

alias -l thmemanage { if (!$dialog(thmemanage)) dialog -mo thmemanage thmemanage }

dialog thmemanage {
  title "mcTheme Manager"
  size -1 -1 170 165
  icon $mcicon, 4
  list 1, 7 20 155 110, size autohs
  box "Themes", 2, 2 2 165 135
  button "Apply", 3, 60 140 50 22
  button "", 4, 0 0 0 0, default
  button "Get more", 5, 5 140 50 22
  button "Exit", 6, 115 140 50 22
}

on *:dialog:thmemanage:*:*: {
  if ($devent == init) {
    dll $dll.path(mdx) SetMircVersion $version 
    dll $dll.path(mdx) MarkDialog $dname
    dll $dll.path(mdx) SetControlMDX $dname 1 ListView report rowselect showsel single > $views
    did -i $dname 1 1 headerdims 65:1 70:2
    did -i $dname 1 1 headertext Themes: $chr(9) Authors: $chr(9)
    write -c $scriptdirconfig\themes.dat
    var %x 1
    while ($findfile($scriptdirthemes,*.ini,%x)) {
      var %y $ifmatch
      var %z $nopath($ifmatch)
      write $scriptdirconfig\themes.dat %y
      did -a $dname 1 0 + 0 0 $iif($script(%z),2,1) $readini(%y,colors,name) $+ $chr(9) $+ $readini(%y,colors,author)
      inc %x
    }
    did -c $dname 1 $calc(%thmesel +1)
  }
  if ($devent == sclick) {
    if ($did == 3) || ($did == 4) {
      if ($did,1).sel != $null) {
        getthme
      }
    }
    if ($did == 5) { run http://www.manowarscript.tk }
    if ($did == 6) { dialog -c $dname }
  }
  if ($devent == dclick) {
    if ($did == 1) { getthme } 
  }
}

alias -l getthme { 
  set %thmesel $calc($did($dname,1).sel - 1)
  set %thmedir $remove($read($scriptdirconfig\themes.dat,%thmesel),colors.ini)
  mctheme | if ($dialog(mcmp3)) { dialog -c mcmp3 } | mcmp3
}

alias -l mcsearch { if (!$dialog(mcsearch)) dialog -m mcsearch mcsearch }

dialog mcsearch {
  title "mcMp3 Player v2.2 File Search"
  size -1 -1 250 200
  icon $mcicon, 5
  edit "", 1, 47 10 115 20, autohs
  icon 2, 165 8 24 24, $shortfn($scriptdirimages\search.png), noborder
  list 3, 6 35 231 145, size
  icon 4, 223 5 8 8, $shortfn($scriptdirimages\x.png), noborder
}

on *:dialog:mcsearch:*:*: {
  if ($devent == init) {
    dll $dll.path(mdx) SetMircVersion $version
    dll $dll.path(mdx) MarkDialog $dname
    dll $dll.path(mdx) SetControlMDX 3 ListView infotip headerdrag report rowselect showsel single > $views
    did -i $dname 3 1 headerdims 214:1  
    did -i $dname 3 1 headertext Result $chr(9)
    did -i $dname 3 1 setbkg color $rgb(227,216,194)
    did -i $dname 3 1 settxt color $rgb(136,136,136)
    did -i $dname 3 1 settxt bgcolor $rgb(227,216,194)
    dll $dll.path(mdx) SetBorderStyle 3
    dll $dll.path(mdx) SetFont $dname 3 -10 400 Tahoma
    dll $dll.path(mdx) SetColor $dname 1 background $rgb(227,216,194)
    dll $dll.path(mdx) SetColor $dname 1 textbg $rgb(227,216,194)
    dll $dll.path(mdx) SetColor $dname 1 text $rgb(136,136,136)
    dll $dll.path(imgdlg) ImgDlg 1 1 $dialog($dname).hwnd $shortfn($scriptdirimages\srcher.bmp)
  }
  if ($devent == sclick) {
    if ($did == 2) { 
      if ($did(mcsearch,1) == $null) { halt } 
      refresh
    }
    if ($did == 3) {
      if ($gettok($did($dname,3,1),1,32) != rclick) halt
      dll $dll.path(popup) New search 16 16
      dll $dll.path(popup) LoadImg search icon small 2, $+ $mcicon
      dll $dll.path(popup) LoadImg search icon small 2, $+ $mcicon
      dll $dll.path(popup) AddItem search end $iif($did(3).sel != $null,+,+d) 1 1 &Add $cr addtoplyr
      dll $dll.path(popup) AddItem search end
      dll $dll.path(popup) AddItem search end $iif($lines($mcmp1.dat) != 0,+,+d) 2 2 A&dd all $cr addalltoplyr
      pop search $mouse.dx $mouse.dy
    }
    if ($did == 4) {
      dialog -x mcsearch
      write -c $mcmp1.dat
      write -c $mcmp2.dat
      write -c $mcmp4.dat
      write -c $mcmp5.dat
    }
  }
  if ($devent == dclick) { addtoplyr }
}

alias -l addtoplyr {
  var %wmp $read($mcmp1.dat, $calc($did(3).sel - 1))
  if (%wmp != $null) {
    set %mpdir $nofile(%wmp)
    write $mcmp.dat %wmp
    write $mcmp3.dat 0 + 0 0 0 $nopath(%wmp)
    loadbuf -ro mcmp3 2 $mcmp3.dat
    if ($dialog(mcmp3)) did -c mcmp3 2 %wmp.no
    set %files.html $lines($mcmp.dat)
  }
  else { halt }
}

alias -l addalltoplyr {
  var %x = 1
  var %y = $calc($lines($mcmp1.dat) + 1)
  while (%x < %y) {
    var %z = $read($mcmp1.dat,%x)
    write $mcmp.dat %z
    write $mcmp3.dat 0 + 0 0 0 $nopath(%z)
    inc %x
  }
  loadbuf -ro mcmp3 2 $mcmp3.dat
  set %files.html $lines($mcmp.dat)
}

alias -l refresh {
  if (%srchdir == $null) { set %srchdir C:\ | goto srchdir }
  else {
    :srchdir
    set %srchdir $$sdir( $+ %srchdir $+ ,Select a media directory to search)
    if (%srchdir != $null) {
      write -c $mcmp1.dat
      write -c $mcmp2.dat
      write -c $mcmp4.dat
      write -c $mcmp5.dat
      did -r mcsearch 3
      dll $dll.path(listfiles) setoutput <dir><fname>
      dll $dll.path(listfiles) listfiles f > $mcmp2.dat > %srchdir > *.mp3;*.mid;*.wav > 0
      dll $dll.path(listfiles) setoutput 0 + 0 0 0 <fname>
      dll $dll.path(listfiles) listfiles f > $mcmp4.dat > %srchdir > *.mp3;*.mid;*.wav > 0
    }
  }
  listsearch
}

alias -l listsearch {
  set %wildcard $did(mcsearch,1)
  set %wildcard $replace(%wildcard,$chr(32),$chr(42))
  set %wildcard $chr(42) $+ %wildcard $+ $chr(42)
  :again
  if ( ** isin %wildcard ) {
    set %wildcard $replace(%wildcard,**,*) 
    goto again
  }
  filter -ff $mcmp2.dat $mcmp1.dat %wildcard
  filter -ff $mcmp4.dat $mcmp5.dat %wildcard
  loadbuf -ro mcsearch 3 $mcmp5.dat
  if ($lines($mcmp1.dat) == 0) {
    did -i mcsearch 3 1 headertext Result :: no match found $chr(9)
  }
  else { 
    did -i mcsearch 3 1 headertext Result :: $lines($mcmp1.dat) file(s) found $chr(9)
  }
}

on *:dialog:mcmp3:*:*: {
  if ($devent == init) {
    if ($dialog(mp3dock)) { dialog -c mp3dock }
    dll $dll.path(mdx) SetMircVersion $version
    dll $dll.path(mdx) MarkDialog $dname
    dll $dll.path(mdx) SetControlMDX $dname 22 trackbar noticks tooltips > $bars
    did -i $dname 22 1 params * * * * * * * 10
    dll $dll.path(mdx) SetControlMDX $dname 23 trackbar vertical both tooltips > $bars
    did -i $dname 23 1 params $calc(65535 - $vol(master)) 0 65535 1 10 0 65535 10
    did -i $dname 23 1 ticfreq 6553
    dll $dll.path(mdx) SetControlMDX 2 ListView infotip noheader report rowselect showsel single > $views
    did -i $dname 2 1 headerdims 143:1
    did -i $dname 2 1 headertext Playlist $chr(9)
    did -i $dname 2 1 setbkg color %plbg 
    did -i $dname 2 1 settxt color %pltxt 
    did -i $dname 2 1 settxt bgcolor %pltxtbg 
    dll $dll.path(mdx) SetBorderStyle 1,2,22,23
    dll $dll.path(mdx) SetFont $dname 1,2,15,16,17 -10 400 Tahoma
    dll $dll.path(mdx) SetColor $dname 1,15,16,17,22,23 background %plyrbg 
    dll $dll.path(mdx) SetColor $dname 1,15,16,17 textbg %plyrtxtbg 
    dll $dll.path(mdx) SetColor $dname 1,15,16,17 text %plyrtxt 
    dll $dll.path(imgdlg) ImgDlg 1 1 $dialog($dname).hwnd %maint
    dll $dll.path(tdialog) TDDialog $dialog($dname).hwnd > %mctrans
    if (%vol.mp3 == 1) { vol -vu1 } | else { vol -vu2 } 
    mp3.info   
    loadbuf -ro $dname 2 $mcmp3.dat
    did -c $dname 2 %wmp.no                                  
    .timermp301 0 1 pb.length 
    .timermp302 0 1 cnt.length
    if ($insong) || ($inwave) || ($inmidi) { sc_start $dname 1 100 l 70 $sc.play }
    else { sc_start $dname 1 100 l 70 $sc.welcome }
  }
  if ($devent == sclick) {
    if ($did == 2) {
      if ($gettok($did($dname,2,1),1,32) != rclick) halt
      dll $dll.path(popup) New media 16 16
      dll $dll.path(popup) LoadImg media icon small 1, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 2, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 3, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 4, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 14, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 5, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 6, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 7, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 8, $+ $mcicon
      dll $dll.path(popup) LoadImg media icon small 9, $+ $mcicon
      dll $dll.path(popup) AddItem media end $iif($did(2).sel != $null,+,+d) 1 1 &Play $cr popplay
      dll $dll.path(popup) AddItem media end
      dll $dll.path(popup) AddItem media end 2 2 &Add $cr add.mwfile
      dll $dll.path(popup) AddItem media end $iif($did(2).sel != $null,+,+d) 3 3 &Del $cr del.mwfile
      dll $dll.path(popup) AddItem media end
      dll $dll.path(popup) AddItem media end 4 4 &Themes ( $+ %mctheme $+ ) $cr thmemanage
      dll $dll.path(popup) AddItem media end

      ;docking of the mp3 must have a timer with it or mIRC will crash
      dll $dll.path(popup) AddItem media end 5 5 D&ock mp3 ( $+ %dock.pos $+ ) $cr .timer 1 1 mp3dock

      dll $dll.path(popup) AddItem media end
      dll $dll.path(popup) AddItem media end 6 6 S&earch $cr mcsearch
      dll $dll.path(popup) AddItem media end $iif($did(2).sel != $null,+,+d) 7 7 &ID3 Editor $cr ID3edit
      dll $dll.path(popup) AddItem media end
      dll $dll.path(popup) AddItem media end 8 8 &Load *.m3u $cr loadpl.m3u
      dll $dll.path(popup) AddItem media end 9 9 &Save *.m3u $cr savepl.m3u
      dll $dll.path(popup) AddItem media end
      dll $dll.path(popup) AddItem media end 10 10 &Generate html $cr generatehtml
      pop media $mouse.dx $mouse.dy
    }
    if ($did == 3) {
      var %prev.mp3 $calc($calc(%wmp.no - %wmp.no) +1)
      if ($calc(%wmp.no -1) <= %prev.mp3) || ($did($dname,2).sel == $null) {
        halt
      }
      else { 
        .splay stop
        set %wmp.no $calc(%wmp.no - 1) 
        did -c $dname 2 %wmp.no
        .splay $play.file
        mc.msg
        sc_start $dname 1 100 l 70 $sc.play
        unset %pause.mp3
        mp3.info
      }
    }
    if ($did == 4) || ($did == 24) { popplay }
    if ($did == 5) {
      if ($did($dname,2).lines == %wmp.no) || ($did($dname,2).sel == $null) {
        halt
      } 
      else { 
        .splay stop
        set %wmp.no $calc(%wmp.no + 1) 
        did -c $dname 2 %wmp.no
        .splay $play.file
        mc.msg
        sc_start $dname 1 100 l 70 $sc.play
        unset %pause.mp3
        mp3.info
      }
    }
    if ($did == 6) {
      if ($insong) {
        if (%pause.mp3 != 1) { .splay pause | set %pause.mp3 1 }
        else { 
          if (%pause.mp3 == 1) { .splay resume | unset %pause.mp3 }
        }
      }
    }
    if ($did == 7) { mp3stop }
    if ($did == 8) { set.mwdir }
    if ($did == 9) { 
      if (%vol.mp3 != 1) {
        vol -vu1
        set %vol.mp3 1
        did -b $dname 23 
        did -i $dname 23 1 params 65535 * * * * * * 10
      }
      else {
        if (%vol.mp3 == 1) {
          vol -vu2
          unset %vol.mp3
          did -e $dname 23
          did -i $dname 23 1 params $calc(65535 - $vol(master)) 0 65535 1 10 0 65535 10
        }
      }
    }
    if ($did == 10) { add.mwdir }
    if ($did == 11) { add.mwfile }
    if ($did == 12) { mw.cls }
    if ($did == 13) { dialog -c $dname }  
    if ($did == 14) { about }
    if ($did == 22) {  
      did -i $dname 22 1 tipText Track Progress: $time($round($calc($insong.pos / 1000)),nn:ss)
      .splay seek $gettok($did(22,1),1,32)
    } 
    if ($did == 23) {
      did -i $dname 23 1 tipText Volume: $+($round($calc((65535 - $gettok($did(23,1),1,32)) / 655.35),0),%)
      vol -v $calc(65535 - $gettok($did($dname,23,1),1,32))
    }
  }
  if ($devent == close) {
    $+(.timersc_,$dname,*) off
  }
  if ($devent == dclick) {
    if ($did == 2) { popplay }
  }
}

alias -l mp3dock { if (!$dialog(mp3dock)) dialog -m mp3dock mp3dock }

dialog mp3dock {
  size -1 -1 0 34
  list 1, 6 8 195 24, size
  list 2, 198 13 190 25
  list 3, 390 14 150 13, size
  text "00:00/00:00", 4, 545 12 60 15
  text "kbps", 5, 615 12 50 15
  text "khz", 6, 670 12 50 15
  text "mode", 7, 725 12 60 15
  text "Volume:", 8, 795 12 50 15
  list 9, 835 8 100 20, size
  box "", 10, 5 0  935 32
}

on *:dialog:mp3dock:*:*:{
  if ($devent == init) {
    if ($dialog(mcmp3)) { dialog -c mcmp3 }
    dll $dll.path(mdx) SetMircVersion $version 
    dll $dll.path(mdx) MarkDialog $dname
    dll $dll.path(mdx) SetControlMDX $dname 1 ToolBar list flat wrap nodivider arrows > $bars
    dll $dll.path(mdx) SetControlMDX $dname 3 trackbar noticks tooltips > $bars
    did -i $dname 3 1 params * * * * * * * 10
    dll $dll.path(mdx) SetControlMDX $dname 9 trackbar horizontal NWticks tooltips > $bars
    did -i $dname 9 1 params $vol(master) 0 65535 1 10 0 65535 10
    did -i $dname 9 1 ticfreq 6553
    dll $dll.path(mdx) SetBorderStyle $dname 1,2,3,9
    dll $dll.path(hOS) Dock $dname %dock.pos 0
    did -i $dname 1 1 bmpsize 16 16
    did -i $dname 1 1 setimage +nhd 0 icon small 10, $+ $mcicon
    did -i $dname 1 1 setimage +nhd 0 icon small 1, $+ $mcicon
    did -i $dname 1 1 setimage +nhd 0 icon small 11, $+ $mcicon
    did -i $dname 1 1 setimage +nhd 0 icon small 12, $+ $mcicon
    did -i $dname 1 1 setimage +nhd 0 icon small 13, $+ $mcicon
    did -i $dname 1 1 setimage +nhd 0 icon small 14, $+ $mcicon
    did -a $dname 1 +a 1 $chr(9) Previous
    did -a $dname 1 +a 2 $chr(9) Play
    did -a $dname 1 +a 3 $chr(9) Next
    did -a $dname 1 +a 4 $chr(9) Pause
    did -a $dname 1 +a 5 $chr(9) Stop
    did -a $dname 1 -
    did -a $dname 1 +av 6 $chr(9) Options
    did -a $dname 1 -
    dll $dll.path(mdx) SetFont $dname 2 -10 400 Tahoma
    dll $dll.path(mdx) SetColor $dname 2 background $rgb(face)
    dll $dll.path(mdx) SetColor $dname 2 textbg $rgb(face)
    dll $dll.path(mdx) SetColor $dname 2 text $rgb(0,0,0)
    if ($insong) || ($inwave) || ($inmidi) { sc_start $dname 2 100 l 70 $mctitle }
    else { sc_start $dname 2 100 l 70 $sc.welcome }
    mp3.info
    .timermp301 0 1 pb.length 
    .timermp302 0 1 cnt.length
  }
  if ($devent == sclick) {
    if ($did == 1) {
      var %a = $did($dname,1).sel
      if (%a == 2) {
        var %prev.mp3 $calc($calc(%wmp.no - %wmp.no) +1)
        if ($calc(%wmp.no -1) <= %prev.mp3) { halt }
        else {
          .splay stop
          set %wmp.no $calc(%wmp.no - 1) 
          .splay $play.file
          mc.msg
          sc_start $dname 2 100 l 70 $mctitle
          unset %pause.mp3
          mp3.info
        }
      }
      elseif (%a == 3) {
        if (%pause.mp3 == 1) { .splay resume | unset %pause.mp3 }
        else {
          if ($lines($mcmp.dat) < 1) { halt }
          elseif ($lines($mcmp.dat) == 1) || ($lines($mcmp.dat) > 1) && ((%wmp.no == $null) || (%wmp.no == 1)) { set %wmp.no 2 }
          .splay stop
          .splay $play.file
          mc.msg
          sc_start $dname 2 100 l 70 $mctitle
          unset %pause.mp3
          mp3.info
        }
      }
      elseif (%a == 4) {
        if (%wmp.no == $null) || ($lines($mcmp.dat) == $calc(%wmp.no -1)) { halt }
        else {
          .splay stop
          set %wmp.no $calc(%wmp.no + 1) 
          .splay $play.file
          mc.msg
          sc_start $dname 2 100 l 70 $mctitle
          unset %pause.mp3
          mp3.info
        }
      }
      elseif (%a == 5) { 
        if ($insong) {
          if (%pause.mp3 != 1) { .splay pause | set %pause.mp3 1 }
          elseif (%pause.mp3 == 1) { .splay resume | unset %pause.mp3 }
        }
      }
      elseif (%a == 6) { mp3stop }
    }
    if ($did == 3) {
      did -i $dname 3 1 tipText Track Progress: $time($round($calc($insong.pos / 1000)),nn:ss)
      .splay seek $gettok($did(3,1),1,32)
    } 
    if ($did == 9) { 
      did -i $dname 9 1 tipText Volume: $+($round($calc($gettok($did(9,1),1,32) / 655.35),0),%)
      vol -v $gettok($did($dname,9,1),1,32)
    }
  }
  if ($devent == dclick) {
    if ($did($dname,1).sel == 8) {
      dll $dll.path(popup) New mcop 16 16
      dll $dll.path(popup) LoadImg mcop icon small 14, $+ $mcicon
      dll $dll.path(popup) LoadImg mcop icon small 15, $+ $mcicon
      dll $dll.path(popup) LoadImg mcop icon small 16, $+ $mcicon
      dll $dll.path(popup) LoadImg mcop icon small 9, $+ $mcicon
      dll $dll.path(popup) AddItem mcop end 1 &Full view $cr fullv
      dll $dll.path(popup) AddItem mcop end
      dll $dll.path(popup) AddItem mcop end 2 Dock on &top $cr docktop
      dll $dll.path(popup) AddItem mcop end 3 Dock on &bottom $cr dockbot
      dll $dll.path(popup) AddItem mcop end
      dll $dll.path(popup) AddItem mcop end 4 &Generate html $cr generatehtml
      pop mcop $mouse.dx $mouse.dy
    }
  }
  if ($devent == close) {
    dll $dll.path(hOS) Undock $dname
    $+(.timersc_,$dname,*) off
  }
}

on *:mp3end: { soundend }

on *:midiend: { soundend }

on *:waveend: { soundend }

alias -l mw.cls { 
  if ($did(mcmp3,2).lines != 1) {
    write -c $mcmp.dat
    write -c $mcmp3.dat
    did -r mcmp3 2
    unset %wmp.no
    .splay stop
    did -i mcmp3 22 1 params 0 0 1
    sc_start mcmp3 1 100 l 70 $sc.welcome
    unset %pause.mp3
    did -ra mcmp3 15 kbps
    did -ra mcmp3 16 00:00/00:00
    did -ra mcmp3 17 khz
    set %files.html 0
  }
}

alias -l del.mwfile {  
  if ($did(mcmp3,2).sel == $null) { halt }
  else {
    var %mfile $did(mcmp3,2).sel
    if (%mfile == %wmp.no) { mp3stop }
    write -dl $+ $calc(%mfile - 1) $mcmp.dat
    write -dl $+ $calc(%mfile - 1) $mcmp3.dat
    loadbuf -ro mcmp3 2 $mcmp3.dat
    set %files.html $lines($mcmp.dat)
    if (%mfile < %wmp.no) {
      set %wmp.no $calc(%wmp.no -1)
      did -c mcmp3 2 %wmp.no
    } 
    else { did -c mcmp3 2 %wmp.no }
  }
}

alias -l add.mwfile {
  if (!$isdir(%mpdir)) { set %mpdir C:\ }
  var %wmp $$sfile( $+ %mpdir $+ ,Select a media file to add:,Add)
  if (%wmp != $null) {
    set %mpdir $nofile(%wmp)
    write $mcmp.dat %wmp
    write $mcmp3.dat 0 + 0 0 0 $nopath(%wmp)
    loadbuf -ro mcmp3 2 $mcmp3.dat
    set %files.html $lines($mcmp.dat)
    did -c mcmp3 2 %wmp.no
  }
  else { halt }
}

alias -l add.mwdir {
  if (%mpdir == $null) { set %mpdir C:\ | goto adddir }
  else {
    :adddir
    set %mpdir $$sdir( $+ %mpdir $+ ,Select a media directory to add)
    if (%mpdir != $null) {
      find.file
      did -c mcmp3 2 %wmp.no
    }
  }
}

alias -l set.mwdir {
  if (%mpdir == $null) { set %mpdir C:\ | goto setdir }
  else {
    :setdir
    set %mpdir $$sdir( $+ %mpdir $+ ,Select a media directory)
    if (%mpdir != $null) {
      write -c $mcmp.dat
      write -c $mcmp3.dat
      dll $dll.path(listfiles) setoutput <dir><fname>
      dll $dll.path(listfiles) listfiles f > $mcmp.dat > %mpdir > *.mp3;*.mid;*.wav > 0
      dll $dll.path(listfiles) setoutput 0 + 0 0 0 <fname>
      dll $dll.path(listfiles) listfiles f > $mcmp3.dat > %mpdir > *.mp3;*.mid;*.wav > 0
      .splay stop
      did -i mcmp3 22 1 params 0 0 1
      sc_start mcmp3 1 100 l 70 $sc.welcome
      did -ra mcmp3 15 kbps
      did -ra mcmp3 16 00:00/00:00
      did -ra mcmp3 17 khz
      loadbuf -ro mcmp3 2 $mcmp3.dat
      set %files.html $lines($mcmp.dat)
    }
  }
}

alias -l find.file {
  var %x = $findfile(%mpdir,*.mp3,0,write $mcmp.dat $1-)
  var %x = $findfile(%mpdir,*.mid,0,write $mcmp.dat $1-)
  var %x = $findfile(%mpdir,*.wav,0,write $mcmp.dat $1-)
  var %x = $findfile(%mpdir,*.mp3,0,write $mcmp3.dat 0 + 0 0 0 $nopath($1-))
  var %x = $findfile(%mpdir,*.mid,0,write $mcmp3.dat 0 + 0 0 0 $nopath($1-))
  var %x = $findfile(%mpdir,*.wav,0,write $mcmp3.dat 0 + 0 0 0 $nopath($1-))
  loadbuf -ro mcmp3 2 $mcmp3.dat
  set %files.html $lines($mcmp.dat)
}

alias -l loadpl.m3u {
  var %m3ufile $$sfile(*.m3u,Load *.m3u playlist,Load)
  if (!$isfile($shortfn(%m3ufile))) return
  mw.cls
  var %i = 1
  while ($read($shortfn(%m3ufile),n,%i)) {
    var %x $ifmatch
    if ($left(%x,4) != #EXT) && ($right(%x,4) == .mp3) {
      if ($mid(%x,2,1) != $chr(58)) && ($left(%x,1) != $chr(92)) { 
        var %x $nofile($shortfn(%m3ufile)) $+ %x 
      } 
      elseif ($left(%x,1) == $chr(92)) { 
        var %x $left($shortfn(%m3ufile),2) $+ %x
      }
    }
    if ($sound(%x).length) {
      write $mcmp.dat %x 
      write $mcmp3.dat 0 + 0 0 0 $nopath(%x)
    }
    inc %i
  }
  loadbuf -ro mcmp3 2 $mcmp3.dat
  set %files.html $lines($mcmp.dat)
}

alias -l savepl.m3u {
  var %m3ufile $$sfile(*.m3u,Save *.m3u playlist,Save)
  mcProgressbar
  did -a mcProgressbar 1 Saving...
  write -c $shortfn(%m3ufile) #EXTM3U
  var %i = 1
  var %y = $lines($mcmp.dat)
  while (1) {
    var %x = $read($mcmp.dat,n,%i)
    if (!%x) { goto m3ucom | halt }
    write $shortfn(%m3ufile) #EXTINF: $+ $int($calc($sound(%x).length / 1000)) $+ , $+ $file.ext(%x)
    write $shortfn(%m3ufile) %x
    inc %i
    did -ra mcProgressbar 2 $nopath($read($mcmp.dat,%i))
    did -i mcProgressbar 3 1 $calc(%i -1) 0 %y
  }
  :m3ucom
  did -ra mcProgressbar 1 Saving Complete...
  did -ra mcProgressbar 2 Complete...
  .timerpb -m 1 500 dialog -x mcProgressbar
  did -c mcmp3 2 %wmp.no
}

alias -l file.ext {
  if ($sound($1).artist) && ($sound($1).title) { return $sound($1).artist - $sound($1).title }
  else { return $remove($nopath($1),.mp3,.wav,.mid) }
}

alias -l soundend {
  if ($dialog(mcmp3)) && (!$dialog(mp3dock)) {
    if ($did(mcmp3,2).lines == %wmp.no) {
      did -i mcmp3 22 1 params 0 0 1
      $+(.timersc_,$dname,*) off
      sc_start mcmp3 1 100 l 70 $sc.welcome
      did -ra mcmp3 15 kbps
      did -ra mcmp3 16 00:00/00:00
      did -ra mcmp3 17 khz
      halt
    } 
    else {  
      set %wmp.no $calc(%wmp.no +1)
      .splay $play.file
      did -c mcmp3 2 %wmp.no    
      sc_start mcmp3 1 100 l 70 $sc.play
      mc.msg
      mp3.info
    }
  }
  elseif ($dialog(mp3dock)) && (!$dialog(mcmp3)) {
    if ($lines($mcmp.dat) == $calc(%wmp.no -1)) {
      did -i mp3dock 3 1 params 0 0 1      
      $+(.timersc_,$dname,*) off
      sc_start mp3dock 2 100 l 70 $sc.welcome
      did -ra mp3dock 5 kbps
      did -ra mp3dock 4 00:00/00:00
      did -ra mp3dock 6 khz
      did -ra mp3dock 7 mode
      halt
    }
    else {  
      set %wmp.no $calc(%wmp.no +1)
      .splay $play.file
      sc_start mp3dock 2 100 l 70 $mctitle
      mc.msg
      mp3.info
    }
  }
}

alias -l play.file return { $shortfn($read($mcmp.dat,$calc(%wmp.no -1))) }

alias -l sc.play return { $remove($nopath($read($mcmp.dat,$calc(%wmp.no -1))),.mp3,.wav,.mid) }

alias -l sc.welcome return { Welcome to mcMp3 Player v2.2 }

alias -l mp3stop {
  .splay stop
  if ($dialog(mcmp3)) { 
    did -i mcmp3 22 1 params 0 0 1
    unset %pause.mp3
    sc_start mcmp3 1 100 l 70 $sc.welcome
    did -ra mcmp3 15 kbps
    did -ra mcmp3 16 00:00/00:00
    did -ra mcmp3 17 khz
  }
  elseif ($dialog(mp3dock)) { 
    did -i mp3dock 3 1 params 0 0 1 
    unset %pause.mp3
    sc_start mp3dock 2 100 l 70 $sc.welcome
    did -ra mp3dock 5 kbps 
    did -ra mp3dock 4 00:00/00:00 
    did -ra mp3dock 6 khz 
    did -ra mp3dock 7 mode 
  }
}

alias -l popplay {
  if ($did(mcmp3,2).sel == $null) { halt }
  else {
    if (%pause.mp3 == 1) { .splay resume | unset %pause.mp3 }
    else {
      .splay stop
      set %wmp.no $did(mcmp3,2).sel
      .splay $play.file
      unset %pause.mp3
      mc.msg
      sc_start mcmp3 1 100 l 70 $sc.play
      mp3.info
    }
  }
}

alias -l mp3.info {
  if ($insong) {
    if ($dialog(mcmp3)) {
      did -ra mcmp3 15 $sound($play.file).bitrate kbps
      did -ra mcmp3 17 $round($calc($sound($play.file).sample / 1000),1) khz
    }
    elseif ($dialog(mp3dock)) {
      did -ra mp3dock 5 $sound($play.file).bitrate kbps
      did -ra mp3dock 6 $round($calc($sound($play.file).sample / 1000),1) khz
      did -ra mp3dock 7 $sound($play.file).mode
    }
  }
  elseif ($inwave) { 
    if ($dialog(mcmp3)) { did -r mcmp3 15 | did -r mcmp3 17 }
    elseif ($dialog(mp3dock)) { did -r mp3dock 5 | did -ra mp3dock 6 .::Wave | did -ra mp3dock 7 playing::. }
  }
  elseif ($inmidi) { 
    if ($dialog(mcmp3)) { did -r mcmp3 15 | did -r mcmp3 17 }
    elseif ($dialog(mp3dock)) { did -r mp3dock 5  | did -ra mp3dock 6 .::Midi  | did -ra mp3dock 7 playing::. }
  }
}

alias -l cnt.length {
  if ($insong) {
    var %t = $time($round($calc($inmp3.pos / 1000),0),nn:ss)
    if ($dialog(mcmp3)) { did -ra mcmp3 16 %t $+ / $+ $time($int($calc($insong($play.file).length / 1000)),nn:ss) }
    elseif ($dialog(mp3dock)) { did -ra mp3dock 4 %t $+ / $+ $time($int($calc($insong($play.file).length / 1000)),nn:ss) }
  }
  elseif ($inmidi) {
    var %t = $time($round($calc($inmidi.pos / 1000),0),nn:ss)
    if ($dialog(mcmp3)) { did -ra mcmp3 16 %t $+ / $+ $time($int($calc($inmidi($play.file).length / 1000)),nn:ss) }
    elseif ($dialog(mp3dock)) { did -ra mp3dock 4 %t $+ / $+ $time($int($calc($inmidi($play.file).length / 1000)),nn:ss) }
  }
  elseif ($inwave) {
    var %t = $time($round($calc($inwave.pos / 1000),0),nn:ss)
    if ($dialog(mcmp3)) { did -ra mcmp3 16 %t $+ / $+ $time($int($calc($inwave($play.file).length / 1000)),nn:ss) }
    elseif ($dialog(mp3dock)) { did -ra mp3dock 4 %t $+ / $+ $time($int($calc($inwave($play.file).length / 1000)),nn:ss) }
  }
}

alias -l pb.length {
  if ($dialog(mp3dock)) && (!$dialog(mcmp3)) { mcttip }
  elseif ($dialog(mcmp3)) && (!$dialog(mp3dock)) { mcttip2 }
  if ($insong) { 
    if ($dialog(mcmp3)) { did -i mcmp3 22 1 params $inmp3.pos 0 $inmp3.length }
    elseif ($dialog(mp3dock)) { did -i mp3dock 3 1 params $inmp3.pos 0 $inmp3.length }
  }
  elseif ($inwave) { 
    if ($dialog(mcmp3)) { did -i mcmp3 22 1 params $inwave.pos 0 $inwave.length }
    elseif ($dialog(mp3dock)) { did -i mp3dock 3 1 params $inwave.pos 0 $inwave.length }
  }
  elseif ($inmidi) { 
    if ($dialog(mcmp3)) { did -i mcmp3 22 1 params $inmidi.pos 0 $inmidi.length }
    elseif ($dialog(mp3dock)) { did -i mp3dock 3 1 params $inmidi.pos 0 $inmidi.length }
  }
}

alias -l writeplhtml return write $shortfn($scriptdirmcmp3pl.html)

alias -l generatehtml {
  mcProgressbar
  did -a mcProgressbar 1 Generating...
  write -c $scriptdirmcmp3pl.html
  $writeplhtml $read($shortfn($scriptdirconfig\mcmp3plhtml.dat), 1)
  $writeplhtml %files.html
  $writeplhtml $read($shortfn($scriptdirconfig\mcmp3plhtml.dat), 2)
  var %x = 1
  var %y = $calc($lines($mcmp.dat) + 1) 
  while (%x < %y) {
    if ($right($nopath($read($mcmp.dat,%x)),4) == .wav) { var %z = WAVE file }
    elseif ($right($nopath($read($mcmp.dat,%x)),4) == .mid) { var %z = MIDI file }
    elseif ($right($nopath($read($mcmp.dat,%x)),4) == .mp3) { var %z = $time($int($calc($sound($read($mcmp.dat,n,%x)).length / 1000)),n:ss) }
    $writeplhtml %x $+ . $nopath($read($mcmp.dat,%x)) ( $+ %z $+ )<br>
    inc %x
    did -ra mcProgressbar 2 $nopath($read($mcmp.dat,%x))
    did -i mcProgressbar 3 1 %x 0 %y
  }
  $writeplhtml $read($shortfn($scriptdirconfig\mcmp3plhtml.dat), 3)
  did -ra mcProgressbar 1 Generating Complete...
  did -ra mcProgressbar 2 Complete...
  .timerpb -m 1 500 dialog -x mcProgressbar
  run $scriptdirmcmp3pl.html
  if ($dialog(mcmp3)) did -c mcmp3 2 %wmp.no
}

alias -l mctheme { 
  if ($isfile( $+ %thmedir $+ colors.ini) == $false) { halt }
  else {
    $writethme prev $shortfn( $+ %thmedir $+ prev.png)
    $writethme play $shortfn( $+ %thmedir $+ play.png)
    $writethme next $shortfn( $+ %thmedir $+ next.png)
    $writethme pause $shortfn( $+ %thmedir $+ pause.png)   
    $writethme stop $shortfn( $+ %thmedir $+ stop.png)
    $writethme dir $shortfn( $+ %thmedir $+ dir.png)    
    $writethme mute $shortfn( $+ %thmedir $+ mute.png)
    $writethme addir $shortfn( $+ %thmedir $+ addir.png)   
    $writethme addfile $shortfn( $+ %thmedir $+ addfile.png)
    $writethme clear $shortfn( $+ %thmedir $+ clear.png)
    $writethme x $shortfn( $+ %thmedir $+ x.png)
    $writethme help $shortfn( $+ %thmedir $+ help.png)
    $writethme main $shortfn( $+ %thmedir $+ main.bmp)
    $writethme plbg $readini($shortfn( $+ %thmedir $+ colors.ini),n, colors, plbg)
    $writethme pltxt $readini($shortfn( $+ %thmedir $+ colors.ini),n, colors, pltxt)
    $writethme pltxtbg $readini($shortfn( $+ %thmedir $+ colors.ini),n, colors, pltxtbg)
    $writethme plyrbg $readini($shortfn( $+ %thmedir $+ colors.ini),n, colors, plyrbg)
    $writethme plyrtxtbg $readini($shortfn( $+ %thmedir $+ colors.ini),n, colors, plyrtxtbg)
    $writethme plyrtxt $readini($shortfn( $+ %thmedir $+ colors.ini),n, colors, plyrtxt)
    set %mctheme $readini($shortfn( $+ %thmedir $+ colors.ini),n, colors, name)
  }
}

alias -l themez {
  set %prevt $readini($readthme, n, themes, prev)
  set %playt $readini($readthme, n, themes, play)
  set %nextt $readini($readthme, n, themes, next)
  set %pauset $readini($readthme, n, themes, pause)
  set %stopt $readini($readthme, n, themes, stop)
  set %dirt $readini($readthme, n, themes, dir)
  set %mutet $readini($readthme, n, themes, mute)
  set %addirt $readini($readthme, n, themes, addir)
  set %addfilet $readini($readthme, n, themes, addfile)
  set %cleart $readini($readthme, n, themes, clear)
  set %xt $readini($readthme, n, themes, x)
  set %helpt $readini($readthme, n, themes, help)
  set %maint $readini($readthme, n, themes, main)
  set %plbg $readini($readthme, n, themes, plbg)
  set %pltxt $readini($readthme, n, themes, pltxt)
  set %pltxtbg $readini($readthme, n, themes, pltxtbg)
  set %plyrbg $readini($readthme, n, themes, plyrbg)
  set %plyrtxtbg $readini($readthme, n, themes, plyrtxtbg)
  set %plyrtxt $readini($readthme, n, themes, plyrtxt)
}

alias -l fullv { if (%opdesktop == 1) { mcmp3 d } | else { mcmp3 } }

alias -l res.insong {
  if ($dialog(mcmp3)) { dialog -x mcmp3 }
  if (%opdesktop == 1) { mcmp3 d }
  else { mcmp3 }
  if ($insong) || ($inmidi) || ($inwave) { sc_start mcmp3 1 100 l 70 $sc.play | mp3.info }
  else { sc_start mcmp3 1 100 l 70 $sc.welcome }
}

alias -l ID3edit { 
  if ($dialog(mcmp3)) { var %wmp.no $did(mcmp3,2).sel }
  if ($dialog(mp3dock)) && (!$insong) { halt }
  if ($right($nopath($read($mcmp.dat,$calc(%wmp.no -1))),4) == .mp3) {
    mcid3
    id3display1 $read($mcmp.dat,$calc(%wmp.no -1))
  }
}

alias -l id3display1 {
  did -ra mcid3 1 $1-
  did -r mcid3 4,6,8,10,14
  did -u mcid3 12
  if ($sound($1-).title) { did -a mcid3 4 $ifmatch }
  if ($sound($1-).artist) { did -a mcid3 6 $ifmatch }
  if ($sound($1-).album) { did -a mcid3 8 $ifmatch }
  if ($sound($1-).year) { did -a mcid3 10 $ifmatch }
  if ($sound($1-).genre) { did -c mcid3 12 $didwm(mcid3,12,$ifmatch) }
  if ($sound($1-).comment) { did -a mcid3 14 $ifmatch }
  if ($file($1-).size) { did -ra mcid3 17 $ifmatch bytes }
  if ($int($calc($sound($1-).length / 1000))) { did -ra mcid3 19 $ifmatch seconds }
  if ($sound($1-).bitrate) { did -ra mcid3 21 $ifmatch $+ kbit }
  if ($sound($1-).sample) { did -ra mcid3 23 $ifmatch $+ Hz }
  if ($sound($1-).mode) { did -ra mcid3 25 $ifmatch }
  did -ra mcid3 27 $iif($sound($1-).crc,Yes,No)
  did -ra mcid3 29 $iif($sound($1-).copyright,Yes,No)
}

alias -l id3display2 {
  if ($did(mcid3,4) == $null) { dll $dll.path(id3) ID3v1Title $1- $+ $chr(124) $+ N/A }
  else { dll $dll.path(id3) ID3v1Title $1- $+ $chr(124) $+ $did(mcid3,4) }
  if ($did(mcid3,6) == $null) { dll $dll.path(id3) ID3v1Artist $1- $+ $chr(124) $+ N/A }
  else { dll $dll.path(id3) ID3v1Artist $1- $+ $chr(124) $+ $did(mcid3,6) }
  if ($did(mcid3,8) == $null) { dll $dll.path(id3) ID3v1Album $1- $+ $chr(124) $+ N/A }
  else { dll $dll.path(id3) ID3v1Album $1- $+ $chr(124) $+ $did(mcid3,8) }
  if ($did(mcid3,10) == $null) { dll $dll.path(id3) ID3v1Year $1- $+ $chr(124) $+ N/A }
  else { dll $dll.path(id3) ID3v1Year $1- $+ $chr(124) $+ $did(mcid3,10) }
  if ($did(mcid3,12).sel) { dll $dll.path(id3) ID3v1GenreID $1- $+ $chr(124) $+ $calc($did(mcid3,12).sel -1) }
  if ($did(mcid3,14) == $null) { dll $dll.path(id3) ID3v1Comment $1- $+ $chr(124) $+ N/A }
  else { dll $dll.path(id3) ID3v1Comment $1- $+ $chr(124) $+ $did(mcid3,14) }
  id3display1 $1-
}

alias -l pop tokenize 32 $dll($dll.path(popup),Popup,$1-) | if ($isid) return $1- | $iif($4- != did not select a menu item,$4-)

alias -l mc.msg {
  if ($status == connected) {
    if ($insong) { var %x $time($int($calc($insong($play.file).length / 1000)),nn:ss) }
    elseif ($inmidi) { var %x $time($int($calc($inmidi($play.file).length / 1000)),nn:ss) }
    elseif ($inwave) { var %x $time($int($calc($inwave($play.file).length / 1000)),nn:ss) }
    if (%bmethod == active) && ($active ischan) {
      msg $active 3,1.4:5:14mcMp3 Player v2.25:4:3.3,1 .4:5:14 $+ $remove($nopath($read($mcmp.dat,$calc(%wmp.no -1))),.mp3,.wav,.mid) ( $+ %x $+ ) $+ 5:4:3.
    }
    elseif (%bmethod == amsg) {
      amsg 3,1.4:5:14mcMp3 Player v2.25:4:3.3,1 .4:5:14 $+ $remove($nopath($read($mcmp.dat,$calc(%wmp.no -1))),.mp3,.wav,.mid) ( $+ %x $+ ) $+ 5:4:3.
    }
  }
}

alias -l docktop {
  if ($dialog(mp3dock)) && (%dock.pos == top) { halt }
  elseif ($dialog(mp3dock)) && (%dock.pos != top) { dialog -c mp3dock | set %dock.pos top | mp3dock }
  elseif (!$dialog(mp3dock)) { set %dock.pos top | mp3dock }
}

alias -l dockbot {
  if ($dialog(mp3dock)) && (%dock.pos == bottom) { halt }
  elseif ($dialog(mp3dock)) && (%dock.pos != bottom) { dialog -c mp3dock | set %dock.pos bottom | mp3dock }
  elseif (!$dialog(mp3dock)) { set %dock.pos bottom  | mp3dock }
}

alias -l mcttip {
  if ($insong) || ($inwave) || ($inmidi) { set %mc.info Title: $sound($play.file).title $crlf $+ Artist: $sound($play.file).artist $crlf $+ Album: $sound($play.file).album $crlf $+ Genre: $sound($play.file).genre $crlf $+ Dir: $nofile($read($mcmp.dat,$calc(%wmp.no -1))) } 
  else { set %mc.info none }
  dll $dll.path(tooltip) Mark $dialog(mp3dock).hwnd
  dll $dll.path(tooltip) ToolTip $dialog(mp3dock).hwnd > 2 balloon
  dll $dll.path(tooltip) SetText $dialog(mp3dock).hwnd > 2 %mc.info
  dll $dll.path(tooltip) SetTitle $dialog(mp3dock).hwnd > 2 1 Currently Playing:
}

alias -l mcttip2 {
  if ($insong) || ($inwave) || ($inmidi) { set %mc.info Title: $sound($play.file).title $crlf $+ Artist: $sound($play.file).artist $crlf $+ Album: $sound($play.file).album $crlf $+ Genre: $sound($play.file).genre $crlf $+ Dir: $nofile($read($mcmp.dat,$calc(%wmp.no -1))) } 
  else { set %mc.info none }
  dll $dll.path(tooltip) Mark $dialog(mcmp3).hwnd
  dll $dll.path(tooltip) ToolTip $dialog(mcmp3).hwnd > 1 balloon
  dll $dll.path(tooltip) SetText $dialog(mcmp3).hwnd > 1 %mc.info
  dll $dll.path(tooltip) SetTitle $dialog(mcmp3).hwnd > 1 1 Currently Playing:
}

;Scrolling text snippet by Sigh_ 

alias -l sc_start {
  var %r return,%e echo $color(info) -ea * /sc_start:,%c did -r $1-2
  if $isid { %e incorrect usage | %r }
  if !$5 { %e insufficient parameters | %r }
  if !$dialog($1) { %e no such dialog | %r }
  if $4 != l && $4 != r { %e invalid direction | %r }
  var %x $timer(0)
  while %x { 
    if $+(sc_,$1,_,$2,_*) iswm $timer(%x) { .timer $+ $ifmatch off | %c | break }
    dec %x
  }
  var %a did -a $1-2,%n $+($iif($4 = l,$6-),$chr(160),$iif($3 > $len($6-),$str($chr(160),$calc($3 - $len($6-)))),$iif($4 = r,$6-)),%x 1
  %a %n
  while %x <= $len(%n) {
    $+(.timersc_,$1,_,$2,_,%x) -m 1 $calc($5*%x) %c $chr(124) %a $right(%n,$iif($4 = l,-) $+ %x) $+ $left(%n,$iif($4 = r,-) $+ %x) $iif(!$calc($len(%n)-%x),$chr(124) sc_start $1-)
    inc %x
  }
}

alias -l mcmp5.dat return $shortfn($scriptdirconfig\mcMP5.dat)

alias -l mcmp4.dat return $shortfn($scriptdirconfig\mcMP4.dat)

alias -l mcmp3.dat return $shortfn($scriptdirconfig\mcMP3.dat)

alias -l mcmp2.dat return $shortfn($scriptdirconfig\mcMP2.dat)

alias -l mcmp1.dat return $shortfn($scriptdirconfig\mcMP1.dat)

alias -l mcmp.dat return $shortfn($scriptdirconfig\mcMP.dat)

alias -l mctitle return .:: mcMp3 Player v2.2 ::. .:: $sc.play ::.

alias -l writethme return writeini -n $shortfn($scriptdirconfig\themes.ini) themes

alias -l readthme return $shortfn($scriptdirconfig\themes.ini)

alias -l mcicon return $shortfn($scriptdirimages\mcmp3.icl)

alias -l ctl_gen return $shortfn($scriptdirdlls\mdx\ctl_gen.mdx)

alias -l views return $shortfn($scriptdirdlls\mdx\views.mdx)

alias -l bars return $shortfn($scriptdirdlls\mdx\bars.mdx)

alias -l dll.path {
  if ($1 == mdx) return $shortfn($scriptdirdlls\mdx\mdx.dll)
  elseif ($1 == imgdlg) return $shortfn($scriptdirdlls\ImgDlg\imgdlg.dll)
  elseif ($1 == popup) return $shortfn($scriptdirdlls\popups\popups.dll)
  elseif ($1 == id3) return $shortfn($scriptdirdlls\ID3Changer\ID3Changer.dll)
  elseif ($1 == tdialog) return $shortfn($scriptdirdlls\tdialog\tdialog.dll)
  elseif ($1 == hOS) return $shortfn($scriptdirdlls\hOS\hOS.dll)
  elseif ($1 == tooltip) return $shortfn($scriptdirdlls\tooltip\tooltip.dll)
  elseif ($1 == listfiles) return $shortfn($scriptdirdlls\listfiles\listfiles.dll)
}

menu menubar {
  -
  mcMp3 Player v2.2
  .Open on &desktop:mcmp3 d | set %opdesktop 1
  .Open in &mIRC:mcmp3 | unset %opdesktop
  .&Dock mp3 ( $+ %dock.pos $+ )
  ..top:docktop
  ..bottom:dockbot
  .-
  .Transparency ( $+ %mctrans2 $+ )
  ..none:set %mctrans -1 | set %mctrans2 none | res.insong
  ..10:set %mctrans 10 | set %mctrans2 10 | res.insong
  ..20:set %mctrans 20 | set %mctrans2 20 | res.insong
  ..30:set %mctrans 30 | set %mctrans2 30 | res.insong
  ..40:set %mctrans 40 | set %mctrans2 40 | res.insong
  ..50:set %mctrans 50 | set %mctrans2 50 | res.insong
  ..60:set %mctrans 60 | set %mctrans2 60 | res.insong
  ..70:set %mctrans 70 | set %mctrans2 70 | res.insong
  ..80:set %mctrans 80 | set %mctrans2 80 | res.insong
  ..90:set %mctrans 90 | set %mctrans2 90 | res.insong
  ..100:set %mctrans 100 | set %mctrans2 100 | res.insong
  .-
  .File Search:mcsearch
  .-  
  .Themes ( $+ %mctheme $+ ):thmemanage
  .-
  .Broadcast mp3 ( $+ %bmethod $+ )
  ..&active:set %bmethod active
  ..a&msg:set %bmethod amsg
  ..&none:set %bmethod none
  .-
  .Help:run $shortfn($scriptdirhelp.htm)
  .-
  .Unload:if ( $input(Are you sure you want to unload mcMp3 Player v2.2?,200,.::ADVISORY::.) == $true) { echo 4 -a Unloading addon in 2 secs... | .timer 1 2 .unload -rs $shortfn($scriptdirmcmp3.mrc) }
  -
}