Хэшмап с нотами для быстрого получения частоты ноты по её названию
unit NotesSerializer;
interface
uses
NotesInfo, Generics.Collections;
type
TNotesSerializer = class
private
FNotesDictionary: TDictionary<string, Single>;
public
constructor Create;
destructor Destroy; override;
function GetFrequency(NoteName: string): Single;
end;
var
NotesList: TNotesSerializer;
implementation
{ TNotesSerializer }
constructor TNotesSerializer.Create;
var
I: Integer;
begin
FNotesDictionary := TDictionary<string, Single>.Create;
for I := 0 to Length(Notes) - 1 do
FNotesDictionary.Add(Notes[I], ChromaticGamma[I]);
end;
destructor TNotesSerializer.Destroy;
begin
FNotesDictionary.Destroy;
end;
function TNotesSerializer.GetFrequency(NoteName: string): Single;
begin
if not FNotesDictionary.TryGetValue(NoteName, Result) then Result := 0;
end;
initialization
NotesList := TNotesSerializer.Create;
finalization
NotesList.Destroy;
end.