External VDSinout.dll IO REDUCE,ON OPTION SCALE, 96 Title Tag read/write DIALOG CREATE,Tag read/write,-1,0,420,237 DIALOG ADD,MENU,&File,&Open,-,&Exit DIALOG ADD,MENU,&Info,&About DIALOG ADD,GROUP,GR1,-1,0,420,2 DIALOG ADD,STYLE,STYLE1,,,,BLACK,YELLOW DIALOG ADD,STYLE,STYLE2,,,,BLACK,RED DIALOG ADD,COMBO,C1,6,60,138,21,,click DIALOG ADD,TEXT,T1,40,10,,,Name: DIALOG ADD,TEXT,T2,60,10,,,Artist: DIALOG ADD,TEXT,T3,80,10,,,Album: DIALOG ADD,TEXT,T4,100,10,,,Comment: DIALOG ADD,TEXT,T5,120,10,,,Year: DIALOG ADD,TEXT,T6,140,10,,,Genre: DIALOG ADD,EDIT,E2,42,60,174,18 DIALOG ADD,EDIT,E3,60,60,174,18 DIALOG ADD,EDIT,E4,78,60,174,18 DIALOG ADD,EDIT,E5,96,60,174,18 DIALOG ADD,EDIT,E6,114,60,174,18 DIALOG ADD,COMBO,C2,132,60,174,21 DIALOG ADD,STATUS,ST DIALOG ADD,BUTTON,Open,6,204,30,24,... DIALOG ADD,BUTTON,Set,168,12,66,24,Write TAG DIALOG ADD,BUTTON,PLAY,168,90,,,PLAY DIALOG ADD,BUTTON,STOP,168,168,,,STOP DIALOG ADD,BUTTON,RESET,168,246,,,RESET LIST DIALOG ADD,TEXT,TEXT1,10,10,,,Mp3 File: DIALOG ADD,LIST,trax2,270,10,100,100 DIALOG ADD,LIST,genre2,270,110,100,100 DIALOG ADD,LIST,m1l1,270,210,100,100 DIALOG ADD,LIST,m1l2,270,310,100,100 DIALOG ADD,LIST,m1l3,380,10,100,100 DIALOG ADD,LIST,m2l1,380,110,100,100 DIALOG ADD,LIST,m2l2,380,210,100,100 DIALOG ADD,LIST,m2l3,380,310,100,100 DIALOG ADD,TEXT,T7,6,246,160,150,,,STYLE1 DIALOG ADD,TEXT,T8,20,260,,,Name:,,,STYLE1 DIALOG ADD,TEXT,Name,20,300,100,20,,,,STYLE2 DIALOG ADD,TEXT,T10,50,260,,,Layer:,,STYLE1 DIALOG ADD,TEXT,LAY,50,300,30,20,,,,STYLE2 DIALOG ADD,TEXT,T12,50,340,,,ID:,,STYLE1 DIALOG ADD,TEXT,ID,50,360,30,20,,,,STYLE2 DIALOG ADD,TEXT,T14,80,260,,,Frenquency:,,STYLE1 DIALOG ADD,TEXT,FREQ,80,330,60,20,,,,STYLE2 DIALOG ADD,TEXT,T16,110,260,,,Bitrate:,,STYLE1 DIALOG ADD,TEXT,Bitrate,110,300,60,20,,,,STYLE2 DIALOG SHOW rem dialog set,E1,%F gosub get_lists gosub genreclicked rem gosub get_info1 :loop %A = @event() if %A goto %A end goto loop :Openmenu :Openbutton %A = @mci(close sound) %N = @filedlg("Mp3 files (*.mp3)|*.mp3",Open mp3 files"," hold shift for multi files,,MULTI) If @not(@ok(%N)) INFO No files selected goto loop end list create,2 list assign,2,%N list seek,2,0 %B = @count(2) %C = 0 repeat list add,C1,@name(@item(2)).@ext(@item(2)) %A = @next(2) %C = @succ(%C) until @equal(%B,%C) list seek,C1,0 list seek,2,0 goto C1click goto loop :C1click %F = 0 %F = @item(C1) dialog set,name,%F if @match(2,%F) %F = @index(2) list seek,2,%F %F = @item(2) end gosub get_info goto loop :get_info %K = @file(@shortname(@item(2)),Z) %O = @shortname(%F) %L = @diff(%K,127) %M = @diff(%K,125) %N = @IO(READC,%O,%L,%M) if @equal(%N,TAG) REM READ TITEL %L = @diff(%K,124) %M = @diff(%K,95) %N = @io(readc,%O,%L,%M) dialog set,e2,%N REM READ ARTITST %L = @diff(%K,94) %M = @diff(%K,65) %N = @io(readc,%O,%L,%M) dialog set,e3,%N REM READ ALBUM %L = @diff(%K,64) %M = @diff(%K,35) %N = @io(readc,%O,%L,%M) dialog set,e4,%N REM READ YEAR %L = @diff(%K,34) %M = @diff(%K,31) %N = @io(readc,%O,%L,%M) dialog set,e6,%N REM READ COMMENT %L = @diff(%K,30) %M = @diff(%K,1) %N = @io(readc,%O,%L,%M) dialog set,e5,%N REM READ GENRE %N = @io(readb,%O,%K,%K) if @match(1,%N) %N = @index(1) list seek,c2,%N list seek,1,0 end gosub get_layer_id else gosub get_layer_id end exit end end exit :exitmenu :CLOSE %A = @mci(close sound) end STOP :Playbutton %B = @item(2) %A = @mci(close sound) %B = @shortname(@item(2)) %A = @mci(open %B alias sound) if @ok() %A = @mci(play sound) dialog set,st,Playing @shortname(%B) now! else Warn MCI error: %A end goto loop :Stopbutton %A = @mci(close sound) dialog set,st,Stop playing @shortname(%B). goto loop :RESETBUTTON list clear,c1 list clear,2 list close,2 dialog set,E2, dialog set,E3, dialog set,E4, dialog set,E5, dialog set,E6, dialog set,name, dialog set,bitrate, dialog set,freq, dialog set,ID, dialog set,lay, dialog set,c1, dialog set,c2, dialog set,st,Click on open to select new files goto loop :get_Bitrate %2 = 0 %1 = 0 %n = 0 %N = @IO(READb,%O,3,3) %2 = 0 %1 = %N GOSUB HEX2BIN %2 = @substr(%2,8,8)@substr(%2,7,7)@substr(%2,6,6)@substr(%2,5,5)@substr(%2,4,4)@substr(%2,3,3)@substr(%2,2,2)@substr(%2,1,1) %1 = @strdel(%2,1,7) %2 = @strdel(%2,7,8) %3 = @strdel(%2,1,4) %1 = @strdel(%2,5,8) IF @null(@dlgtext(ID)) EXIT END IF @equal(@dlgtext(ID),1) gosub mpeg1 else gosub mpeg2 end exit :mpeg1 IF @equal(%3,00) dialog set,freq,44100 end IF @equal(%3,01) dialog set,freq,48000 end IF @equal(%3,10) dialog set,freq,32000 end IF @equal(%3,11) dialog set,freq,?????? end %N = @dlgtext(lay) IF @equal(%N,I) list seek,m1l1,0 %N = @MATCH(m1l1,%1) %N = @dlgtext(m1l1) gosub parse_freq end IF @equal(%N,II) list seek,m1l2,0 %N = @MATCH(m1l2,%1) %N = @dlgtext(m1l2) gosub parse_freq end IF @equal(%N,III) list seek,m1l3,0 %N = @MATCH(m1l3,%1) %N = @dlgtext(m1l3) gosub parse_freq end exit :mpeg2 IF @equal(%3,00) dialog set,freq,22050 end IF @equal(%3,01) dialog set,freq,24000 end IF @equal(%3,10) dialog set,freq,16000 end IF @equal(%3,11) dialog set,freq,?????? end %N = @dlgtext(lay) IF @equal(%N,I) list seek,m2l1,0 %N = @MATCH(m2l1,%1) %N = @dlgtext(m2l1) gosub parse_freq end IF @equal(%N,II) list seek,m2l2,0 %N = @MATCH(m2l2,%1) %N = @dlgtext(m2l2) gosub parse_freq end IF @equal(%N,III) list seek,m2l3,0 %N = @MATCH(m2l3,%1) %N = @dlgtext(m2l3) gosub parse_freq end exit :get_layer_id Dialog set,LAY, dialog set,ID, if @file(%F,R) dialog set,st,File is read only! exit end %O = @dlgtext(c1) %O = @shortname(%O) %N = @IO(READb,%O,2,2) %1 = %N %2 = 8 gosub hex2bin gosub get_layer gosub get_Bitrate exit :get_layer %1 = @strdel(%2,1,3) %1 = @strdel(%1,2,4) %2 = @strdel(%2,4,8) %2 = @strdel(%2,1,1) IF @equal(%1,01) dialog set,ID,2 end IF @equal(%1,11) dialog set,ID,1 end IF @equal(%1,10) dialog set,ID,2.5 end IF @equal(%2,00) Dialog set,LAY,??? end IF @equal(%2,01) Dialog set,LAY,II end IF @equal(%2,10) Dialog set,LAY,III end IF @equal(%2,11) Dialog set,LAY,I end exit :parse_freq option fieldsep,"=" parse "%1;%N", %N %N = %N dialog set,bitrate,%N exit :hex2bin IF @null(%1) %2 = exit end %1 = @sum($%1,0) %3 = %2 %2 = if @null(@numeric(%1)) exit end repeat %2 = %2@dif(%1,@prod(@div(%1,2),2)) %1 = @div(%1,2) %3 = @pred(%3) until @both(@zero(%1),@greater(1,%3)) exit :traxclicked %8 = @dlgtext(trax2) end exit :genreclicked %6 = @index(c2) list seek,genre2,%6 %5 = @dlgtext(c2) %6 = @dlgtext(genre2) end exit :Setbutton IF @null(%F) beep info No file's selected goto loop end %A = @file(@shortName(%F),Z) gosub new_tag %B = @dlgtext(E2) gosub add_name %B = @dlgtext(E3) gosub add_artist %B = @dlgtext(E4) gosub add_album %B = @dlgtext(E5) gosub add_comment %B = @dlgtext(E6) gosub add_year gosub traxclicked %B = @dlgtext(trax2) gosub genreclicked %B = @dlgtext(c2) gosub add_genre if @file(%F,R) dialog set,st,File is Read only else dialog set,st,Tag burnt end %F = @shortname(%F) goto loop :NEW_TAG %A = @file(@shortName(%F),Z) %D = @diff(%A,127) %L = @diff(%A,125) %z = @IO(READC,%F,%D,%l) IF @not(@equal(%Z,TAG)) %L = @sum(%A,1) %D = @sum(%A,129) %l = @IO(WRITc,TAG,%F,%l) %d = @IO(WRITc, ,%F,%d) dialog set,st,new tag added end %A = @file(@shortName(%F),Z) %D = @diff(%A,127) %L = @diff(%A,125) exit :add_year %C = @len(%B) if @greater(%C,4) %b = @strdel(%B,4,%C) end if @not(@greater(%c,3)) repeat %B = " "%B %c = @len(%B) until @equal(%c,4) end %D = @diff(%A,34) %L = @diff(%A,31) %B = @IO(WRITc,%B,%F,%D,%L) exit :add_album %C = @len(%B) if @greater(%C,30) %b = @strdel(%B,28,%C) end %C = 0 %C = @len(%B) if @not(@greater(%c,29)) repeat %B = %B" " %c = @len(%B) until @equal(%c,30) end %D = @diff(%A,64) %L = @diff(%A,35) %B = @IO(WRITc,%B,%F,%D,%L) exit :add_artist %C = @len(%B) if @greater(%C,30) %b = @strdel(%B,30,%C) end %C = 0 %C = @len(%B) if @not(@greater(%c,29)) repeat %B = %B" " %c = @len(%B) until @equal(%c,30) end %D = @diff(%A,94) %L = @diff(%A,65) %B = @IO(WRITc,%B,%F,%D,%L) exit :add_comment %C = @len(%B) if @greater(%C,30) %b = @strdel(%B,30,%C) end %C = 0 %C = @len(%B) if @not(@greater(%c,29)) repeat %B = %B" " %c = @len(%B) until @equal(%c,30) end %D = @diff(%A,30) %L = @diff(%A,3) %B = @IO(WRITc,%B,%F,%D,%L) exit :add_name %C = @len(%B) if @greater(%C,30) %b = @strdel(%B,30,%C) end %C = 0 %C = @len(%B) if @not(@greater(%c,29)) repeat %B = %B" " %c = @len(%B) until @equal(%c,30) end %D = @diff(%A,124) %L = @diff(%A,95) %B = @IO(WRITc,%B,%F,%D,%L) exit :add_genre %b = %6 %l = @diff(%A,5) %d = @diff(%A,0) %B = @IO(WRITb,%B,%f,%d,) exit :get_lists list loadtext,m1l1, "0000 "0001=32 "0010=64 "0011=96 "0100=128 "0101=160 "0110=192 "0111=224 "1000=256 "1001=288 "1010=320 "1011=352 "1100=384 "1101=416 "1110=448 "1111= list loadtext,m1l2, "0000 "0001=32 "0010=48 "0011=56 "0100=64 "0101=80 "0110=96 "0111=112 "1000=128 "1001=160 "1010=192 "1011=224 "1100=256 "1101=320 "1110=384 "1111= list loadtext,m1l3, "0000 "0001=32 "0010=40 "0011=48 "0100=56 "0101=64 "0110=80 "0111=96 "1000=112 "1001=128 "1010=160 "1011=192 "1100=224 "1101=256 "1110=320 "1111= list loadtext,m2l1 "0000 "0001=32 "0010=64 "0011=96 "0100=128 "0101=160 "0110=192 "0111=224 "1000=256 "1001=288 "1010=320 "1011=352 "1100=384 "1101=416 "1110=448 "1111= list loadtext,m2l2, "0000 "0001=32 "0010=48 "0011=56 "0100=64 "0101=80 "0110=96 "0111=112 "1000=128 "1001=160 "1010=192 "1011=224 "1100=256 "1101=320 "1110=384 "1111= list loadtext,m2l3, "0000 "0001=8 "0010=16 "0011=24 "0100=32 "0101=64 "0110=80 "0111=56 "1000=64 "1001=128 "1010=160 "1011=112 "1100=128 "1101=256 "1110=320 "1111= list create,1 list loadtext,1, "00=0000 "01=0001 "02=0002 "03=0003 "04=0004 "05=0005 "06=0006 "07=0007 "08=0008 "09=0009 "10=000A "11=000B "12=000C "13=000D "14=000E "15=000F "16=0010 "17=0011 "18=0012 "19=0013 "20=0014 "21=0015 "22=0016 "23=0017 "24=0018 "25=0019 "26=001A "27=001B "28=001C "29=001D "30=001E "31=001F "32=0020 "33=0021 "34=0022 "35=0023 "36=0024 "37=0025 "38=0026 "39=0027 "40=0028 "41=0029 "42=002A "43=002B "44=002C "45=002D "46=002E "47=002F "48=0030 "49=0031 "50=0032 "51=0033 "52=0034 "53=0035 "54=0036 "55=0037 "56=0038 "57=0039 "58=003A "59=003B "60=003C "61=003D "62=003E "63=003F "64=0040 "65=0041 "66=0042 "67=0043 "68=0044 "69=0045 "70=0046 "71=0047 "72=0048 "73=0049 "74=004A "75=004B "76=004C "77=004D "78=004E "79=004F "80=0050 "81=0051 "82=0052 "83=0053 "84=0054 "85=0055 "86=0056 "87=0057 "88=0058 "89=0059 "90=005A "91=005B "92=005C "93=005D "94=005E "95=005F "96=0060 "97=0061 "98=0062 "99=0063 "100=0064 "101=0065 "102=0066 "103=0067 "104=0068 "105=0069 "106=006A "107=006B "108=006C "109=006D "110=006E "111=006F "112=0070 "113=0071 "114=0072 "115=0073 "116=0074 "117=0075 "118=0076 "119=0077 "120=0078 "121=0079 "122=007A "123=007B "124=007C "125=007D "126=007E "127=007F "128=0080 "129=0081 "130=0082 "131=0083 "132=0084 "133=0085 "134=0086 "135=0087 "136=0088 "137=0089 "138=008A "139=008B "140=008C "141=008D "142=008E "143=008F "144=0090 "145=0091 "146=0092 "147=0093 "148=0094 "149=0095 "150=0096 "151=0097 "152=0098 "153=0099 "154=009A "155=009B "156=009C "157=009D "158=009E "159=009F "160=00A0 "161=00A1 "162=00A2 "163=00A3 "164=00A4 "165=00A5 "166=00A6 "167=00A7 "168=00A8 "169=00A9 "170=00AA "171=00AB "172=00AC "173=00AD "174=00AE "175=00AF "176=00B0 "177=00B1 "178=00B2 "179=00B3 "180=00B4 "181=00B5 "182=00B6 "183=00B7 "184=00B8 "185=00B9 "186=00BA "187=00BB "188=00BC "189=00BD "190=00BE "191=00BF "192=00C0 "193=00C1 "194=00C2 "195=00C3 "196=00C4 "197=00C5 "198=00C6 "199=00C7 list seek,1,0 %9 = 0 repeat list seek,1,%9 %7 = @next(1) option fieldsep,= parse "%7;%8",%7 list add,trax2,%8 %9 = @succ(%9) until @equal(%9,31) list seek,trax2,0 list clear,1 list loadtext,1, "Acid=22 "Acid Jazz=4A "Acid Punk=49 "Acoustic=63 "Alterative=14 "Alterative Rock=28 "Ambient=1A "Avantgarde=5A "Bass=29 "Bebob=55 "Big Band=60 "Blue Grass=59 "Blues=00 "Booty Bass=6B "Cabaret=41 "Celtic=58 "Chamber Music=68 "Chanson=66 "Chorus=61 "Christian Rap=3D "Classical Rock=01 "Classical=20 "Club=70 "Comedy=39 "Country=02 "Cult=3A "Dance=03 "Darkwave=32 "Death Metal=16 "Disco=04 "Dream=37 "Easy Listening=62 "Electronic=34 "Ethnic=30 "Euro Dance=36 "Euro Techno=19 "Fast Fusion=54 "Folk=50 "Folk / Rock=51 "Folklore=73 "Funk=05 "Fushion=1E "Game=24 "Gangsta=3B "Gospel=26 "Gothic=31 "Gothic Rock=5B "Grunge=06 "Hard Rock=4F "Hip-Hop=07 "House=23 "Humour=64 "Industrial=13 "Instrumental=21 "Instrumental Pop=2E "Instrumental Rock=2F "Jazz=08 "Jazz+Funk=1D "Jungle=3F "Latin=56 "Lo-Fi=47 "Media Active=2D "Metal=09 "Musical=4D "National Folk=52 "Native American=40 "New Age=0A "New Wave=42 "Noise=27 "Oldies=0B "Opera=67 "Other=0C "Polka=4B "Pop=0D "Pop - Funk=3E "Pop - Folk=35 "Porn Groove=6D "Pranks=17 "Primus=6C "Progressive Rock=5C "Psychadelic=43 "Psychadelic Rock=5D "Punk=2B "R&B=0E "RAP=0F "Rave=44 "Reggae=10 "Retro=4C "Revival=57 "Rock=11 "Rock & Roll=4E "Samba=72 "Satire=6E "Show Tunes=45 "Ska=15 "Slow Jam=6F "Slow Rock=5F "Sonata=69 "Soul=2A "Sound Clip=25 "Soundtrack=18 "Southern Rock=38 "Space=2c "Speech=65 "Swing=53 "Symphonic Rock=5E "Symphony=6A "Tango=71 "Techno=12 "Techno Industrial=33 "Top 40=3C "Trailer=46 "Trance=1F "Tribal=48 "Trip Hop=1B "Unknown=FF "Vocal=1C list seek,1,0 %9 = 0 repeat list seek,1,%9 %7 = @next(1) option fieldsep,= parse "%7;%8",%7 list add,c2,%7 list add,genre2,%8 %9 = @succ(%9) until @equal(%9,117) list seek,c2,@diff(%9,2) list seek,genre2,@diff(%9,2) list seek,1,0 exit :Aboutmenu %A = @mci(close sound) DIALOG CREATE,About,-1,0,250,200,nomin DIALOG ADD,STYLE,STYLE1,,,,,LTBLUE DIALOG ADD,STYLE,STYLE2,Comic Sans MS,16,B,,Yellow DIALOG ADD,GROUP,GROUP1,10,10,230,140 DIALOG ADD,TEXT,T2,12,20,,,TAG Read/Write,,style2 DIALOG ADD,BUTTON,B1,160,180,50,24,OK DIALOG ADD,TEXT,T3,60,20,,,Coded in VDS 4.0 DIALOG ADD,TEXT,T4,80,20,,,http://members.xoom.com/janssenr,,style1 DIALOG ADD,TEXT,T5,100,20,,,FreeWare accepted AS IS DIALOG ADD,TEXT,T6,120,20,,,Created by Easy rider. dialog show :childloop wait event goto @event() :B1button dialog close wait event %A = @event() goto loop