TURBO PASCAL |
Новости
|
Программирование звукового генератора
Звуковые возможности ПК основаны на одноканальном управляемом звуковом генераторе, вырабатывающем электромагнитные колебания звуковой частоты. Колебания подаются на встроенный в ПК динамик и заставляют его звучать. В модуль CRT включены три процедуры, с помощью которых Вы сможете запрограммировать произвольную последовательность звуков. Процедура Sound. Заставляет динамик звучать с нужной частотой. Заголовок процедуры: Procedure Sound(F: Word); Здесь F - выражение типа Word, определяющее частоту звука в герцах. После обращения к процедуре включается динамик и управление немедленно возвращается в основную программу, в то время как динамик будет звучать впредь до вызова процедуры NoSound. Процедура No Sound. Выключает динамик. Если он к этому моменту не был включен, вызов процедуры игнорируется. Процедура Delay. Обеспечивает задержку работы программы на заданный интервал времени. Заголовок процедуры: Procedure Delay(T: Word); Здесь Т - выражение типа Word, определяющее интервал времени (в миллисекундах), в течение которого задерживается выполнение следующего оператора программы. Для генерации звукового сигнала обычно используется вызов описанных процедур по схеме Sound-Delay-NoSound. Следующая программа заставит ПК воспроизвести простую музыкальную гамму. Используемый в ней массив F содержит частоты всех полутонов в первой октаве от «до» до «си». При переходе от одной октавы к соседней частоты изменяются в два раза. Uses CRT; const F: array [1..12] of Real = (130.8, 138.6, 146.8, 155.6, 164.8, 174.6, 185.0, 196.0, 207.7, 220.0, 233.1, 246.9);{Массив частот 1-й октавы} Temp = 100;{Темп исполнения} var k,n: Integer; begin {Восходящая гамма} for k := 0 to 3 do for n := 1 to 12 do begin Sound(Round(F[n]*(1 shl k) )) ; Delay(Temp); NoSound end ; {Нисходящая гамма} for k := 3 downto 0 do for n := 12 downto 1 do begin Sound(Round(F[n]*(1 shl k)) ) ; Delay(Temp); NoSound end end.
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |