TOC 0 /* Test auf PD-Version von Jukebox, siehe result */
if result='freely distributable release' then do
address value portname
dopus front
dopus request '"'getcatstr(2,'Fehler:'lf'Frei verteilbare Version von Jukebox gefunden.'lf'PlayCDDA_JB.dopus5 läuft nur mit der registrierten Version !'lf'Bitte lassen Sie sich für Jukebox registrieren.')'"' getcatstr(1,'Beenden')
iterate /* dann an Schleifen-Anfang, wo dies gemeldet wird */
end
cdtoc=result /* CD merken für Vergleiche */
address value portname
lister set handle busy off
if CDDA~=1 then do /* CD nur Datentracks ?*/
lister set handle busy on
dopus request '"'getcatstr(21,'Fehler:'lf'CD enthält nur Datentracks !')'"' getcatstr(26,'Beenden|Ok')
if RC=1 then do
lister set handle busy off
call Ende
end
lister set handle busy off
lister clear handle
lister refresh handle full
iterate
end
lister set handle handler 'playcdda-handler' 'quotes'
/* install traps */
address value portname
dopus addtrap copy 'playcdda-handler'
dopus addtrap move 'playcdda-handler'
dopus addtrap copyas 'playcdda-handler'
dopus addtrap moveas 'playcdda-handler'
dopus addtrap delete 'playcdda-handler'
dopus addtrap rename 'playcdda-handler'
dopus addtrap devicelist 'playcdda-handler'
dopus addtrap parent 'playcdda-handler'
dopus addtrap show 'playcdda-handler'
dopus addtrap play 'playcdda-handler'
dopus addtrap protect 'playcdda-handler'
dopus addtrap datestamp 'playcdda-handler'
dopus addtrap comment 'playcdda-handler'
dopus addtrap makedir 'playcdda-handler'
do forever
if waitpkt('playcdda-handler') then do
packet=getpkt('playcdda-handler')
if packet='00000000'x then iterate
event=getarg(packet,0)
handle=getarg(packet,1)
titel=getarg(packet,2)
user=getarg(packet,3)
pathstr=getarg(packet,4)
if event="Parent" then leave
if event="parent" then leave
if event="inactive" then call Ende
address 'JUKEBOX.0'
CURRENT STATUS
if result="NODISC" then leave /* CD wurde vor Play entnommen ! */
TOC 0
if RC>0 then leave
if result~=cdtoc then leave /* CD wurde vertauscht ! */
T_FLAG=0
select
when event="doubleclick" then call Player
when event="Play" then call SelPlay
when event="path" then call SelPlay
when event="Show" then call CDTest
when event="Copy" then call SaveCD
when event="Move" then call SaveCD
when event="CopyAs" then call SaveCDAs
when event="MoveAs" then call SaveCDAs
when event="MakeDir" then iterate
when event="dropfrom" then call SaveCD
when event="drop" then iterate
otherwise call Productinfo
end
address value portname
reply(packet,10)
end
address 'JUKEBOX.0'
CURRENT STATUS
if result="NODISC" then leave /* CD wurde während Play entnommen ! */
end
address value portname
lister clear handle
lister refresh handle full
end /* Ende Schleife bei CD-Wechsel */
/*---Unterprogramm selektierte Titel spielen-----------------------------------------------------*/
SelPlay:
address value portname
lister set handle busy on
lister query handle selfiles stem files.
address 'JUKEBOX.0'
LOCKGUI
STOP
do i=0 to files.count-1
titel=files.i
call Player
address 'JUKEBOX.0'
CURRENT TIME
waittime=result
CURRENT TRKTIME
SUBTIME result RESTTIME
trtime=result
ADDTIME waittime trtime
endtime=result
sec=left(trtime,2)*60+substr(trtime,4,2)
j=1
address value portname
lister set handle progress sec getcatstr(7,'Spiele Audio-CD ... Titel')' 'i+1'/'files.count
lister refresh handle full
do forever
address 'JUKEBOX.0'
CURRENT STATUS
if result~="PLAY" then leave /* CD wurde entnommen */
CURRENT RELTIME
SUBTIME trtime result
rsttime=result
ADDTIME waittime "00:01:00"
waittime=result
j=j+1
WAIT TIME waittime
address value portname
lister set handle progress count j
lister set handle progress name left(rsttime,5)' 'substr(files.i,4,25)
lister query handle abort
if result then do
lister set handle busy off
lister clear handle progress
lister refresh handle full
address 'JUKEBOX.0'
STOP
UNLOCKGUI
return
end
if rsttime < "00:01:00" then do
WAIT TIME endtime
leave
end
end
address value portname
lister select handle '"'files.i'"' off
lister clear handle progress
lister refresh handle full
end
lister set handle busy off
address 'JUKEBOX.0'
STOP
UNLOCKGUI
return
/*---Unterprogramm Play -------------------------------------------------------------------------*/
Player:
address 'JUKEBOX.0'
SET TRACK left(titel,2)
if getcatstr(6,'Daten Track') = substr(titel,4) then return /* Datentrack return */
CURRENT VOLUME RESOLUTION
if (CDROMVOLUME<result) & (CDROMVOLUME>0) then do
CHANNEL BOTH
SET VOLUME CDROMVOLUME CDROMVOLUME
end
PLAY
return
/*---Unterprogramm Titel anspielen---------------------------------------------------------------*/
CDTest:
address value portname
dopus request '"'getcatstr(8,'Audio-CD anspielen:'lf''lf'Die Titel anspielen für wie lang ?')'"' getcatstr(9,'15s|30s|45s|Abbruch')
if RC=0 then return
if RC=1 then sptime="00:15:00"
if RC=2 then sptime="00:30:00"
if RC=3 then sptime="00:45:00"
address value portname
lister set handle busy on
lister query handle selfiles stem files.
address 'JUKEBOX.0'
LOCKGUI
STOP
do i=0 to files.count-1
titel=files.i
call Player
address 'JUKEBOX.0'
CURRENT TIME
waittime=result
CURRENT TRKTIME
SUBTIME result RESTTIME
trtime=result
if sptime<trtime then trtime=sptime
sec=left(trtime,2)*60+substr(trtime,4,2)
j=1
address value portname
lister set handle progress sec getcatstr(10,'Spiele Titel kurz an ... Titel')' 'i+1'/'files.count
lister refresh handle full
do forever
address 'JUKEBOX.0'
CURRENT STATUS
if result~="PLAY" then leave /* CD wurde entnommen */
CURRENT RELTIME
SUBTIME trtime result
rsttime=result
ADDTIME waittime "00:01:00"
waittime=result
j=j+1
WAIT TIME waittime
address value portname
lister set handle progress count j
lister set handle progress name left(rsttime,5)' 'substr(files.i,4,25)
lister query handle abort
if result then do
lister set handle busy off
lister clear handle progress
lister refresh handle full
address 'JUKEBOX.0'
STOP
UNLOCKGUI
return
end
if rsttime = "00:00:00" then leave
end
address value portname
lister select handle '"'files.i'"' off
lister clear handle progress
lister refresh handle full
end
lister set handle busy off
address 'JUKEBOX.0'
STOP
UNLOCKGUI
return
/*---Unterprogramm Titel speichern---------------------------------------------------------------*/
SaveCDAs:
T_FLAG=1
SaveCD:
address 'JUKEBOX.0'
INQUIRY
CDROM=substr(result,9,4)
if showlist("H","CDDA")~=1 & exists(CDDA_FS) then address command "mount "CDDA_FS /* CDDA Filesystem (Jukebox) mounten */
address value portname
select
when CDROM="TOSH" & showlist("H","CDDA")=1 then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' '8SVX|MONO|AIFF|RAW|WAVE|VOC|AU|ADPCM3|'getcatstr(12,'Abbruch')
when CDROM="SONY" & showlist("H","CDDA")=1 then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' '8SVX|MONO|AIFF|RAW|WAVE|VOC|AU|'getcatstr(12,'Abbruch')
when showlist("H","CDDA")=1 then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' 'AIFF|RAW|WAVE|VOC|AU|'getcatstr(12,'Abbruch')
when CDROM="TOSH" then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' '8SVX|MONO|AIFF|ADPCM3|'getcatstr(12,'Abbruch')
when CDROM="SONY" then dopus request '"'getcatstr(11,'Speichern von Audiodaten:'lf'Bitte das Speicherformat wählen.')'"' '8SVX|MONO|AIFF|'getcatstr(12,'Abbruch')
otherwise do
dopus request '"'getcatstr(17,'Fehler:'lf'CDDA V1.12 unterstützt nur SONY & TOSHIBA CDROM-Laufwerke.'lf'Für NEC, Hitachi, Pioneer, Sanyo etc. bitte das CDDA-Filesystem installieren.')'"' getcatstr(16,'Zurück')
return
end
end
SP_FLAG=RC
if SP_FLAG=0 then return
if (SP_FLAG=4 & showlist("H","CDDA")~=1) | SP_FLAG=8 then do
if ~exists(CDRip) then do
dopus request '"'getcatstr(14,'Leider ist ein Fehler aufgetreten:'lf'Das externe Programm CDRipper (aktueller Pfad %s ) wurde nicht gefunden.',CDRip)'"' getcatstr(16,'Zurück')
return
end
FT=".adpcm3"
end
else do
if (SP_FLAG=1 | SP_FLAG=2 | SP_FLAG=3) & (CDROM="TOSH" | CDROM="SONY") then do
if ~exists(CDSave) then do
dopus request '"'getcatstr(14,'Leider ist ein Fehler aufgetreten:'lf'Das externe Programm CDDA V1.12 (aktueller Pfad %s ) wurde nicht gefunden.',CDSave)'"' getcatstr(16,'Zurück')
return
end
call open('file','ENV:CDDA_DEVICE',W)
call writech('file',DEVICE)
call close ('file')
call open('file','ENV:CDDA_UNIT',W)
call writech('file',UNIT)
call close ('file')
end
else do
if (CDROM~="SONY" & CDROM~="TOSH" & showlist("H","CDDA")=1) then SP_FLAG=SP_FLAG+2
if ~exists(Amisox) & SP_FLAG~=4 then do
dopus request '"'getcatstr(15,'Leider ist ein Fehler aufgetreten:'lf'Das externe Programm AmiSOX (aktueller Pfad %s ) wurde nicht gefunden.'lf'Wählen Sie Speichern als RAW.',Amisox)'"' getcatstr(16,'Zurück')
return
end
end
if SP_FLAG=1 then FT=".8svx"
if SP_FLAG=2 then FT=".mono"
if SP_FLAG=3 then FT=".aiff"
if SP_FLAG=4 then FT=".cdr"
if SP_FLAG=5 then FT=".wave"
if SP_FLAG=6 then FT=".voc"
if SP_FLAG=7 then FT=".au"
address 'JUKEBOX.0'
STOP
LOCKGUI
address value portname
lister set handle busy on
lister set user busy on
if event='dropfrom' then do
files.count=1
LNG=POS('22'x,titel,2)-1
titel=left(titel,LNG)
files.0=right(titel,LNG-1)
end
else lister query handle selfiles stem files.
lister set handle progress files.count getcatstr(18,'Speichere Audiodaten ...')
lister refresh handle full
lister query user path
Zielpfad=result
do i=0 to files.count-1
titel=strip(left(substr(files.i,4),24))
tracknr=strip(left(files.i,2),"B"," ")
if length(tracknr)=1 then tracknr="0"tracknr
if titel=cdstring then titel="track"tracknr
address value portname
lister set handle progress count i+1
lister set handle progress name titel||FT
lister query handle abort
if result then leave
if getcatstr(6,'Daten Track') ~= substr(files.i,4) then do /* Datentrack überspringen */
if T_FLAG=1 then do
command beep
dopus getstring '"'getcatstr(13,'Bitte neuen Namen eingeben')'"' 24 '"'titel'"' 'OK|'getcatstr(12,'Abbruch')
if DOPUSRC=0 then leave
ttitel=result
if ttitel~="RESULT" then titel=ttitel
lister set handle progress name titel||FT
end
if CDROM="TOSH" | CDROM="SONY" then do
if FT=".aiff" then address command CDSave||" TRACK="||left(files.i,2)||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE"
if FT=".8svx" then address command CDSave||" TRACK="||left(files.i,2)||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE 8SVX"
if FT=".mono" then address command CDSave||" TRACK="||left(files.i,2)||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE 8SVX MONO"
end
else do
if FT=".aiff" then address command Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -taiff "'"'||Zielpfad||titel||FT'"'
end
if FT=".adpcm3" then address command CDRip||" "||left(files.i,2)||" to "||'"'Zielpfad||titel||FT'"'||" bits=3 Device="||DEVICE||" Unit="||Unit
if FT=".cdr" then address command "copy CDDA:track"tracknr" to "'"'||Zielpfad||titel||FT'"'||" QUIET"
if FT=".wave" then address command Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -twav "'"'||Zielpfad||titel||FT'"'
if FT=".voc" then address command Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -tvoc "'"'||Zielpfad||titel||FT'"'
if FT=".au" then address command Amisox||" -traw -r44100 -c2 -x -sw CDDA:track"tracknr" -U -r8000 "'"'||Zielpfad||titel||FT'"'
else dopus request '"'getcatstr(22,'PlayCDDA_JB.dopus5 Kurzhilfe:'lf'Parent: CD neu einlesen'lf'Doppelklick: Spielen ab geklickten Titel'lf'Abspielen: Spiele alle selektierten Titel'lf'Anzeigen: Spiele alle selektierten Titel kurz an'lf'Kopieren: Selektierte Titel speichern')'"' getcatstr(16,'Zurück')