Tài nguyên Thư viện

Thành viên trực tuyến

8 khách và 0 thành viên

Thống kê

  • truy cập   (chi tiết)
    trong hôm nay
  • lượt xem
    trong hôm nay
  • thành viên
  • Menu Thư viện

    Gốc > Kiến thức tin học > Lập trình Pascal >

    Âm thanh trong Pascal: TẠO HIỆU ỨNG ÂM THANH


         Đối với một số ngôn ngữ lập trình hướng đối tượng mạnh như Visual Basic hoặc Visual C++, thì việc quản lý âm thanh như chuyển âm thanh, chuyển nhạc (nhạc MP3, audio) ra Soundcard là không có gì khó. Nhưng đối với Pascal, đó là một công việc phức tạp và mất thời gian.

         Ở bài này, tôi chỉ đề cập đến việc tạo hiệu ứng âm thanh trên loa nội bộ của máy PC.

     1.  Beep (bíp):

         Tiếng bíp thường dùng để báo lỗi trong các chương trình. Để phát tiếng bíp, bạn dùng tần số xấp xỉ 150 Hertz trong khoảng thời gian 400 mili giây.  

         Ví dụ sau đây sẽ phát ra tiếng bip để báo lỗi nếu bạn nhập sai số liệu :

                        Program Bip ;

                        Uses Crt ;

                        Var

                           MyNum : Integer ;

                        (* ----------------------------------------------------- *)

                        Procedure Beep ;

                        Begin

                           Sound ( 150 ) ;

                           Delay ( 400 ) ;

                           Nosound ;

                        End ;

                        (* ----------------------------------------------------- *)

                        BEGIN

                           Clrscr ;

                           Write (' Cho mot so tu 1 đen 5 : ') ;

                           Readln ( MyNum ) ;

                           If ( MyNum < 1 ) Or ( MyNum > 5 ) Then

                           Begin

                              Beep ;

                              Write (' Ban vao sai roi ! ') ;

                           End

                           Else Write (' So lieu duoc chap nhan ! ') ;

                           Readln ;

                        End. 

    2.  Buzz (tiếng rù rù):

         Để tạo tiếng rù rù, bạn dùng tần số 100 Hertz và thời khoảng 30 mili giây  

                        Program Ru_ru ;

                        Uses Crt ;

                        Var

                           Counter : Integer ;

                        BEGIN

                           For Counter := 1 To 30 Do

                           Begin

                              Sound ( 100 ) ;

                              Delay ( 30 ) ;

                              Nosound ;

                              Delay ( 30 ) ;

                           End ;

                        END. 

    3.  Tiếng banh nảy:

         Để tạo tiếng banh nảy bạn thay đổi giữa 2 tone thấp và cao như quả banh nảy lên rồi lại rơi xuống. Mỗi lần banh nảy sẽ giảm độ nảy so với lần trước nghĩa là tiếng banh ngày càng gần nhau. Ví dụ sau đây cho thấy điều đó : 

                        Program Ban_nay ;

                        Uses Crt ;

                        Var

                            Hight, Low : Integer ;

                        (* ---------------------------------------------------------- *)

                        Procedure BoucingBall ( Hight, Low : Integer ) ;

                        Var

                           Count : Integer ;

                        Begin

                           Count := 20 ;

                           While Count > 1 Do

                           Begin

                              Sound ( Low - Count * 2 ) ;

                              Delay ( (Count * 500) Div 20 ) ;

                              Nosound ;

                              Sound ( Hight ) ;

                              Delay ( (Count * 500) Div 15 ) ;

                              Nosound ;

                              Delay ( 150 ) ;

                              Count := Count - 2 ;

                           End ;

                        End ;

                        (* ---------------------------------------------------------- *)

                        BEGIN

                           BoucingBall ( 350, 200 ) ;

                        END. 

    4.  Tiếng bỏ bom:

         Ví dụ sau tạo ra tiếng bỏ bom. Thủ tục BombsAway có 3 tham biến Hight, Low, Altitude. Tham biến Hight, Low cho tần số cao và thấp, tham biến Altitude kiểm soát thời khoảng của tone : 

                        Program Bo_bom ;

                        Uses Crt ;

                        Var

                           Hight, Low, Altitude : Integer ;

                        (* ------------------------------------------------------------ *)

                        Procedure BombsAway ( Hight, Low, Altitude : Integer ) ;

                        Var

                           Count : Integer ;

                        Begin

                           Count := Low ;

                           While Count <= Hight Do

                           Begin

                              Sound ( Count ) ;

                              Delay ( (Altitude Div Count) * 75 ) ;

                              Count := Count + 10 ;

                           End ;

                           For Count := 1 To 3 Do

                           Begin

                              Nosound ;

                              Sound ( 40 ) ;

                              Delay ( 500 ) ;

                              Nosound ;

                              Delay ( 100 ) ;

                           End ;

                           Sound ( 40 ) ;

                           Delay ( 3000 ) ;

                           Nosound ;

                        End ;

                        (* ------------------------------------------------------------ *)

                        BEGIN

                           BombsAway ( 1200, 200, 500 ) ;

                        END. 

    5.  Tiếng báo động:

         Ví dụ sau đây sẽ tạo ra tiếng báo động cho đến khi bạn gõ phím bất kì :

                        Program Bao_dong ;

                        Uses Crt ;

                        (* ----------------------------------------------------------- *)

                        Procedure RedAlert ( Hight, Low : Integer ) ;

                        Var

                           Ch :Char ;

                        Begin

                           Clrscr ;

                           Write(' An phim bât ki de cham dut bao dong ! ') ;

                           Repeat

                              Sound ( Hight ) ;

                              Delay ( 400 ) ;

                              Sound ( Low ) ;

                              Delay ( 400 ) ;

                           Until KeyPressed ;

                           Ch := Readkey ;

                           Nosound ;

                        End ;

                        (* ----------------------------------------------------------- *)

                        BEGIN

                           RedAlert ( 359, 200 ) ;

                        END. 

         Trên đây, tôi đã trình bày các hiệu ứng của âm thanh được lập trình bởi Pascal. Tuy nhiên do sử dụng kĩ thuật phối âm chưa cao nên âm thanh chưa gây được ấn tượng cho người nghe. Ở phần Ứng dụng, tôi đã trình bày các ví dụ để tạo âm thanh sinh động hơn, bạn có thể tham khảo.


    Nhắn tin cho tác giả
    Đỗ Trung Thành @ 10:53 13/09/2009
    Số lượt xem: 14535
    Số lượt thích: 0 người
     
    Gửi ý kiến