Muszę zrobić program który będzie zapisywał melodię zagraną przez użytkownika i później sam ją odtwarzał. Zrobiłem już całą klawiaturę dźwięków mam jednak problem z odczytaniem tych zapisanych. Nie wiem jaką zmienną mam sczytać jako melodie. Poniżej zamieszczam kod programu. Proszę o pomoc
Program Kompozytor2;
uses Crt;
type mel=record
nazwa:String;
klawisz:Char;
end;
var klawisz:Char;
melodia:mel;
melodie: file of mel;
procedure play(nuta:Integer;czas:Integer);
begin
Sound(nuta);
Delay(czas);
NoSound;
end;{play}
Procedure Kompozytor;
const C1=33;D1=37;E1=41;F1=44;G1=49;A1=55;H1=62;C2=65;n=75;
var
Cis,Dis,Fis,Gis,Ais:Integer;
koniec:Boolean;
nuta:Integer;
z,c:Integer;
zapis:Char;
begin
ClrScr;
writeln('Program sluzy do komponowania muzyki');
write('Klawiatura dzwiekow ma nastepujacy wyglad:');
writeln;
writeln(' |w|e| |t|y|u|');
writeln(' |a|s|d|f|g|h|j|k|');
writeln('klawisze z i x zmieniaja oktawy');
writeln('klawisze v,b,n,m sluza do zmiany dlugosci dzwieku');
writeln('nacisniecie innego klawisza od wyzej wymienionych powoduje koniec programu');
Cis:=Round(Sqrt(C1*D1));
Dis:=Round(Sqrt(D1*E1));
Fis:=Round(Sqrt(F1*G1));
Gis:=Round(Sqrt(G1*A1));
Ais:=Round(Sqrt(A1*H1));
koniec:=False;
c:=1;
z:=n;
repeat
klawisz:=ReadKey;
case klawisz of
'v':z:=n;
'b':z:=2*n;
'n':z:=4*n;
'm':z:=8*n;
'z':c:=2*c ;
'x':c:=round(c/2);
'a':play(C1*c,z);
's':play(D1*c,z);
'd':play(E1*c,z);
'f':play(F1*c,z);
'g':play(G1*c,z);
'h':play(A1*c,z);
'j':play(H1*c,z);
'k':play(C2*c,z);
'w':play(Cis*c,z);
'e':play(Dis*c,z);
't':play(Fis*c,z);
'y':play(Gis*c,z);
'u':play(Ais*c,z);
else koniec:=True;
end;
if not koniec
then begin
write(klawisz:3);
readln(klawisz);
play(nuta,n);
zapis:=klawisz;
NoSound;
end;
until koniec;
end;
procedure zakladanie_pliku;
var nazwa:String;
begin
assign(melodie,'C:\MELODIE.DAN');
writeln(' podaj nazwe piosenki');
rewrite(melodie);
read(melodia.nazwa);
kompozytor;
write(klawisz);
read(melodia.klawisz);
write(melodie,melodia);
Close(melodie);
end;{zakladanie_pliku koniec}
procedure odtwarzanie_melodii;
begin
assign(melodie,'C:\MELODIE.DAN');
reset(melodie);
read(melodie,melodia);
write(melodia.nazwa,melodia.klawisz);
{ while not eof(melodie) do
begin
read(melodie,melodia);
writeln(melodia.nazwa,melodia.klawisz);
end; }
close(melodie);
readln;
end;
Procedure Menu;
var odp:char;
begin
writeln('wybierz opcje:');
writeln('1 kompozytor bez zapisywania melodii');
writeln('2 nagrywanie piosenki');
writeln('3 odtwarzanie melodii');
odp:=ReadKey;
write(odp);
case odp of
'1':kompozytor;
'2':zakladanie_pliku;
'3':odtwarzanie_melodii;
end;
end;
begin
Clrscr;
assign(melodie,'C:\MELODIE.DAN'); {program g˘wny}
Menu;
end.