program mid2dtn; uses SysUtils, Algemeen, MidiDoos, MidiText; var Bron,Doel : string; OTF : textfile; procedure Some_Help; begin Writeln('MID2DTN'); Writeln; Writeln('Converts MidiFile to TextFile'); Writeln('Time Differences, Note differences'); Writeln; writeln('Syntax: [program] [IMF] [OTF]'); Writeln; Writeln('IMF = name of input MidiFile'); Writeln('OTF = name of output TextFile'); end; procedure Read_Parameters(var OK : boolean); var tel : byte; begin OK := true; tel := ParamCount; if (tel < 2) or (tel > 2) then begin Some_Help; OK := false; Exit; end; Bron := ParamStr(1); Doel := ParamStr(2); if not FileExists(Bron) then begin Writeln(Bron + ': does Not exist'); OK := false; Exit; end; AssignFile(OTF, Doel); Rewrite(OTF); end; procedure DT_DN(MF : Midi; var reeds : integer; aantal : integer); var p,t : integer; riedel : bytes; uit : string; begin p := reeds; while p < reeds+aantal do begin t := MF.Get_Delta_Time(p); if t > 0 then Writeln(OTF,t); MF.Data_Any_Event(p,riedel); uit := Any_Event(riedel); Writeln(OTF,uit); end; reeds := p; end; procedure HoofdRoutine; { Beginning of Main program } var MF : Midi; trk : integer; OK : boolean; punt,aantal : integer; begin Read_Parameters(OK); if not OK then Exit; MF := Midi.Create; MF.Read_MidiFile(Bron); MF.Check_Structure(OK); if not OK then Exit; Writeln(OTF,'File ',MF.Type01,' (',MF.Tracks,') ',MF.Ticks); { Writeln(OTF,'* Conversion by: MID2DTN'); } { Loop through all tracks: } punt := 14; for trk := 1 to MF.tracks do begin MF.Check_Track_Header(punt,aantal,OK); Writeln(OTF,'Track # ',trk - 1); DT_DN(MF,punt,aantal); end; Close(OTF); end; BEGIN HoofdRoutine; END.