Programowanie w języku Pascal » FAQ

Jak odgrywać dźwięk według systemu równomiernie temperowanego

  • 2007-05-04 20:46
  • 1 komentarz
  • 690 odsłon
  • Oceń ten tekst jako pierwszy
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.

1 komentarz

_0x666_ 2007-05-05 23:32

Tak chyba prościej:

16.35*pow(1.0594630943593,semitone);

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.