| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- program SoundDemo;
- {$C-}
- {
- SOUND DEMONSTRATION PROGRAM Version 1.00A
- This program demonstrates TURBO PASCAL's standard procedures Sound,
- Delay and NoSound on the IBM PC and true compatibles.
- PSEUDO CODE
- 1. Sound an alarm until a key is pressed.
- a. Play G and D in octave 4
- 2. Sound a siren until a key is pressed.
- INSTRUCTIONS
- 1. Compile and run this program using the TURBO.COM compiler.
- 2. Type any key to stop the alarm.
- 3. Type any key to stop the siren and end the program.
- }
- type
- NoteRecord = record
- C,CF,D,DF,E,F,FF,G,GF,A,AF,B: integer;
- end;
- const
- Notes: NoteRecord =
- (C:1;CF:2;D:3;DF:4;E:5;F:6;FF:7;G:8;GF:9;A:10;AF:11;B:12);
- var
- ch : char;
- procedure Play(Octave,Note,Duration: integer);
- { Play Note in Octave Duration milliseconds
- Frequency computed by first computing C in
- Octave then increasing frequency by Note-1
- times the twelfth root of 2. (1.059463994)
- If Duration is zero Note will be played
- until you activate procedure NoSound }
- var
- Frequency : real;
- I : integer;
- begin
- Frequency := 32.625;
- for I := 1 to Octave do { Compute C in Octave }
- Frequency := Frequency * 2;
- for I := 1 to Note - 1 do { Increase frequency Note-1 times }
- Frequency := Frequency * 1.059463094;
- if Duration <> 0 then
- begin
- Sound(Round(Frequency));
- Delay(Duration);
- NoSound;
- end
- else Sound(Round(Frequency));
- end;
- procedure SoftAlarm;
- { Play the notes G and D in octave three 7 times
- each with a duration of 70 milliseconds. }
- var
- I: integer;
- begin
- for I := 1 to 7 do
- with Notes do
- begin
- Play(4,G,70);
- Play(4,D,70);
- end;
- delay(1000);
- end;
- procedure Siren;
- var
- Frequency: integer;
- begin
- for Frequency := 500 to 2000 do
- begin
- Delay(1);
- Sound(Frequency);
- end;
- for Frequency := 2000 downto 500 do
- begin
- Delay(1);
- Sound(Frequency);
- end;
- NoSound;
- end;
- procedure SoundAlarm;
- begin
- Writeln('Press any key to Stop');
- repeat
- SoftAlarm
- until KeyPressed;
- Read(kbd,ch);
- end; {SoundAlarm}
- procedure SoundSiren;
- begin
- Writeln('Press any key to Stop');
- repeat
- Siren
- until KeyPressed;
- Read(kbd,ch)
- end; {SoundSiren}
- begin
- SoundAlarm;
- SoundSiren;
- end.
|