rendered paste bodydialog player {
title "Player - The Audio Player"
size -1 -1 147 220
option dbu
button "|>", 1, 120 2 12 12
button "<<", 2, 94 2 12 12
button ">>", 3, 133 2 12 12
button "[ ]", 4, 107 2 12 12
box "Playlist", 5, 1 47 145 150
list 6, 3 55 140 111, size extsel
button "Add Song", 7, 3 170 30 12
button "Del Song", 8, 64 170 30 12
button "Import Playlist", 9, 107 170 37 12
check "Shuffle", 10, 94 15 51 10, push
check "Repeat", 11, 94 26 51 10, push
box "Now Playing", 12, 1 1 91 45
text "Song Artist", 13, 3 8 87 8
text "bitrate", 14, 3 26 87 8
text "0:00", 15, 3 35 25 8, right
text "/", 16, 29 35 2 8
text "0:00", 17, 32 35 25 8
text "played", 18, 58 35 16 8
button "Add Dir", 19, 33 170 30 12
button "New Playlist", 20, 74 183 35 12
edit "", 21, 23 184 50 10
text "Playlist:", 22, 3 185 19 8, nowrap
button "Load Playlist", 23, 109 183 35 12
box "Advertise Song", 24, 1 198 145 21
edit "", 25, 21 207 120 10, autohs
text "Format", 26, 3 208 17 8
text "Song Title", 27, 3 17 87 8
button "-", 28, 126 37 10 12
button "+", 29, 136 37 10 12
edit "", 30, 104 38 21 10, read center
button "M", 31, 93 37 10 12
}
alias -l player.vcalc {
if (!$dialog(player)) { .timerpvol off | halt }
.did -ra player 30 $round($calc($vol(master) / 655.35),0) $+ %
}
alias -l player.vol.mute {
if (%player.mute) { .vol -v %player.mute.vol | .set %player.mute $false }
else { .set %player.mute.vol $vol(master) | .vol -v 0 | .set %player.mute $true }
}
alias -l player.vol.up {
if (!$1 || $1 !isnum) { var %vol = $calc($vol(master) + 3276.75) }
elseif ($1 > 100) { var %vol = 65535 }
else { var %vol = $calc($1 * 655.35) }
if (%vol > 65535) { %vol = 65535 }
.vol -v %vol
}
alias -l player.vol.down {
if (!$1 || $1 !isnum) { var %vol = $calc($vol(master) - 3276.75) }
elseif ($1 < 0) { var %vol = 0 }
else { var %vol = $calc($1 * 655.35) }
if (%vol < 0) { %vol = 0 }
.vol -v %vol
}
alias -l player.addsong {
.write %player.pl $1-
.did -a player 6 $gettok($1-,-1,92)
}
alias -l player.pbtn {
if (!$dialog(player)) { halt }
if (!$insong.pause) { .did -ra player 1 $+($chr(124),$chr(124)) }
if ($insong.pause || !$insong) { .did -ra player 1 $+($chr(124),>) }
}
alias -l song.pos {
if (!$insong) { .timersongpos off | halt }
if (!$dialog(player)) { .timersongpos off | halt }
var %min,%sec,%time
%time = $calc(($insong.pos /1000) /60)
%min = $gettok(%time,1,46)
%sec = $calc($gettok(%time,2,46) *.6)
%sec = $iif($len(%sec) <= 4,$+(0,$left(%sec,1)),$left(%sec,2))
%time = $+(%min,:,%sec)
.did -ra player 15 %time
}
alias player {
if ($dialog(player)) {
.dialog -v player
}
else {
.dialog -md player player
}
}
alias -l player.prev {
.playsong %player.prev
}
alias -l player.next {
if (%player.shuffle) { set %nt $r(1,$lines(%player.pl)) }
else { set %nt $calc(%player.np +1) }
if (%nt > $lines(%player.pl)) && (!%player.repeat) { halt }
elseif (%nt > $lines(%player.pl)) && (%player.repeat) { set %nt 1 }
.set %player.prev %player.np
.playsong %nt
}
alias player.show {
if (!$insong) { echo 4 -a No song playing. | halt }
var %song = $insong.fname,%title,%artist,%br,%min,%sec,%time,%pl_show,%ct
if ($left($sound(%song).id3,2) == v2) {
var %a = 1
while (%a <= $sound(%song,0).tag) {
var %tokn = $left($sound(%song,%a).tag,255)
if ($gettok(%tokn,1,32) == TIT2) { %title = $gettok(%tokn,2-,32) }
if ($gettok(%tokn,1,32) == TPE1) { %artist = $gettok(%tokn,2-,32) }
inc %a
}
}
else {
%title = $sound(%song).title
%artist = $sound(%song).artist
}
%ct = $gettok($read(%player.pl,%player.np),-1,92)
%br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
%time = $calc($sound(%song).length /1000 /60)
%min = $gettok(%time,1,46)
%sec = $left($calc($gettok(%time,2,46) *.6),2)
%time = $+(%min,:,%sec)
%pl_show = %player.op
%pl_show = $replace(%pl_show,&ctr&,%player.np,&ttr&,$lines(%player.pl))
if (%title) { %pl_show = $replace(%pl_show,&title&,%title) }
else { %pl_show = $replace(%pl_show,&title&,) }
if (%artist) { %pl_show = $replace(%pl_show,&artist&,%artist) }
else { %pl_show = $replace(%pl_show,&artist&,) }
%pl_show = $replace(%pl_show,&fn&,%ct)
%pl_show = $replace(%pl_show,&length&,%time)
%pl_show = $replace(%pl_show,&br&,%br)
var %cmin,%csec,%ctime
%ctime = $calc(($insong.pos /1000) /60)
%cmin = $gettok(%ctime,1,46)
%csec = $calc($gettok(%ctime,2,46) *.6)
%csec = $iif($len(%csec) <= 4,$+(0,$left(%csec,1)),$left(%csec,2))
%ctime = $+(%cmin,:,%csec)
%pl_show = $replace(%pl_show,&tpos&,%ctime)
$iif($isid, return,$iif(!$chan && !$active,echo -a,msg $active)) %pl_show
}
alias -l playsong {
if ($insong) { .splay stop }
var %song = $shortfn($read(%player.pl,$1)),%title,%artist,%br,%min,%sec,%time
var %chk = $right(%song,4)
if (%chk != .mp3 && %chk != .mid && %chk != .wav) { .player.next | halt }
if (!$exists(%song)) { .player.next | halt }
if ($left($sound(%song).id3,2) == v2) {
var %a = 1
while (%a <= $sound(%song,0).tag) {
var %tokn = $left($sound(%song,%a).tag,255)
if ($gettok(%tokn,1,32) == TIT2) { %title = $gettok(%tokn,2-,32) }
if ($gettok(%tokn,1,32) == TPE1) { %artist = $gettok(%tokn,2-,32) }
inc %a
}
%br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
}
else {
%title = $sound(%song).title
%artist = $sound(%song).artist
%br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
}
if ($dialog(player)) {
.did -ra player 13 %artist
.did -ra player 27 %title
.did -ra player 14 %br
%time = $calc($sound(%song).length /1000 /60)
%min = $gettok(%time,1,46)
%sec = $left($calc($gettok(%time,2,46) *.6),2)
%time = $+(%min,:,%sec)
.did -ra player 17 %time
.did -ra player 15 0:00
.did -c player 6 $1
}
.splay $iif($right(%file,4) == .mp3,-p,$iif($right(%file,4) == .wav,-w,-m)) %song
.set %player.np $1
.timersongpos 0 1 /song.pos
}
on *:DIALOG:player:sclick:10,11: {
if ($did($dname,$did).state == 0) { .set $+(%,player.,$iif($did == 10,shuffle,repeat)) $false }
else { .set $+(%,player.,$iif($did == 10,shuffle,repeat)) $true }
}
on *:DIALOG:player:init:*: {
if (%player.shuffle) { .did -c $dname 10 }
if (%player.repeat) { .did -c $dname 11 }
.did -a $dname 21 %player.pl
.did -a $dname 25 %player.op
var %a = 1
while (%a <= $lines(%player.pl)) {
.did -a $dname 6 $gettok($read(%player.pl,%a),-1,92)
inc %a
}
.player.pbtn
.player.vcalc
.timerpvol 0 1 player.vcalc
.timersongpos 0 1 .song.pos
if ($insong) {
var %song = $shortfn($read(%player.pl,%player.np)),%title,%artist,%br,%min,%sec,%time
if ($left($sound(%song).id3,2) == v2) {
var %a = 1
while (%a <= $sound(%song,0).tag) {
var %tokn = $left($sound(%song,%a).tag,255)
if ($gettok(%tokn,1,32) == TIT2) { %title = $gettok(%tokn,2-,32) }
if ($gettok(%tokn,1,32) == TPE1) { %artist = $gettok(%tokn,2-,32) }
inc %a
}
%br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
}
else {
%title = $sound(%song).title
%artist = $sound(%song).artist
%br = $iif($sound(%song).vbr, VBR -,) BitRate $sound(%song).bitrate kbps
}
.did -ra $dname 13 %artist
.did -ra $dname 27 %title
.did -ra $dname 14 %br
%time = $calc($sound(%song).length /1000 /60)
%min = $gettok(%time,1,46)
%sec = $left($calc($gettok(%time,2,46) *.6),2)
%time = $+(%min,:,%sec)
.did -ra $dname 17 %time
.did -ra $dname 15 0:00
.did -c $dname 6 %player.np
}
}
on *:DIALOG:player:dclick:6: {
if (!$did($dname,6).seltext) { halt }
if ($insong) { .splay stop }
.playsong $did($dname,6).sel
player.pbtn
}
on *:DIALOG:player:sclick:7: {
var %loc = $sfile(C:\,Player Audio Selecter)
if (!%loc) { halt }
.write %player.pl %loc
.did -a $dname 6 $gettok(%loc,-1,92)
}
on *:DIALOG:player:sclick:19: {
var %loc = $sdir(C:\,Player Audio Directory Selecter)
if (!%loc) { halt }
var %file = $findfile(%loc,*.mp3;*.mid;*.wav,0,//player.addsong $1-)
}
on *:DIALOG:player:sclick:8: {
if (!$did($dname,6).seltext) { halt }
var %a = $did($dname,6,0).sel
while (%a) {
.write $+(-dl,$did($dname,6,%a).sel) %player.pl
.did -d $dname 6 $did($dname,6,%a).sel
dec %a
}
}
on *:DIALOG:player:sclick:1: {
if (!$insong) && (!$did($dname,6).seltext) { halt }
if (!$insong) && ($did($dname,6).seltext) { .playsong $did($dname,6).sel | halt }
if (!$insong.pause) {
.splay pause
.player.pbtn
}
else {
.splay resume
.player.pbtn
}
}
on *:DIALOG:player:edit:25: {
.set %player.op $did($dname,25).text
}
on *:DIALOG:player:sclick:23: {
var %ldir = $sfile($mircdir,Player PlayList Loader)
if (!%ldir) { halt }
.set %player.pl $nopath(%ldir)
.did -ra $dname 21 %player.pl
.did -r $dname 6
var %a = 1
while (%a <= $lines(%player.pl)) {
.did -a $dname 6 $gettok($read(%player.pl,%a),-1,92)
inc %a
}
}
on *:DIALOG:player:sclick:20: {
var %npl = $$?="Enter the name of your new playlist"
if (!%npl) { halt }
if ($insong) { .splay stop }
.did -r $dname 6
.did -ra $dname 21 %npl
.set %player.pl %npl
var %a = 1
while (%a <= $lines(%npl)) {
.did -a $dname 6 $gettok($read(%npl,%a),-1,92)
inc %a
}
}
on *:DIALOG:player:sclick:9: {
var %pl = $shortfn($sfile(C:,Player Playlist Import))
if ($right(%pl,4) != .m3u) { halt }
var %a = 1
while (%a <= $lines(%pl)) {
var %pl_red = $read(%pl,%a)
if ($left(%pl_red,1) == $chr(35)) { inc %a }
else {
if (!%pl_red) { inc %a }
.write %player.pl %pl_red
.did -a $dname 6 $gettok(%pl_red,-1,92)
inc %a
}
}
}
on *:DIALOG:player:sclick:31: { .player.vol.mute }
on *:DIALOG:player:sclick:28: { .player.vol.down }
on *:DIALOG:player:sclick:29: { .player.vol.up }
on *:DIALOG:player:sclick:2: { .player.prev }
on *:DIALOG:player:sclick:3: { .player.next }
on *:DIALOG:player:sclick:4: { if ($insong) { .splay stop | .player.pbtn } }
on *:MP3END: { .player.next }
on *:WAVEEND: { .player.next }
on *:MIDIEND: { .player.next }
alias p.pause { if (!$insong.pause) { splay pause } }
alias p.resume { if ($insong.pause) { splay resume } }
alias p.show { player.show }
alias p.next { player.next }
alias p.prev { player.prev }
alias p.stop { if ($insong) { splay stop | .player.pbtn } }
alias p.play { .playsong 1 }
alias p.volup { .player.vol.up $1 }
alias p.voldown { .player.vol.down $1 }
alias p.mute { .player.vol.mute }
alias p.shuffle {
if (!%player.shuffle) { .set %player.shuffle $true | $iif($dialog(player),.did -c player 10) | echo -a Enabled Shuffle }
else { .set %player.shuffle $false | $iif($dialog(player),.did -u player 10) | echo -a Disabled Shuffle }
}
alias p.repeat {
if (!%player.repeat) { .set %player.repeat $true | $iif($dialog(player),.did -c player 11) | echo -a Enabled Repeat }
else { .set %player.repeat $false | $iif($dialog(player),.did -u player 11) | echo -a Disabled Repeat }
}
menu * {
Player
.Open Player:/player
.Show Song:/player.show
}
on *:LOAD: {
if (!%player.pl) { .set %player.pl pl.mar }
if (!%player.op) { .set %player.op Player - Currently listening to track #&ctr&/&ttr& &title& by &artist& (&length&) @ &br& }
echo -a Player loaded.
}
alias id3 {
if ($insong == $true) {
say 03(¯¯¯¯13 $sound($insong.fname).artist - $sound($insong.fname).title 03¯¯¯¯) [12 $+ $sound($insong.fname).genre $+ 3] [04 $+ $right($duration($calc($insong.pos / 1000), 3),5) $+ / $+ $right($duration($calc($mp3($insong.fname).length / $& 1000 - 1), 3),5) $+ 03]
}
else { echo 4 -a No song is currently playing, and therefore cannot read id3 tags. }
}