'ADPCM
'Player for Offline Radio Project
'By 3DSchuminator

'------------ OPTIONS FOR FIRST SETUP ------------
'OPTION KEYBOARD DISABLE
'OPTION KEYBOARD PINS GP0,GP1
'OPTION KEYBOARD US
'OPTION VGA PINS GP12,GP7
'OPTION SDCARD GP5,GP2,GP3,GP4
'OPTION AUDIO GP26,GP27
'OPTION COLOURCODE ON
'------------ END OPTIONS FOR FIRST SETUP ------------

OPTION BASE 1
SETPIN GP20, DIN, PULLUP
SETPIN GP28, AIN

Drive "B:"
'PLAY AM Radio Search SOUND
if MM.Info(exists file "AMradioSound.wav") = 1 then
	Print "Playing: AMradioSound.wav"
	Play wav "AMradioSound.wav"
	Do While MM.Info(SOUND) <> "OFF"
		Pause 100
	LOOP
ENDIF

' ---------- CHECK JINGLES ----------
jingles_enabled = 0
jingle_count = 0

IF MM.INFO(EXISTS DIR "jingles") = 1 THEN
    ChDir "jingles"
    f$ = DIR$("????.wav")
    DO WHILE f$ <> ""
        jingle_count = jingle_count + 1
        f$ = DIR$()
    LOOP

    IF jingle_count >= 2 THEN
        jingles_enabled = 1
        PRINT jingle_count; " jingles found"
    ELSE
        PRINT "Not enough jingles"
    ENDIF

    ChDir ".."
ENDIF

songs_since_jingle = 0
last_jingle = 0

IF jingles_enabled THEN
    next_jingle_at = INT(RND * 6) + 5   ' 5..10
ENDIF


ChDir "WAV"
' ---------- COUNT FILES ----------
filecount = 0
f$ = DIR$("????.wav")
DO WHILE f$ <> ""
    filecount = filecount + 1
    f$ = DIR$()
LOOP

IF filecount < 2 THEN
    PRINT "Need at least 2 WAV files"
    END
ENDIF

PRINT filecount; " WAV files found"

'RANDOMIZE TIMER
noise = 0
FOR i = 1 TO 16
    noise = noise XOR INT(PIN(GP28) * 65535)
    PAUSE 1
NEXT i
RANDOMIZE TIMER XOR noise
print "Random SEED: "; noise

' ---------- INITIAL INDEX ----------
IF PIN(GP20) = 1 THEN
    index = INT(RND * filecount) + 1
ELSE
    index = 1
ENDIF

lastindex = 0

' ---------- MAIN LOOP ----------
DO
    IF PIN(GP20) = 1 THEN
        ' RANDOM with no repeat
        DO
            index = INT(RND * filecount) + 1
        LOOP WHILE index = lastindex
    ELSE
        ' SEQUENTIAL
        IF index > filecount THEN index = 1
    ENDIF

' ---------- PLAY JINGLE IF NEEDED ----------
    IF jingles_enabled AND songs_since_jingle >= next_jingle_at THEN
        ChDir ".."
        ChDir "jingles"

        DO
            j = INT(RND * jingle_count) + 1
        LOOP WHILE j = last_jingle

        jname$ = RIGHT$("0000" + STR$(j), 4) + ".wav"
        PRINT "Jingle: "; jname$

        PLAY WAV jname$
        DO WHILE MM.INFO(SOUND) <> "OFF"
            PAUSE 200
        LOOP

        last_jingle = j
        songs_since_jingle = 0
        next_jingle_at = INT(RND * 6) + 5   ' next 5..10

        ChDir ".."
        ChDir "WAV"
    ENDIF


    fname$ = RIGHT$("0000" + STR$(index), 4) + ".wav"

    PRINT "Playing: "; fname$

    PLAY WAV fname$

    DO WHILE MM.INFO(SOUND) <> "OFF"
        PAUSE 500
    LOOP
	songs_since_jingle = songs_since_jingle + 1
    lastindex = index

    IF PIN(GP20) = 0 THEN index = index + 1
LOOP