{ (c) 1998 CREEQ <creeq@web.de> }
program Digitales_Piano;

uses Crt;

var soundfile  : text;
    zeile, t   : string;
    thz, limit : string;
    rlimit     : word;
    i          : integer;
    datfile    : string;

procedure checkexist;
begin
  write('Please enter SoundFile: ');
  readln(datfile);
  assign(soundfile, datfile);
  {$I-}
  reset(soundfile);
  {$I+}
  If IOResult = 0 Then
    Begin
      close(soundfile);
    End
  else
  begin
    writeln('File: ',datfile,' does not exist!');
    readkey;
    halt(0);
  end;
end;

procedure playsound(hz,limit:word);
begin
  sound(hz);
  delay(limit);
  nosound;
end;

procedure trennung;
begin
  thz := zeile;
  i := 1;
  while not (thz[i] = ',') do inc(i);
  delete(thz,i,length(thz));
  limit := zeile;
  delete(limit,1,i);
  val(limit,rlimit,i);
end;

procedure gosound;
begin
  if thz = 'Pause' then delay(rlimit);
  if thz = 'C-0' then playsound(16,rlimit);
  if thz = 'C#-0' then playsound(17,rlimit);
  if thz = 'D-0' then playsound(18,rlimit);
  if thz = 'D#-0' then playsound(19,rlimit);
  if thz = 'E-0' then playsound(21,rlimit);
  if thz = 'F-0' then playsound(21,rlimit);
  if thz = 'F#-0' then playsound(23,rlimit);
  if thz = 'G-0' then playsound(25,rlimit);
  if thz = 'G#-0' then playsound(26,rlimit);
  if thz = 'A-0' then playsound(28,rlimit);
  if thz = 'A#-0' then playsound(29,rlimit);
  if thz = 'H-0' then playsound(31,rlimit);
  if thz = 'C-1' then playsound(33,rlimit);
  if thz = 'C#-1' then playsound(35,rlimit);
  if thz = 'D-1' then playsound(37,rlimit);
  if thz = 'D#-1' then playsound(39,rlimit);
  if thz = 'E-1' then playsound(41,rlimit);
  if thz = 'F-1' then playsound(44,rlimit);
  if thz = 'F#-1' then playsound(46,rlimit);
  if thz = 'G-1' then playsound(49,rlimit);
  if thz = 'G#-1' then playsound(52,rlimit);
  if thz = 'A-1' then playsound(55,rlimit);
  if thz = 'A#-1' then playsound(58,rlimit);
  if thz = 'H-1' then playsound(62,rlimit);
  if thz = 'C-2' then playsound(65,rlimit);
  if thz = 'C#-2' then playsound(69,rlimit);
  if thz = 'D-2' then playsound(73,rlimit);
  if thz = 'D#-2' then playsound(78,rlimit);
  if thz = 'E-2' then playsound(82,rlimit);
  if thz = 'F-2' then playsound(87,rlimit);
  if thz = 'F#-2' then playsound(93,rlimit);
  if thz = 'G-2' then playsound(98,rlimit);
  if thz = 'G#-2' then playsound(104,rlimit);
  if thz = 'A-2' then playsound(110,rlimit);
  if thz = 'A#-2' then playsound(117,rlimit);
  if thz = 'H-2' then playsound(124,rlimit);
  if thz = 'C-3' then playsound(131,rlimit);
  if thz = 'C#-3' then playsound(139,rlimit);
  if thz = 'D-3' then playsound(147,rlimit);
  if thz = 'D#-3' then playsound(156,rlimit);
  if thz = 'E-3' then playsound(165,rlimit);
  if thz = 'F-3' then playsound(175,rlimit);
  if thz = 'F#-3' then playsound(185,rlimit);
  if thz = 'G-3' then playsound(196,rlimit);
  if thz = 'G#-3' then playsound(208,rlimit);
  if thz = 'A-3' then playsound(220,rlimit);
  if thz = 'A#-3' then playsound(233,rlimit);
  if thz = 'H-3' then playsound(247,rlimit);
  if thz = 'C-4' then playsound(262,rlimit);
  if thz = 'C#-4' then playsound(277,rlimit);
  if thz = 'D-4' then playsound(294,rlimit);
  if thz = 'D#-4' then playsound(311,rlimit);
  if thz = 'E-4' then playsound(330,rlimit);
  if thz = 'F-4' then playsound(349,rlimit);
  if thz = 'F#-4' then playsound(370,rlimit);
  if thz = 'G-4' then playsound(392,rlimit);
  if thz = 'G#-4' then playsound(415,rlimit);
  if thz = 'A-4' then playsound(440,rlimit);
  if thz = 'A#-4' then playsound(466,rlimit);
  if thz = 'H-4' then playsound(494,rlimit);
  if thz = 'C-5' then playsound(523,rlimit);
  if thz = 'C#-5' then playsound(554,rlimit);
  if thz = 'D-5' then playsound(587,rlimit);
  if thz = 'D#-5' then playsound(622,rlimit);
  if thz = 'E-5' then playsound(659,rlimit);
  if thz = 'F-5' then playsound(699,rlimit);
  if thz = 'F#-5' then playsound(740,rlimit);
  if thz = 'G-5' then playsound(784,rlimit);
  if thz = 'G#-5' then playsound(831,rlimit);
  if thz = 'A-5' then playsound(880,rlimit);
  if thz = 'A#-5' then playsound(932,rlimit);
  if thz = 'H-5' then playsound(988,rlimit);
  if thz = 'C-6' then playsound(1047,rlimit);
  if thz = 'C#-6' then playsound(1109,rlimit);
  if thz = 'D-6' then playsound(1175,rlimit);
  if thz = 'D#-6' then playsound(1245,rlimit);
  if thz = 'E-6' then playsound(1319,rlimit);
  if thz = 'F-6' then playsound(1397,rlimit);
  if thz = 'F#-6' then playsound(1480,rlimit);
  if thz = 'G-6' then playsound(1568,rlimit);
  if thz = 'G#-6' then playsound(1661,rlimit);
  if thz = 'A-6' then playsound(1760,rlimit);
  if thz = 'A#-6' then playsound(1865,rlimit);
  if thz = 'H-6' then playsound(1976,rlimit);
  if thz = 'C-7' then playsound(2093,rlimit);
  if thz = 'C#-7' then playsound(2218,rlimit);
  if thz = 'D-7' then playsound(2349,rlimit);
  if thz = 'D#-7' then playsound(2489,rlimit);
  if thz = 'E-7' then playsound(2637,rlimit);
  if thz = 'F-7' then playsound(2794,rlimit);
  if thz = 'F#-7' then playsound(2960,rlimit);
  if thz = 'G-7' then playsound(3136,rlimit);
  if thz = 'G#-7' then playsound(3322,rlimit);
  if thz = 'A-7' then playsound(3520,rlimit);
  if thz = 'A#-7' then playsound(3729,rlimit);
end;

procedure translateandplay;
begin
  reset(soundfile);
  while not (zeile = '') do
  begin
    readln(soundfile,zeile);
    trennung;
    gosound;
    if keypressed then halt(0);
  end;
end;

begin
  zeile := 'leer';
  clrscr;
  highvideo;
  writeln('Digital Piano V1.00 - by CREEQ');
  writeln;
  normvideo;
  checkexist;
  translateandplay;
end.
