HoShiMin
6/14/2015 - 6:59 PM

Хэшмап с нотами для быстрого получения частоты ноты по её названию

Хэшмап с нотами для быстрого получения частоты ноты по её названию

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.