Jak odgrywać dźwięk według systemu równomiernie temperowanego
fatalbomb
Aby wygenerować nuty, które jakoś brzmią, należy określić częstotliwość dźwięku w systemie równomiernie temperowanym. Przedstawiony poniżej kod ma za zadanie tego dokonać.
unit Sounds;
interface
uses Crt;
const N_C = 10000;
N_Cis= 10595;
N_D = 11225;
N_Dis= 11892;
N_E = 12599;
N_F = 13348;
N_Fis= 14142;
N_G = 14983;
N_Gis= 15874;
N_A = 16818;
N_B = 17818;
N_H = 18878;
procedure TCSound (Note:Word; Oct:Byte);
implementation
procedure TCSound (Note:Word; Oct:Byte);
var OutNote:Single;
begin
OutNote := Oct*(261*(Note / 10000));
Sound (Round (OutNote));
end;
end.
Kod sprawdziłem i działa. Czasem się przydaje.
Tak chyba prościej:
dla:
semitone=0 ---> częstotliwość dźwięku C0
semitone=12 ---> częstotliwość dźwięku C1
semitone=24 ---> częstotliwość dźwięku C2
itd.