/* Insert.rexx */ options results; address MrMIDI MUIA_List_Active = 0x8042391c; MUIA_List_Entries = 0x80421654 MUIA_ShowMe = 0x80429ba8; MUIV_List_Active_Top = -2 list ID SLIST ATTRS MUIA_List_Entries; entries = result popasl ID FPATH; fpath = result temp_name = TmpFile('PIPE:MIDI_List.') address command 'RequestFile >'temp_name 'DRAWER' fpath 'PATTERN "#?.(mid|kar)" TITLE "Select MIDI files" MULTISELECT NOICONS' if open('SongList', temp_name, 'r') = 1 then do temp_list = readln('SongList') call close('SongList') if temp_list ~= "" then do do forever parse var temp_list '"' first '"' temp_list if first == '' then leave if exists(first) then do popasl ID PATH; pathname = result temp_name = TmpFile('PIPE:MIDI_Temp.') address command 'ReadMIDI ' first '>'temp_name if open('Output', temp_name, 'r') = 1 then do null = readln('Output') format = readln('Output') total_tracks = readln('Output') division = readln('Output') temp_song_time = readln('Output') call close('Output') if left(null, 4) = 'MIDI' then do parse var format dummy': 'format parse var total_tracks dummy': 'total_tracks parse var division dummy': 'division parse var temp_song_time dummy': 'temp_song_time list ID SLIST ATTRS MUIA_List_Active if entries = 0 then result = result + 1 list ID SLIST INSERT NODUP POS result, STRING first||","||temp_song_time||","||format||","||total_tracks||","||division end /* of if null */ else request ID WARN GADGETS '"OK"' '"Corrupted MIDI file."' end /* of if open */ else request ID WARN GADGETS '"OK"' '"Could not open a pipe."' end /* of if exists */ else do temp_string = "Could not open the file '"first"'." request ID WARN GADGETS '"OK"' temp_string end end /* of do forever */ list ID SLIST ATTRS MUIA_List_Entries; temp_max = result setvar max temp_max text ID MAX LABEL "\033b\033r"right(temp_max, 3) temp_total_time = 0 do i = 0 to temp_max - 1 list ID SLIST POS i parse var result dummy','temp_song_time','dummy2 temp_total_time = temp_total_time + left(temp_song_time, 2) * 60 + right(temp_song_time, 2) end temp_string = right(temp_total_time % 3600, 2, 0)||":"||, right(temp_total_time // 3600 % 60, 2, 0)":"right(temp_total_time // 60, 2, 0) setvar total_time temp_string text ID TOTAL LABEL "\033b\033r"temp_string if entries = 0 then list ID SLIST ATTRS MUIA_List_Active MUIV_List_Active_Top end /* of if temp_list */ end /* of if open */ else request ID WARN GADGETS '"OK"' '"Could not open a pipe."' return