Xây dựng chương trình xử lý âm thanh số ( DigitalSound )

Giới thiệu chung 1. Giới thiệu chung Cùng với sự phát triển của cuộc cách mạng khoa học và công nghệ đang diễn ra một cách sôi động, chúng ta đang tiến dần tới thế giới của sự số hoá. Với các ưu điểm của xử lý số, nhanh gọn, chính xác với chất lượng cao, mọi lĩnh vực hoạt động của xã hội loài người, nhất là các ngành trong các lĩnh vực thông tin liên lạc, phát thanh truyền hình . đều tiến tới việc áp dụng một cách đồng bộ và có hiệu quả các công cụ cũng như các phép xử lý số. Trong đó, âm thanh là một lĩnh vực đặc biệt quan trọng, đây là một phương thức dùng để trao đổi cũng như cảm nhận tin, không chỉ là tiếng nói, bản nhạc mà đó là tất cả các âm mà ta cảm nhận được trong cuộc sống hàng ngày, do đó, lĩnh vực về âm thanh không thể nằm ngoài xu hướng phát triển chung mà còn cần sự nghiên cứu sâu hơn nữa. 2. Đặt vấn đề Với âm thanh số, bằng việc lưu trữ âm thanh dưới dạng các dãy số, chúng ta đạt được yêu cầu về tốc độ truyền cũng như về khối lượng lưu trữ và độ trung thực trong các phép xử lý như khử nhiễu, soạn thảo hay các hiệu quả tạo độ vang, trễ . Do vậy, ngoài các phương tiện sử dụng kỹ thuật số, như camera số, thiết bị ghi số, điện thoại số . với chất lượng cao, thì những âm thanh tương tự được ghi từ micro với các nhạc cụ truyền thống đều được chuyển đổi sang dạng số hoá. Hơn nữa, với âm thanh, chúng ta không chỉ quan tâm tới khả năng cảm nhận một cách trung thực nhất âm thanh tự nhiên, mà ta còn hướng tới việc tạo ra (hay tổng hợp) được những âm thanh mà ta mong muốn. Do đó, khi nói đến âm thanh số thì cần thiết phải xét tới 3 khía cạnh: Các khuôn dạng lưu trữ âm thanh với các đặc tính riêng biệt. Đây là yêu cầu trước tiên của bất kỳ quá trình thu thanh hay khi cần đọc dữ liệu để phân tích. Cần phải hiểu rõ các đặc tính cả từng khuôn dạng thì mới có thể lưu trữ một cách hiệu quả nhất. Thao tác với các tệp âm thanh qua một trình soạn thảo âm thanh với các phép sao chép, cắt, dán, lọc, trộn âm hay chuyển đổi khuôn dạng tệp lưu trữ cũng như phương thức lưu trữ dữ liệu. Đây là cách để chúng ta có thể cảm nhận được âm thanh một cách rõ nét. Phân tích tín hiệu của âm thanh bằng cách biểu diễn dữ liệu âm thanh dưới dạng tín hiệu tuỳ theo mục đích phân tích. Dữ liệu đọc từ tệp, sau đó qua các phép xử lý tín hiệu số như lọc, hàm cửa sổ, biến đổi FFT, Cepstrum . để có thể rút ra các tham số đặc trưng, các thông tin cần thiết cho các quá trình nhận dạng hay tổng hợp âm sau đó. 3. Chủ đề của luận án Chính vì vậy, với đề tài “Xây dựng chương trình xử lý âm thanh số” thì nhiệm vụ trước tiên sẽ phải nghiên cứu, tìm hiểu các khuôn dạng lưu trữ dữ liệu, sau đó xây dựng một chương trình (xử dụng ngôn ngữ lập trình Delphi) để thao tác với các tệp âm thanh và phân tích tín hiệu của các âm thanh đó.

doc31 trang | Chia sẻ: banmai | Lượt xem: 1661 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Xây dựng chương trình xử lý âm thanh số ( DigitalSound ), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
d÷ liÖu ©m thanh d¹ng 1. Tuy nhiªn, d÷ liÖu ©m thanh cã thÓ cÇn ph¶i ®­îc lµm vì ra qua c¸c khèi multiple. §iÒu nµy th­êng xuyªn xuÊt hiÖn bëi ta muèn chÌn thªm vµi d¹ng khèi kh¸c (nh­ mét dÊu hiÖu vßng lÆp) trong phÇn gi÷a cña d÷ liÖu ©m thanh. D÷ liÖu ©m thanh tiÕp theo ®­îc l­u tr÷ trong c¸c khèi ©m thanh liªn tiÕp d¹ng 2. Khèi ©m thanh liªn tiÕp chØ chøa d÷ liÖu vÒ mÉu ©m thanh. Nã kh«ng lÆp l¹i bÊt cø th«ng tin ®Þnh d¹ng nµo tõ khèi d¹ng 1 tr­íc ®ã. Khèi trÇm (d¹ng 3) (Silence Block) Víi môc ®Ých ®Ó gi¶m kÝch th­íc tæng cña d÷ liÖu, mét vµi ph©n ®o¹n cã thÓ ®­îc thay thÕ bëi c¸c khèi trÇm (silence blocks), biÓu thÞ mét qu·ng trÇm. D÷ liÖu cña khèi nµy chøa mét sè kÝch th­íc 2-byte biÓu thÞ sè c¸c mÉu cña qu·ng trÇm ®Ó sö dông vµ 1 byte chøa m· tÇn sè lÊy mÉu. Theo lý thuyÕt, ®iÒu nµy cho phÐp qu·ng trÇm sö dông mét tÇn sè lÊy mÉu kh¸c so víi ©m thanh. Nh­ng trong thùc tÕ, tÇn sè lÊy mÉu ®­îc sö dông ë ®©y nªn ®ång nhÊt víi tÇn sè lÊy mÉu cña ©m thanh tr­íc ®ã. Khèi ®¸nh dÊu (d¹ng 4) (Marker Block) D÷ liÖu cho khèi ®¸nh dÊu lµ mét sè kÝch th­íc 2-byte. Sè nµy cã thÓ ®­îc sö dông bëi c¸c øng dông multimedia cho viÖc ®ång bé c¸c sù kiÖn. VÝ dô, mét øng dông vÒ sù tr­ît cã thÓ thay ®æi sù hiÓn thÞ mçi lÇn nã thÊy khèi ®¸nh dÊu ®Ó qu¸ tr×nh tr­ît ¨n khíp víi qu¸ tr×nh biÓu diÔn ©m thanh. C¸c gi¸ trÞ trong kho¶ng 0 tíi 65,536 ®­îc b¶o l­u vµ kh«ng nªn ®­îc sö dông. Khèi v¨n b¶n (d¹ng 5) (Text Block) D÷ liÖu lµ mét x©u ký tù d¹ng null-terminated cña d÷ liÖu d¹ng ASCII. D¹ng nµy cã thÓ ®­îc sö dông ®Ó l­u tr÷ th«ng tin vÒ quyÒn t¸c gi¶ hay c¸c d÷ liÖu d¹ng v¨n b¶n kh¸c. Vßng lÆp (d¹ng 6 vµ 7) (Repeat Loops) C¸c khèi d¹ng 6 vµ 7 ®­îc sö dông ®Ó cµi ®Æt vßng lÆp trong mét tÖp Voc. Khèi d¹ng 6 ®­îc ®Æt t¹i phÇn ®Çu cña ph©n ®o¹n ®­îc lÆp, vµ khèi d¹ng 7 ®¸nh dÊu sù kÕt thóc cña vßng lÆp. D÷ liÖu cho dÊu hiÖu b¾t ®Çu bao gåm mét sè kÝch th­íc 2-byte chØ ®Þnh l­îng thêi gian thªm vµo mµ ph©n ®o¹n nµy nªn ®­îc lÆp (mét sè ®Õm 0 cã nghÜa lµ d÷ liÖu nªn chØ ®­îc ph¸t mét lÇn). Khèi kÕt thóc kh«ng cã d÷ liÖu. Khèi më réng (d¹ng 8) (Extension Block) Khèi më réng d¹ng 8 kh«ng cã trong c¸c phiªn b¶n tr­íc ®©y cña tÖp Voc. Nã ®· ®­îc thªm vµo ®Ó ®¸p øng cho c¸c tÖp ©m thanh d¹ng stereo. Khi xuÊt hiÖn, nã lu«n ë tr­íc khèi d÷ liÖu ©m thanh d¹ng 1, vµ nã ghi ®Ì lªn tÇn sè lÊy mÉu vµ th«ng tin nÐn trong khèi d÷ liÖu ©m thanh. Sau ®©y lµ cÊu tróc d÷ liÖu khèi më réng d¹ng 8: §é dµi M« t¶ 2 M· tÇn sè lÊy mÉu 1 M· ph­¬ng thøc nÐn 1 ChÕ ®é: 0 - mono; 1 - stereo D÷ liÖu trong khèi nµy sao chÐp ë møc ®é lín th«ng tin trong khèi d÷ liÖu ©m thanh. §Æc biÖt, m· tÇn sè lÊy mÉu lµ mét d¹ng cã ®é chÝnh x¸c cao h¬n so víi m· ho¸ ®­îc sö dông trong khèi d÷ liÖu, ngoµi ra m· ph­¬ng thøc nÐn lµ nh­ nhau. Th«ng tin duy nhÊt thùc sù míi lµ sè c¸c kªnh truyÒn. Víi d÷ liÖu ©m thanh d¹ng stereo, d÷ liÖu ©m thanh trong c¸c khèi d¹ng 1 vµ 2 sÏ lu©n phiªn c¸c mÉu tr¸i vµ ph¶i. Th«ng th­êng 2-byte m· ho¸ tÇn sè lÊy mÉu ®­îc tÝnh to¸n theo c«ng thøc 65,536 - 256(1,000,000/tÇn sè lÊy mÉu). Tuy nhiªn, cho c¸c ©m thanh d¹ng stereo, nªn gÊp ®«i tÇn sè lÊy mÉu tr­íc khi sö dông d¹ng nµy. Sù thay ®æi nµy dÉn ®Õn ch­¬ng tr×nh kh«ng hiÓu ®­îc phÇn cuèi më réng nµy trong khi ph¸t c¸c mÉu ®­îc chÌn vµo t¹i tÇn sè chñ yÕu giµnh cho ©m thanh. Cho sù t­¬ng thÝch vÒ sau, m· ho¸ tÇn sè lÊy mÉu trong khèi d÷ liÖu ©m thanh d¹ng 1 nªn th­êng xuyªn ®­îc thiÕt lËp cho byte bËc cao cña m· ho¸ tÇn sè lÊy mÉu nµy. Khèi më réng (d¹ng 9) (Extension Block) Gièng nh­ khèi më réng d¹ng 8, khèi d¹ng 9 ®· ®­îc giíi thiÖu ®Ó thªm vµo c¸c kh¶ n¨ng míi. §Æc biÖt, khèi d¹ng 9 ®¸p øng c¸c ph­¬ng thøc nÐn phô vµ l­u tr÷ th«ng tin vÒ d¹ng ©m thanh theo kiÓu trùc tiÕp h¬n. Khi xuÊt hiÖn, nã ë tr­íc khèi d¹ng 1 hay 8 vµ th«ng tin trong nã chÌn lªn th«ng tin trong c¸c khèi nµy. Khèi d¹ng 9 l­u tr÷ th«ng tin ©m thanh theo kiÓu mµ nã kh¸c xa so víi c¸c khèi d¹ng 1 hay 8. §Æc biÖt, tÇn sè lÊy mÉu ®­îc l­u tr÷ mét c¸ch trùc tiÕp h¬n so víi qu¸ tr×nh ®­îc m· ho¸. H¬n n÷a, tÇn sè lÊy mÉu kh«ng ®­îc ®iÒu chØnh cho sè c¸c kªnh truyÒn. Tr­êng sè bits cho mçi mÉu (bits-per-sample) sÏ x¾p xÕp tõ 2 (cho d÷ liÖu ®· ®­îc nÐn) tíi 16 (cho d÷ liÖu PCM d¹ng 16-bit). Cßn l¹i 4 bytes cuèi cïng ®­îc dµnh cho sù më réng sau ®ã. Cho sù t­¬ng thÝch vÒ sau, nÕu cã thÓ, nªn t¹o mét khèi d¹ng 8 theo sau c¸c khèi d¹ng 9. Tuy nhiªn, do khèi d¹ng 9 ®­a vµo mét lo¹t c¸c m· ho¸ ph­¬ng thøc nÐn míi nªn ®iÒu nµy kh«ng ph¶i th­êng xuyªn cã thÓ thùc hiÖn ®­îc. Sau ®©y lµ cÊu tróc d÷ liÖu cña khèi më réng d¹ng 9: §é dµi M« t¶ 4 TÇn sè lÊy mÉu 1 Sè bits dïng cho mçi mÉu 1 Sè kªnh truyÒn: 1- mono; 2 - stereo 2 M· ph­¬ng thøc nÐn 4 PhÇn më réng §äc tÖp Voc HiÖn nay, chØ khèi cã gi¸ trÞ trong kho¶ng tõ 0 tíi 9 lµ ®­îc ®Þnh danh. Do ®ã, nªn bá qua bÊt cø khèi kh«ng ®­îc nhËn d¹ng nµo. Khi ®äc c¸c khèi, cÇn thiÕt ph¶i quÐt qua c¸c khèi d÷ liÖu ®Çu tiªn ®Ó nhËn ®­îc c¸c tham sè cÇn thiÕt vÒ ®Þnh d¹ng d÷ liÖu. §iÒu nµy chØ cã nghÜa lµ qu¸ tr×nh ®äc c¸c khèi kÕ tiÕp cho tíi khi t×m thÊy mét khèi d÷ liÖu ©m thanh hay khèi kÕt thóc. Vµ do cã mét chuçi c¸c d¹ng khèi mµ chóng cã thÓ ®Þnh râ c¸c tham sè vÒ ©m thanh, nªn cÇn l­u l¹i c¸c gi¸ trÞ nµy ®Ó thiÕt lËp. Nãi chung, viÖc ®äc phÇn lín c¸c tÖp Voc mµ chóng chØ chøa d÷ liÖu PCM trë nªn ®¬n gi¶n h¬n so víi c¸c tÖp kh¸c chÌn thªm c¸c khèi trÇm (silence blocks), c¸c khèi kh«ng bÞ nÐn, vµ d÷ liÖu ©m thanh th«ng th­êng cÇn ®­îc gi¶i m·. §Ó thùc hiÖn viÖc ®äc nµy, cã thÓ quan s¸t d¹ng khèi hiÖn thêi vµ quyÕt ®Þnh, hoÆc bá qua nã (nÕu kh«ng chøa d÷ liÖu ©m thanh), ®iÒn ®Çy vµo bé nhí ®Öm c¸c mÉu 0 (®èi víi c¸c khèi trÇm), hay yªu cÇu d÷ liÖu tõ bé gi¶i nÐn. 1.3. Wave/ Riff §©y lµ d¹ng cña Microsoft Windows. C¸c tÖp Wave cña Windows øng dông cho c¶ 2 d¹ng tÖp ©m thanh næi (stereo) vµ d¹ng ®¬n (mono) víi mét tËp c¸c ®é ph©n gi¶i vµ tÇn sè lÊy mÉu. KiÓu tÖp nµy cho phÐp sù ®Þnh râ RIFF (Resource Information File Format), vµ cho phÐp th«ng tin phô cña ng­êi sö dông ®­îc nhóng vµo vµ ®­îc ghi cïng víi tÖp ©m thanh. D¹ng ©m thanh PCM dïng cho Windows chuÈn chøa d÷ liÖu ®· ®­îc m· ho¸, d÷ liÖu ®· ®­îc ®Þnh d¹ng theo kiÓu ®iÒu biÕn m· xung d¹ng kh«ng bÞ nÐn. Do d¹ng tÖp Wave lµ mét d¹ng ©m thanh tù nhiªn ®­îc Microsoft Windows sö dông, nªn nã trë thµnh mét trong c¸c d¹ng ©m thanh phæ biÕn nhÊt. Nãi chung, cÊu tróc cña nã ®­îc ph¸t triÓn dùa trªn d¹ng khëi ®Çu Interchange File Format (IFF) ®­îc Electronic Arts ph¸t triÓn cho viÖc sö dông trªn Amiga. IFF còng ®Þnh h×nh khu«n d¹ng c¬ së cña d¹ng ©m thanh Aiff cña Apple. TiÕp theo IFF, Microsoft ®Þnh nghÜa mét d¹ng tÖp chung ®­îc gäi lµ Resource Interchange File Format (RIFF). TÖp Riff ®­îc tæ chøc nh­ mét tËp c¸c khóc gµi vµo nhau. Vµ hai biÕn d¹ng chung lµ: tÖp Wave (hay Wav) l­u tr÷ ©m thanh; vµ tÖp AVI l­u tr÷ c¸c h×nh ¶nh video. §Æc tÝnh chung cña c¸c tÖp Riff vµ Iff Do tÖp Wave lµ mét d¹ng ®Æc biÖt cña tÖp Riff, nªn tr­íc hÕt ta nãi vÒ nh÷ng ®Æc tr­ng c¬ b¶n c¬ b¶n cña d¹ng RIFF. Trong ®ã ta chó t©m tíi c¸c biÕn thÓ IFF kh¸c, bao gåm Aiff vµ IFF/8SVX. Mét tÖp Riff bao gåm mét tËp hîp c¸c khóc xÕp chång. Mçi khóc chøa mét m· ®é dµi 4 ký tù (nh­ RIFF, fmt, hay LIST; c¸c m· ng¾n h¬n ®­îc chÌn thªm c¸c kho¶ng trèng). M· nµy chØ ®Þnh khu«n d¹ng cña khóc. VÝ dô, mét khóc fmt chøa c¸c th«ng tin vÒ khu«n d¹ng ©m thanh. TiÕp theo ®ã lµ d¹ng khóc víi mét gi¸ trÞ kÝch th­íc 4-byte, chØ ra kÝch th­íc cña d÷ liÖu ®­îc khóc ®ã mang theo. Tr­êng kÝch th­íc trong khóc RIFF Ýt h¬n kÝch th­íc tÖp tæng thÓ 8-bytes do kh«ng tÝnh ®Õn d¹ng khóc vµ kÝch th­íc. Mét vµi d¹ng khóc, nh­ c¸c khóc RIFF vµ LIST, ®­îc gäi lµ c¸c “container chunks” mµ chóng chøa ®ùng c¸c khóc kh¸c. D÷ liÖu cña "container chunk" b¾t ®Çu víi mét m· ®é dµi 4 ký tù chØ ra d¹ng cña d÷ liÖu chøa trong khóc ®ã. VÝ dô, khóc RIFF trong minh ho¹ trªn cã m· lµ WAVE, chØ ra r»ng nã chøa c¸c d÷ liÖu vÒ ©m thanh. C¸c tªn khóc bªn trong cã thÓ cã nghÜa kh¸c nhau, phô thuéc vµo c¸c container xung quanh. Do khóc fmt ®­îc chøa trong RIFF Wave container, nªn nã chØ ®Þnh khu«n d¹ng cña d÷ liÖu ©m thanh. Trong mét d¹ng container kh¸c, nã cã thÓ chøa c¸c th«ng tin kh¸c. CÊu tróc tæng qu¸t cña mét tÖp Wave §©y lµ khu«n d¹ng phæ biÕn nhÊt ®Ó l­u tr÷ ©m thanh sè trong thÕ giíi PC. Nã ®­îc thiÕt kÕ cho c¸c øng dông multimedia ch¹y d­íi Microsft Windows. TÖp Wav l­u gi÷ c¸c mÉu d¹ng sãng cña mét hoÆc nhiÒu kªnh theo c¸c tÇn sè lÊy mÉu. TÖp Wav tù m· ho¸ vµ m« t¶ d÷ liÖu cña nã trong phÇn mÒm mµ ta sö dông. Nã kh«ng giíi h¹n ®é dµi tÖp, cã thÓ lªn tíi 4GB. Mét tÖp Wave lµ mét d¹ng ®Æc biÖt cña tÖp Riff, vµ mäi tÖp Riff ®Òu b¾t ®Çu víi c¸c ký tù RIFF. TiÕp theo ®ã lµ 4-byte ®é dµi vµ m· ®Þnh d¹ng. TÖp Wav theo cÊu tróc RIFF (Microsoft’s Resouce Interchange File Format), nªn cÊu tróc gåm c¸c phÇn nhá gäi lµ khóc (chunk). Cã hai lo¹i khóc ®­îc dïng trong tÖp .Wav: khóc d÷ liÖu (data chunk), nh­ mét ®Þnh danh biÓu diÔn ®é dµi vµ b¶n th©n d÷ liÖu; vµ khóc ®Þnh d¹ng (format chunk) chøa c¸c d÷ liÖu m« t¶ th«ng tin trong nã. Khu«n d¹ng chung tÖp Wave nh­ sau: H×nh 3.1: Khu«n d¹ng tÖp Wave Do cã rÊt nhiÒu tÖp Wave cã cïng cÊu tróc c¬ së nµy, nªn nhiÒu ch­¬ng tr×nh xö lý c¸c tÖp Wave gièng nh­ chóng cã mét header Ên ®Þnh. §iÒu nµy t¹o thuËn lîi cho viÖc viÕt c¸c tÖp Wave dµi nh­ khi chØ viÕt c¸c d÷ liÖu PCM vµ thiÕt lËp mét c¸ch thÝch ®¸ng c¸c tr­êng kÝch th­íc. Sau ®©y lµ m« t¶ d¹ng tÖp Wave c¬ b¶n: KÝch th­íc M« t¶ 4 D¹ng khóc: RIFF 4 KÝch th­íc tÖp tæng thÓ trõ 8 4 D¹ng RIFF container: WAVE 4 D¹ng khóc: fmt 4 §é dµi d÷ liÖu khóc ®Þnh d¹ng: th«ng th­êng lµ 16 16 D÷ liÖu khóc ®Þnh d¹ng 4 D¹ng khóc: data 4 §é dµi d÷ liÖu ©m thanh n D÷ liÖu ©m thanh TÖp Wave cã thÓ cã c¸c khóc kh¸c trong chóng. §Æc biÖt, khóc d÷ liÖu ®¬n ®«i khi ®­îc thay thÕ b»ng bëi mét LIST container mµ nã chøa c¸c khóc slnt (chØ ra c¸c qu·ng trÇm) vµ c¸c khóc d÷ liÖu víi c¸c d÷ liÖu ©m thanh. §äc tÖp Wave Trong d¹ng IFF gèc, cÇn thÊy râ r»ng c¸c khóc kh¸c nhau cã thÓ xuÊt hiÖn theo bÊt cø thø tù nµo. V× vËy, rÊt cã thÓ mét vµi d¹ng tÖp Wave cã thÓ cã khóc d÷ liÖu ©m thanh tr­íc khóc ®Þnh d¹ng. Vµ, sù thÓ hiÖn cña bÊt kú khóc nµo ®Òu phô thuéc vµo c¶ d¹ng cña khóc vµ d¹ng cña container kÌm theo. Nguyªn t¾c chung cña RIFF vµ c¸c d¹ng t­¬ng tù lµ nªn bá qua bÊt cø khóc nµo mµ ta kh«ng thÓ nhËn d¹ng ®­îc. Mét c¸ch ®Ó truy cËp nh÷ng tÖp nh­ vËy lµ ®äc l­ít toµn bé tÖp vµ t¹o ra mét sù ¸nh x¹ trong bé nhí víi sù ®Þnh vÞ vµ d¹ng cña mçi khóc. Sau ®ã, cã thÓ ®Þnh vÞ c¸c khóc mét c¸ch riªng biÖt tuú theo yªu cÇu. Tuy nhiªn, sù tiÕp cËn nµy, mÆc dï chi tiÕt, nh­ng l¹i cã mét trë ng¹i lín: nã yªu cÇu ph¶i cã sù hiÖu lùc toµn bé tÖp ngay lËp tøc. §Æc biÖt, nÕu ta quan t©m tíi qu¸ tr×nh truyÒn mét tÖp Wave qua m¹ng vµ qu¸ tr×nh ph¸t nã gièng nh­ d÷ liÖu ®­îc nhËn, ta cã thÓ bá qua toµn bé tÖp vµ ®Þnh vÞ c¸c khóc tr­íc khi ta b¾t ®Çu ph¸t. Ngoµi ra, cã mét c¸ch tiÕp cËn kh¸c, thay vµo viÖc ¸nh x¹ sù ®Þnh vÞ cho mçi khóc, ta cã thÓ ®äc tÖp tõ phÇn ®Çu cho tíi cuèi vµ xö lý c¸c khèi ngay trong qu¸ tr×nh ®äc. Vµ, trong c¸c tÖp Riff (nh­ trong mäi d¹ng IFF-derived file), mçi khóc chiÕm gi÷ mét sè bytes trong tÖp. NÕu kÝch th­íc cña khóc hiÖn thêi lµ lÎ, th× sÏ cã mét byte phô cña phÇn thªm vµo cÇn ®­îc bá qua. Vµ cã thÓ, khóc mµ chóng ta võa xo¸ l¹i lµ khóc cuèi cïng cña container cña nã. Do ®ã, nÕu bÊt cø container cßn l¹i Ýt h¬n 8-bytes th× cÇn ph¶i ®­îc kÕt thóc bëi v× mét header cña khóc yªu cÇu Ýt nhÊt 8 bytes. Khóc fmt Khóc fmt chøa th«ng tin ®Þnh d¹ng ©m thanh hiÖn thêi. Nh÷ng néi dung chÝnh x¸c cña sù thay ®æi khóc fmt phô thuéc vµo ph­¬ng thøc nÐn. B¶ng sau chØ ra khu«n d¹ng khóc fmt sö dông cho d÷ liÖu PCM. KÝch th­íc M« t¶ 2 M· ph­¬ng thøc nÐn 2 Sè kªnh truyÒn 4 Sè mÉu trong mçi gi©y 4 Sè bytes trung b×nh trong mçi gi©y 2 Block alignement 2 Sè bits cho mçi mÉu 2 Sè bytes cña th«ng tin thªm vµo n Th«ng tin vÒ bé nÐn phô M· ho¸ d÷ liÖu GÇn 100 bé m· vÒ ph­¬ng thøc nÐn ®· ®­îc ®¨ng ký víi Microsoft cho viÖc sö dông trong c¸c tÖp Wave. TÖp Wave cã thÓ sö dông c¸c ph­¬ng thøc nÐn m-Law hay A-Law. Sau ®©y lµ mét vµi khu«n d¹ng: M· ho¸ M« t¶ 0 Kh«ng nhËn d¹ng ®­îc 1 PCM 2 Microsoft ADPCM 6 ITU G.711 A-Law 7 ITU G.711 m-Law 17 IMA ADPCM 20 ITU G.723 ADPCM 49 GSM 6.10 64 ITU G.721 ADPCM 80 MPEG 65535 Experiment Tuy nhiªn, tèt nhÊt nªn sö dông c¸c b¶n tin d¹ng v¨n b¶n h¬n lµ mét sè m· ho¸. Nªn ®«i khi mét ph­¬ng thøc nÐn tèi ­u hay phæ biÕn còng kh«ng nªn sö dông (vÝ dô nh­ ph­¬ng thøc nÐn MS ADPCM). Khóc d÷ liÖu Khóc d÷ liÖu (Data chunk) cña d¹ng Wav theo chuÈn mÉu RIFF. Bèn byte ®Çu x¸c ®Þnh khóc d÷ liÖu víi c¸c ký tù “data” trong m· ASCII. Theo sau lµ bèn byte biÓu diÔn ®é dµi d÷ liÖu. Cuèi cïng lµ c¸c d÷ liÖu ®­îc m· ho¸ trong mét sè byte cho tr­íc. C¸c khóc v¨n b¶n Sù thay ®æi cña c¸c khóc t¹o ra sù sinh ®éng d¹ng v¨n b¶n. C¸c khóc nµy cã thÓ xuÊt hiÖn trong bÊt cø d¹ng tÖp Riff nµo, chø kh«ng ph¶i chØ trong c¸c tÖp Wave. Tªn cña chóng ®Òu b¾t ®Çu víi mét ch÷ "I" ®Ó chØ ra r»ng chóng ®­îc dïng cho viÖc l­u tr÷ th«ng tin. 1.4. Aiff/ Aiff-C/ Aif/ Snd §©y lµ d¹ng tÖp ©m thanh chuÈn cña Apple. Gièng nh­ c¸c d¹ng tÖp Aiff vµ Wave cña Windows øng dông c¸c ©m thanh næi vµ ®¬n, 16-bit hoÆc 8-bit, vµ ph¹m vi réng cña tÇn sè mÉu. Vµ d¹ng tÖp nµy (gièng nh­ d¹ng Wave cña Windows) cã thÓ chøa bÊt cø mét trong c¸c d¹ng d÷ liÖu. D¹ng Aiff lµ mét sù lùa chän tèt cho sù t­¬ng thÝch víi PC/Mac. Khi truyÒn sang Mac, ta cã thÓ thªm 4 m· ký tù “AIFF” vµo trong phÇn gèc cña tÖp ®Ó thõa nhËn nã (Macintosh ®Þnh danh tÖp qua c¸c tµi nguyªn cña nã, mµ nã ®­îc gì ra khi tÖp ®­îc më trªn m¸y PC). Tuy nhiªn, rÊt nhiÒu c¸c øng dông cña Mac mµ chóng ®¸p øng Aiff cã thÓ thõa nhËn c¸c d÷ liÖu PCM mµ kh«ng cÇn c¸c ®Þnh danh nµy. Apple chÊp nhËn d¹ng IFF cña Electronic Arts cho viÖc sö dông trªn c¸c m¸y Macintosh nh­ng lµm mét chót thay ®æi b»ng c¸ch t¹o ra mét d¹ng tÖp t­¬ng tù víi tªn Audio Interchange File Format (AIFF). D¹ng gèc Aiff kh«ng ®¸p øng cho c¸c ©m thanh ®· ®­îc nÐn, nªn mét d¹ng biÕn thÓ kh¸c - Audio Interchange File Format Extension for Compression (AIFF-C hay AIFC) - ®· ®­îc ph¸t triÓn. C¸c tÖp Aiff vµ Aiff-C nãi chung lµ ®ång nhÊt. CÊu tróc cña mét tÖp Aiff còng gièng nh­ tÖp Riff. Tuy nhiªn, c¸c tÖp Aiff l­u tr÷ mét sè nhiÒu bytes trong d¹ng MSB vµ sö dông c¸c tªn khóc kh¸c nhau. Mäi tÖp Aiff ®Òu bao gåm mét khóc FORM ®¬n vµ t¹i vÞ trÝ ngoµi cïng nhÊt. C¸c d¹ng Aiff hay AIFC cã thÓ chøa mét sè hay tÊt c¶ c¸c khóc. Trong ®ã c¸c khóc quan träng nhÊt lµ COMM vµ SSND, mµ chóng ®­îc thÓ hiÖn trong mäi tÖp Aiff hay AIFF-C, vµ khóc FVER cã trong mäi tÖp AIFF-C. Sau ®©y lµ b¶ng c¸c khóc trong AIFF: D¹ng khóc M« t¶ FVER Phiªn b¶n cña tÖp AIFF-C COMM Th«ng tin vÒ khu«n d¹ng l­u tr÷ th«ng tin SSND D÷ liÖu ©m thanh MARK Marker COMT Chó thÝch MIDI D÷ liÖu MIDI AESD Th«ng tin qu¸ tr×nh thu thanh APPL Khóc øng dông riªng biÖt NAME Tªn AUTH T¸c gi¶ (c) Th«ng tin vÒ quyÒn t¸c gi¶ ANNO PhÇn chó thÝch MÆc dï Aiff vµ Aiff-C hÇu nh­ lµ ®ång nhÊt, nh­ng d¹ng Aiff-C vÉn tån t¹i. Trong c¸c tÖp AIFF, còng nh­ phÇn lín c¸c biÕn thÓ IFF, bé ®äc bá qua bÊt cø d÷ liÖu nµo mµ nã kh«ng ®­îc nhËn d¹ng. §Æc biÖt, nÕu ta thªm vµo c¸c d¹ng khóc míi hay th«ng tin míi vµo phÇn cuèi cña mét lo¹i khóc ®ang tån t¹i, th× d÷ liÖu míi ®ã sÏ bÞ bá qua bëi mét bé ®äc cò h¬n. D¹ng gèc Aiff kh«ng chØ ®Þnh râ ph­¬ng thøc nÐn. Theo c¸ch ®ã, ta sÏ ph¶i thªm vµo mét d¹ng khóc míi hay më réng khóc COMM ®ang tån t¹i (mµ nã chøa th«ng tin vÒ khu«n d¹ng ©m thanh). Trong tr­êng hîp kh¸c, c¸c bé ®äc cò h¬n sÏ bá qua th«ng tin nµy vµ cè g¾ng ph¸t d÷ liÖu ©m thanh mµ kh«ng cã bé gi¶i nÐn phï hîp. §Ó tr¸nh ®iÒu nµy, Apple ®· ®­a ra mét d¹ng "container" míi, FORM/AIFC. Tõ khi cã d¹ng "container" kh¸c nµy, c¸c bé ph¸t cò h¬n mµ chóng quan t©m tíi FORM/AIFC sÏ kh«ng thÓ ph¸t ®­îc tÖp. Cã Ýt c¸c bé ph¸t h¬n mµ chóng cã thÓ hiÓu ®­îc c¶ hai d¹ng "container" sÏ biÕt t×m kiÕm cho m· ph­¬ng thøc nÐn ®­îc thªm vµo cho khóc COMM, vµ kÕt qu¶ lµ cã thÓ xö lý c¶ 2 d¹ng "container" hÇu nh­ lµ t­¬ng tù nhau. §Ó kh¾c phôc ®iÒu nµy, ng­êi ta ®· thªm vµo mét khóc FVER ®Ó t¹o sù râ rµng. Khóc nµy chøa bé m· dùa trªn ngµy cña sù chØ ®Þnh cã liªn quan. NÕu bé ®äc tÖp kh«ng nhËn d¹ng ®­îc bé m· nµy, th× nã kh«ng nªn ph¸t tÖp ®ã bëi v× d÷ liÖu míi ph¶i ®­îc hiÓu râ ®Ó ph¸t tÖp nµy. Tèt nhÊt nªn thay ®æi bé m· FVER mét c¸ch ngÉu nhiªn. §äc c¸c tÖp Aiff C¸c tÖp Aiff ®Òu lµ c¸c tÖp IFF, vµ mçi tÖp Aiff ®Òu b¾t ®Çu víi 4 ký tù FORM. TiÕp theo ®ã lµ mét ®é dµi 4-byte vµ mét m· lo¹i. Trong c¸c d¹ng gèc IFF, c¸c khóc cã thÓ xuÊt hiÖn theo bÊt cø thø tù nµo. V× vËy, cã thÓ cã mét vµi tÖp Aiff cã khóc d÷ liÖu ©m thanh tr­íc khóc ®Þnh d¹ng mµ nã chØ ®Þnh râ c¸ch d÷ liÖu ®­îc l­u tr÷. Do ®ã, còng gièng nh­ tÖp Wave, ta cã thÓ ®äc l­ít toµn bé tÖp ®Ó t¹o mét ¸nh x¹ c¸c ®Þnh vÞ hoÆc xö lý c¸c khóc ngay trong qu¸ tr×nh ®äc. FORM Aiff Container Mét tÖp Aiff chøa mét FORM container ®¬n, mµ container ®ã chøa mäi khóc kh¸c trong tÖp. H¬n n÷a, rÊt dÔ ®Ó cã thÓ ®iÒu khiÓn khóc FORM. ChØ cÇn ®¸nh dÊu nã nh­ mét container vµ ®äc theo d¹ng container. Khóc COMM Khóc COMM l­u tr÷ th«ng tin vÒ khu«n d¹ng ©m thanh. PhÇn lín c¸c khu«n d¹ng ©m thanh l­u tr÷ c¸c gi¸ trÞ nh­ tÇn sè lÊy mÉu nh­ c¸c sè nguyªn. Nªn ®Ó t¨ng ®é chÝnh x¸c, Apple sö dông d¹ng dÊu phÈy ®éng. §iÒu nµy t¹o c¶m gi¸c cho c¸c øng dông cã ®é chÝnh x¸c cao nh­ s¶n phÈm vÒ phim ¶nh hay video, nh­ng nã còng lµm t¨ng ®é phøc t¹p khi ®äc vµ viÕt ®Þnh d¹ng. Apple sö dông khu«n d¹ng chÝnh x¸c lµ d¹ng dÊu phÈy ®éng 80-bit. Trong ®ã, 16-bit ®Çu tiªn ®­îc sö dông cho mét bit ký hiÖu (sign bit) vµ mét thµnh phÇn c¬ sè 2 kÝch th­íc 15-bit (15-bit base-2 exponent). V× vËy, ta cã thÓ hoµn toµn yªn t©m khi bá qua Ýt nhÊt 32 bits thÓ hiÖn vµ chØ sö dông sù chuyÓn ®æi sè nguyªn nhanh chãng nµy. Nh÷ng néi dung chÝnh x¸c cña sù biÕn ®æi khóc COMM phô thuéc vµo ph­¬ng thøc nÐn. Sau ®©y lµ khu«n d¹ng ®­îc sö dông cho d÷ liÖu PCM hoµn chØnh. C¸c kü thuËt nÐn kh¸c më réng d¹ng nµy víi c¸c th«ng tin phô. C¸c tÖp Aiff-C ®¸p øng ph­¬ng thøc nÐn m-Law. Néi dung cña khóc COMM: KÝch th­íc M« t¶ 2 Sè kªnh truyÒn 4 Tæng sè c¸c khung mÉu 2 Sè bits trªn mçi mÉu 10 Sè khung mÉu trong 1 gi©y (sè dÊu phÈy ®éng 80-bit IEEE) 4 M· ph­¬ng thøc nÐn n Tªn ph­¬ng thøc nÐn Qua phÇn mÒm hÖ thèng cña Apple, c¸c bé m· m· ho¸ 4-byte ®­îc sö dông ®Ó ®Þnh danh c¸c d¹ng d÷ liÖu vµ c¸c th«ng tin quan träng kh¸c. Trong tr­êng hîp AIFF-C, c¸c bé m· nµy ®Þnh danh ph­¬ng thøc nÐn. PhÇn mÒm Multimedia cña Macintosh cã thÓ dß t×m mét m· ©m thanh (sound codec) dùa trªn 4-byte m· nµy, cho phÐp "codecs" ®­îc cµi ®Æt mét c¸ch chñ ®éng. Ngoµi ra, tªn ph­¬ng thøc nÐn cã thÓ ®­îc thay ®æi tuú theo c¸c qu¸ tr×nh viÕt ch­¬ng tr×nh. Sau ®©y lµ mét sè bé m· ho¸ khu«n d¹ng AIFF-C: M· ho¸ M« t¶ NONE PCM ACE2 Ph­¬ng thøc nÐn ACE 2:1 ACE8 Ph­¬ng thøc nÐn ACE 8:3 MAC3 Ph­¬ng thøc nÐn MACE 3:1 MAC6 Ph­¬ng thøc nÐn MACE 6:1 ulaw ITU G.711 m-Law ima4 IMA ADPCM D÷ liÖu PCM Mét tÖp ®­îc viÕt víi d÷ liÖu ©m thanh PCM nªn ®­îc viÕt nh­ mét tÖp Aiff (chø kh«ng ph¶i d¹ng AIFC) cho sù t­¬ng thÝch vÒ sau. PhÇn lín c¸c tÖp AIFF/AIFC ®­îc l­u tr÷ theo c¸ch nµy. C¸c mÉu PCM ®­îc l­u tr÷ theo khu«n d¹ng "signed"; c¸c mÉu multi-byte ®­îc l­u tr÷ MSB ®Çu tiªn. Khóc SSND Khóc SSND l­u tr÷ d÷ liÖu ©m thanh ®­îc nÐn hiÖn thêi. Nã b¾t ®Çu víi 8-byte th«ng tin mµ chóng th­êng xuyªn kh«ng ®­îc sö dông. ChÝnh v× vËy, ph­¬ng thøc ®äc c¸c bytes lµ rÊt quan träng. 1.5. IFF/8 SVX D¹ng Amiga 8SVX lµ mét d¹ng ®¬n 8-bit tõ c¸c m¸y tÝnh Commodore Amiga, mµ nã cã thÓ ®­îc nÐn theo d¹ng m· ho¸ 4-bit Fibonacci delta, vµ cã nhiÒu tÇn sè lÊy mÉu kh¸c nhau. ý t­ëng c¬ b¶n cña c¸c d¹ng tÖp xen kÏ ®· ®­îc Electronic Arts ph¸t triÓn cho viÖc sö dông trªn Commodore Amiga. Hä ph¸t triÓn mét d¹ng tÖp phøc t¹p gäi lµ IFF (Interchange File Format) cho viÖc l­u tr÷ mét chuçi c¸c d¹ng d÷ liÖu. C¸c tÖp IFF cã thÓ chøa mét h×nh ¶nh ®¬n gi¶n, v¨n b¶n ®· ®Þnh d¹ng, ho¹t ¶nh, hay bÊt cø tæ hîp nµo cña c¸c d¹ng d÷ liÖu. Nh÷ng nhµ ph¸t triÓn rÊt tù do trong viÖc t¹o ra c¸c lo¹i khóc míi ®Ó l­u tr÷ c¸c d¹ng d÷ liÖu riªng cña hä. CÊu tróc cña mét tÖp IFF còng gièng nh­ c¸c tÖp Riff hay Aiff. Tuy nhiªn c¸c tÖp IFF l­u tr÷ mét sè nhiÒu bytes trong d¹ng MSB, vµ cã c¸c tªn khóc kh¸c nhau. MÆc dï, ngµy nay, IFF kh«ng ®­îc sö dông th­êng xuyªn, nh­ng nã lµ d¹ng gèc cña d¹ng RIFF vµ AIFF. RÊt nhiÒu trong sè c¸c tµi liÖu vÒ IFF gèc vÉn cßn cã thÓ øng dông ®­îc cho 3 khu«n d¹ng nµy. Th«ng th­êng, mét tÖp IFF bao gåm mét khóc FORM ®¬n gi¶n, khóc chØ ra khu«n d¹ng cña d÷ liÖu trong tÖp. Khóc ngoµi cïng nhÊt lµ khóc CAT hay LIST víi mét chuçi c¸c khóc FORM lång vµo nhau. §Þnh danh c¸c tÖp IFF/8SVX ChØ xÐt tíi c¸c tÖp cã mét FORM container ngoµi cïng ®¬n gi¶n víi d¹ng 8SVX (viÕt t¾t cña “8-bit sampled voice”). Cã nhiÒu c¸ch kh¸c trong viÖc cÊu tróc c¸c tÖp IFF, tuy nhiªn, hiÕm khi chóng ®­îc sö dông. IFF lµ khu«n d¹ng ©m thanh chung nhÊt cña Amiga gåm cã mét FORM container víi d¹ng 8SVX. §iÒu nµy th­êng xuyªn ®­îc tham chiÕu tíi nh­ IFF/8SVX. D¹ng 8SVX ®· ®­îc thiÕt kÕ cho viÖc ®iÒu khiÓn c¸c nh¹c cô ©m nh¹c ®· ®­îc sè ho¸. D¹ng 8SVX cã thÓ chøa mét chuçi c¸c khóc. Sau ®©y lµ mét vµi trong sè ®ã: Tªn M« t¶ VHDR Th«ng tin vÒ khu«n d¹ng ©m thanh NAME Tªn cña ©m thanh (c) Th«ng tin vÒ quyÒn t¸c gi¶ AUTH T¸c gi¶ ANNO PhÇn chó thÝch BODY D÷ liÖu ©m thanh ATAK Attack RLSE Release §äc tÖp IFF Theo lý thuyÕt, c¸c khóc trong mét container ®­îc ®­a ®Õn cã thÓ xuÊt hiÖn theo hÇu hÕt bÊt cø thø tù nµo. §iÒu nµy t¹o nªn sù phøc t¹p khi ®äc mét tÖp IFF tuú ý. Nãi chung, ta cÇn ®äc c¸c th«ng tin vÒ ®Þnh d¹ng d÷ liÖu (khóc VHDR) tr­íc khi ®äc c¸c d÷ liÖu ©m thanh (khóc BODY). Tuy nhiªn, trong thùc tÕ ta th­êng viÕt th«ng tin vÒ ®Þnh d¹ng d÷ liÖu (khóc VHDR) tr­íc d÷ liÖu ©m thanh (khóc BODY). Do ®ã, chØ cÇn ®äc trùc tiÕp tÖp vµ xö lý c¸c khóc ngay trong qu¸ tr×nh ®äc. Khóc FORM Mét tÖp IFF chøa mét FORM container ®¬n, mµ nã chøa mäi khóc kh¸c trong tÖp, vµ khóc ngoµi cïng nhÊt lu«n lµ khóc FORM. Vµ ®Ó xö lý khóc FORM chØ cÇn ®¸nh dÊu nã nh­ mét container vµ sau ®ã xö lý theo d¹ng container. Khóc VHDR Khóc VHDR chøa c¸c th«ng tin c¬ b¶n vÒ khu«n d¹ng cña d÷ liÖu ©m thanh. Th«ng th­êng, IFF/8SVX ®­îc thiÕt kÕ nh­ mét khu«n d¹ng vÒ nh¹c cô cho b¶n nh¹c trong qu¸ tr×nh ph¸t. Mét tÖp IFF/8SVX ®¬n chøa qu¸ tr×nh thu thanh cña mét nh¹c cô ®¬n. Khu«n d¹ng cña khóc VHDR: KÝch th­íc M« t¶ 4 C¸c mÉu "one-shot" cho nèt nh¹c cao nhÊt 4 LÆp l¹i c¸c mÉu cho nèt nh¹c cao nhÊt 4 C¸c mÉu trong mçi chu kú cho nèt nh¹c cao nhÊt 2 C¸c mÉu trong mçi gi©y 1 Octaves trong khóc BODY 1 Ph­¬ng thøc m· ho¸ (0: PCM, 1: m· ho¸ d¹ng Fibonacci, 2: m· ho¸ d¹ng Exponential) 4 ¢m l­îng (65,536= møc ©m l­îng cao nhÊt) Mét ©m thanh IFF/8SVX bao gåm mét ph©n ®o¹n "one-shot" khëi ®Çu vµ tiÕp theo lµ ph©n ®o¹n "repeat". Khi ®­îc ph¸t nh­ mét nh¹c cô, ph©n ®o¹n lÆp cã thÓ ®­îc lÆp cho tíi cuèi nèt nh¹c. Khi IFF/8SVX ®­îc sö dông cho mét qu¸ tr×nh thu thanh ®¬n gi¶n, thËm chÝ nh­ mét nh¹c cô, ®é dµi ph©n ®o¹n lÆp ®­îc thiÕt lËp vÒ 0. Qu¸ tr×nh ph¸t mét nh¹c cô sè yªu cÇu biÕn ®æi ©m thanh ®Ó t¹o ra c¸c nèt nh¹c kh¸c nhau. Víi IFF/8SVX, cã 2 kü thuËt ®­îc sö dông. C«ng cô c¬ b¶n lµ ph¸t ©m thanh theo c¸c tÇn sè (speed) kh¸c nhau. NÕu ta biÕt c­êng ®é (pitch) cña nèt nh¹c ®· thu thanh vµ c­êng ®é cña nèt nh¹c mµ ta mong muèn, ta cã thÓ ®iÒu chØnh tÇn sè ph¸t l¹i ®Ó cã thÓ ®¹t ®­îc bÊt cø c­êng ®é mong muèn nµo. C¸c tÖp IFF/8SVX cho phÐp l­u tr÷ mét chuçi c¸c qu¸ tr×nh thu thanh cña cïng mét nh¹c cô t¹i c¸c c­êng ®é kh¸c nhau nªn ta cã thÓ chän qu¸ tr×nh thu thanh gÇn nhÊt víi c­êng ®é mong muèn, gi¶m tèi ®a sai sè. Tr­êng thø 3 trong b¶ng trªn lµ c­êng ®é cña nèt nh¹c thu thanh cao nhÊt. Khóc BODY l­u tr÷ c¸c nèt nh¹c ®· ®­îc thu thanh theo kiÓu kÕ tiÕp (nèt nµy tiÕp theo nèt kh¸c) mµ b¾t ®Çu lµ nèt cã c­êng ®é cao nhÊt. Mçi nèt kÕ tiÕp lµ mét qu·ng 8 (octave) thÊp h¬n vÒ c­êng ®é so víi nèt kÕ tr­íc vµ ®­îc thu thanh t¹i tÇn sè lÊy mÉu kh¸c. Ngoµi ra, tr­êng thø 4 (sè mÉu trong mçi gi©y) ®­îc bá qua ®èi víi c¸c qu¸ tr×nh thu thanh nh¹c cô bëi v× th«ng tin vÒ c­êng ®é ®­îc lÊy ra. Víi c¸c ©m thanh thu thanh ®¬n gi¶n, th«ng tin trong VHDR lµ kh«ng cÇn hay kh«ng ®­îc sö dông. Trong tr­êng hîp nµy, sè vßng lÆp c¸c mÉu, c¸c mÉu trong mçi chu kú, vµ c¸c tr­êng octave ®­îc thiÕt lËp vÒ 0. C¸c tÖp IFF/8SVX lu«n lµ d¹ng mono. §Ó lùa chän bé gi¶i m·, cÇn ®¶m b¶o r»ng khóc VHDR ®· ®­îc ®äc, sau ®ã sö dông m· d¹ng nµy. H¬n n÷a, phÇn lín c¸c tÖp IFF/8SVX sö dông d÷ liÖu ©m thanh d¹ng PCM 8-bit. Khóc BODY Khóc BODY l­u tr÷ d÷ liÖu ©m thanh ®· ®­îc nÐn hiÖn thêi. C¸c d÷ liÖu ©m thanh ®­îc ®äc tõ khóc nµy. C¸c khóc v¨n b¶n Mét lo¹t c¸c khóc cÇn tíi c¸c phÇn chó thÝch d¹ng v¨n b¶n. C¸c khóc nµy cã thÓ xuÊt hiÖn trong bÊt cø d¹ng tÖp IFF nµo (bao gåm c¶ Aiff vµ Aiff-C). Mäi khóc nµy cã cïng mét khu«n d¹ng c¬ b¶n; chóng chøa mét chuçi ký tù ASCII. DÞch phÇn V: music File Formats Trong s¸ch: A Programmer's Guide To Sound Addison - Wesley / 1998, Tim Kientzle 1.6. MIDI MÆc dï cã thÓ l­u tr÷ mét bµi h¸t nh­ d¹ng thu thanh Wave hay Au, nh­ng cã 2 lý do chÝnh cho viÖc ph¶i cã c¸c khu«n d¹ng ©m nh¹c riªng biÖt. Tr­íc hÕt ®ã lµ kÝch th­íc. ViÖc l­u tr÷ mét dÉy c¸c nèt nh¹c sÏ tiÖn lîi h¬n cho qu¸ tr×nh ph¸t so víi viÖc l­u tr÷ qu¸ tr×nh thu thanh toµn bé bµi h¸t. Lý do thø hai lµ rÊt dÔ dµng trong viÖc thay ®æi. NÕu ta cã mét qu¸ tr×nh thu thanh buæi hoµ ©m, rÊt khã kh¨n trong viÖc t¸ch biÖt vµ thay ®æi mét nh¹c cô ®¬n, nh­ng nÕu ®­îc l­u tr÷ d­íi d¹ng mét dÉy c¸c nèt nh¹c th× ta sÏ dÔ dµng so¹n th¶o nã. C¸c tÖp MIDI chuÈn Mét tÖp MIDI lµ mét chuçi c¸c khóc. C¸c khóc nµy cã cïng mét khu«n d¹ng chung gièng nh­ c¸c khóc ®­îc sö dông trong c¸c tÖp Aiff, Iff, vµ Wave. Mçi khóc cã 4 ký tù ph©n lo¹i, mét m· ®é dµi kÝch th­íc 4-byte (trong khu«n d¹ng MSB), vµ mét vµi d÷ liÖu. Tuy nhiªn, kh¸c víi c¸c khu«n d¹ng kh¸c, c¸c khóc MIDI kh«ng xÕp chång. HiÖn nay, chØ cã 2 lo¹i khóc. Khóc MThd chøa th«ng tin vÒ header nãi chung; vµ khóc MTrk chøa mét r·nh ®¬n. Khóc MThd xuÊt hiÖn t¹i phÇn ®Çu cña mäi tÖp MIDI, vµ ®©y lµ dÊu hiÖu ®Ó ®Þnh danh mét tÖp MIDI chuÈn. Khóc MIDI Header Khóc MThd chøa mét chót c¸c sù kiÖn c¬ së vÒ tÖp MIDI. Mäi gi¸ trÞ nµy ®­îc l­u tr÷ trong khu«n d¹ng MSB. Sau ®©y lµ néi dung cña khóc MIDI MThd: Bytes M« t¶ 2 D¹ng tÖp 2 Sè c¸c r·nh 2 Khu«n d¹ng thêi gian Cã 3 lo¹i tÖp MIDI, chóng ®­îc ph©n lo¹i tuú theo c¸ch xö lý c¸c r·nh: TÖp d¹ng 0 chØ chøa duy nhÊt mét r·nh. Mét c¸ch râ rµng, ®©y lµ tÖp dÔ nhÊt ®Ó cã thÓ ph¸t, nªn ®©y lµ d¹ng th«ng dông cho c¸c tÖp qu¶ng c¸o. TÖp d¹ng 1 chøa rÊt nhiÒu r·nh mµ chóng ®­îc ph¸t mét c¸ch ®ång thêi. Mét ch­¬ng tr×nh dïng ®Ó ph¸t c¸c tÖp d¹ng 1 ph¶i b»ng c¸ch nµo ®ã san ph¼ng d÷ liÖu thµnh c¸c dßng sù kiÖn ®¬n tr­íc khi ph¸t. TÖp d¹ng 2 chøa nhiÒu r·nh nh­ng kh«ng thõa nhËn bÊt cø sù liªn hÖ nµo gi÷a c¸c r·nh. Nãi chung, c¸c tÖp d¹ng 2 lµ kh«ng phæ biÕn. C¸c r·nh MIDI Chó ý r»ng mét r·nh lµ kh¸c so víi mét kªnh MIDI. MÆc dï ®©y lµ d¹ng chung cho c¸c tÖp multi-track ®Ó cã thÓ ph¸t mçi r·nh trªn mét kªnh kh¸c nhau, vµ trong qu¸ tr×nh tæ hîp mét b¶n nh¹c cã thÓ sö dông sè c¸c r·nh tuú ý ®Ó cã thÓ ph¸t c¸c r·nh trªn c¸c kªnh kh¸c nhau theo bÊt cø kiÓu mÉu nµo. Mçi r·nh MIDI lµ mét danh s¸ch c¸c sù kiÖn, mµ mçi sù kiÖn cã mét “delta time” ®Æt tr­íc. Mçi khóc trong mét tÖp MIDI cã mét ®é dµi ®· ®­îc Ên ®Þnh, nªn cÇn thËn träng khi r·nh ho¸ sè c¸c bytes ®­îc ®äc ®Ó ta cã thÓ biÕt khi nµo d÷ liÖu r·nh kÕt thóc. NÕu ®©y kh«ng ph¶i r·nh ®Çu tiªn, th× cÇn ph¶i ®¶m b¶o r»ng c¸c sù kiÖn míi ®· hoµn toµn ®­îc chÌn vµo trong bé nhí danh s¸ch c¸c sù kiÖn. Gièng nh­ bÊt kú danh s¸ch m· chÌn nµo, qu¸ tr×nh chÌn mét sù kiÖn MIDI yªu cÇu hai tr­êng hîp sau: mét, nÕu sù kiÖn vµo phÇn ®Çu cña danh s¸ch (trong tr­êng hîp nµy cÇn ph¶i cËp nhËt ®Çu ®äc danh s¸ch); hai, nÕu sù kiÖn vµo gi÷a danh s¸ch (trong tr­êng hîp nµy mét container trá kh¸c nhËn sù cËp nhËt). §iÒu nµy lµm t¨ng sù phøc t¹p bëi sù cÇn thiÕt chÌn nã vµo t¹i vÞ trÝ t¹m thêi chÝnh x¸c vµ ®iÒu chØnh c¸c ®é trÔ mét c¸ch thÝch hîp. Ngoµi ra, ®Ó duy tr× kh«ng gian, c¸c tÖp MIDI sö dông c¸c sè nguyªn biÕn ®é dµi ®Ó l­u tr÷ c¸c “delta times” vµ c¸c gi¸ trÞ tíi h¹n kh¸c. §iÒu nµy cho phÐp c¸c gi¸ trÞ nhá (nh­ gi¸ trÞ 0) cã thÓ ®­îc l­u tr÷ trong mét byte ®¬n ®ång thêi cho phÐp c¸c gi¸ trÞ ®¹t tíi 32 bits. Delta times C¸c sù kiÖn MIDI xuÊt hiÖn t¹i mét sè thêi ®iÓm x¸c ®Þnh. Cã 2 c¸ch ®Ó ®¸nh dÊu c¸c th«ng tin nµy: L­u tr÷ thêi gian tuyÖt ®èi t¹i mçi thêi ®iÓm mµ sù kiÖn xuÊt hiÖn, hay cã thÓ l­u tr÷ c¸c qu·ng thêi gian gi÷a c¸c sù kiÖn. Mçi sù kiÖn ®­îc ®Æt tr­íc bëi mét sè chØ ra sè c¸c ticks ®Ó t¸ch biÖt nã víi sù kiÖn tr­íc ®ã. Kho¶ng tån t¹i chÝnh x¸c cña mét tick phô thuéc vµo khu«n d¹ng thêi gian ®· ®­îc Ên ®Þnh trong header, vµ còng cã thÓ ®­îc thay ®æi bëi c¸c sù kiÖn riªng biÖt trong tÖp. C¸c sù kiÖn MIDI Mét sù kiÖn MIDI lµ mét gãi c¸c d÷ liÖu mµ nã chØ râ mét sè c¸c sù kiÖn ©m nh¹c, nh­ viÖc nhÊn vµ nh¶ phÝm. Byte ®Çu tiªn cña gãi lµ byte tr¹ng th¸i, mµ nã ®Þnh râ d¹ng cña sù kiÖn, vµ ®«i khi, lµ kªnh truyÒn. C¸c bytes tr¹ng th¸i th­êng xuyªn cã thiÕt lËp bit cao. Cßn l¹i lµ c¸c byte d÷ liÖu, mµ chóng kh«ng bao giê cã thiÕt lËp bit cao. Sù ph©n biÖt nµy lµ rÊt quan träng. Theo c¸ch chung, c¸c kªnh truyÒn MIDI ®­îc ®¸nh sè tõ 1 tíi 16, vµ c¸c nh¹c cô MIDI lµ tõ 1 tíi 128. Tuy nhiªn, c¸c m· ho¸ sè x¾p hµng tõ 0 tíi 15 vµ 0 tíi 127 mét c¸ch t­¬ng øng. Ta sÏ thªm hay bít 1 khi chuyÓn ®æi gi÷a c¸c m· sè ho¸ vµ ng«n ng÷ MIDI. Running Status §Ó t¹o "wire protocol" thªm hiÖu qu¶, MIDI sö dông mét kü thuËt gäi lµ “running status”, kü thuËt nµy bá qua c¸c bytes tr¹ng th¸i lÆp. Khi ®äc mét tÖp MIDI, nÕu gÆp mét byte d÷ liÖu, trong khi ta ®ang cÇn mét byte tr¹ng th¸i, th× ta dïng l¹i tr¹ng th¸i tr­íc ®ã. §Ó t¹o cho kü thuËt nµy thªm h÷u hiÖu, cã mét quy ­íc r»ng mét “note-on event” víi mét vËn tèc (velocity) thiÕt lËp vÒ 0 còng gièng nh­ mét “note-off event” víi mét vËn tèc ngÇm ®Þnh lµ 64. Nh­ vËy, mét dÉy dµi c¸c notes trªn mét kªnh truyÒn ®¬n cã thÓ ®­îc kiÓm so¸t víi chØ 2 bytes cho mçi sù kiÖn. Qu¶n lý c¸c sù kiÖn MIDI C¸c tÖp MIDI th­êng ®­îc l­u tr÷ nh­ c¸c r·nh ®¬n. MÆc dï c¸c sù kiÖn trong mçi r·nh ®­îc l­u tr÷ theo thø tù t¹m thêi, luång sù kiÖn mµ nã nhËn ®­îc ®Ó ph¸t lµ mét tæ hîp cña c¸c r·nh nµy. H¬n n÷a, c¸c sù kiÖn trong mçi r·nh (nh­ nh÷ng sù thay ®æi vÒ nhÞp ®é) t¸c ®éng lªn qu¸ tr×nh ph¸t l¹i cña c¸c sù kiÖn trong c¸c r·nh kh¸c. Cho c¸c tÖp d¹ng 1, cÇn ph¶i ®äc mäi sù kiÖn vµo bé nhí tr­íc khi ph¸t chóng. §Ó ®¹t ®­îc ®iÒu nµy, cÇn l­u tr÷ mét danh s¸ch liªn kÕt ®¬n cña c¸c sù kiÖn MIDI. PhÇn lín c¸c sù kiÖn gåm mét byte tr¹ng th¸i vµ mét cÆp byte d÷ liÖu. Vµ còng cÇn ph¶i l­u tr÷ gi¸ trÞ ®é trÔ vµ sè r·nh mµ sù kiÖn nµy xuÊt hiÖn. Vµi sù kiÖn MIDI riªng biÖt cã thÓ chøa mét l­îng tuú ý c¸c d÷ liÖu, nªn cÇn thªm mét cÊu tróc phô ®Ó n¾m gi÷ d÷ liÖu ®ã khi cÇn ®Õn. PhÇn lín c¸c sù kiÖn MIDI cã ®é dµi cè ®Þnh. VÝ dô nh­ mét “note-on event” cã 2 bytes d÷ liÖu tiÕp theo c¸c bytes tr¹ng th¸i. Khu«n d¹ng MIDI Khu«n d¹ng MID lµ c¸c tÖp ®iÒu khiÓn ©m thanh trong multimedia. MIDI lµ mét hÖ thèng hoµn chØnh kh«ng chØ cã khu«n d¹ng x¸c ®Þnh mµ cßn cã c¸c tÝn hiÖu vµ hÖ thèng phÇn cøng. C¸c tÖp MIDI l­u gi÷ mét dßng c¸c lÖnh cho c¸c hÖ thèng tæng hîp (synthesizer) MIDI. C¸c tÖp ®­îc x©y dùng tõ c¸c khóc (chunks). Cã hai lo¹i khóc: header chunk vµ track chunk. Mçi tÖp MIDI gåm mét header chunk vµ mét hoÆc nhiÒu track chunk. Mçi khóc cã 4 byte ®Ó nhËn d¹ng. C¸c dÊu hiÖu theo sau 4 byte x¸c ®Þnh ®é dµi d÷ liÖu trong khóc (kh«ng kÓ 8 byte d÷ liÖu m« t¶), cho phÐp mét khóc dµi 4GB. Header chunk B¾t ®Çu b»ng c¸c ký tù “MThd” trong d¹ng m· ASCII, header chunk th­êng cã ®é dµi 16byte, m· ho¸ nh­ 06 00 00 00 theo khu«n d¹ng "little-endian" (Intel) trong tÖp MIDI. 8byte ®Çu cña header chunk theo d¹ng word biÓu diÔn ph¹m vi d÷ liÖu trong tÖp. 0, (trªn ®Üa 00 00): tÖp ®Þnh nghÜa mét r·nh ®a kªnh ®¬n. 1, (trªn ®Üa 01 00): tÖp gi÷ mét hoÆc nhiÒu r·nh ®­îc ch¬i cïng mét lóc. 2, (trªn ®Üa 02 00): tÖp nÐn mét hoÆc nhiÒu mÉu r·nh ®¬n mµ chóng ®éc lËp víi qu¸ tr×nh ch¬i liªn tiÕp. VÞ trÝ tõ tiÕp theo (byte thø 11 vµ 12) biÓu thÞ sè track chunk riªng biÖt ®­îc chøa trong tÖp. Khu«n d¹ng nµy cho phÐp tíi 65.535 chunk d÷ liÖu trong mét tÖp. Tõ cuèi cïng trong header chunk (byte thø 13 vµ 14) x¸c ®Þnh gÝa trÞ trung b×nh cña delta-time trong mét track chunk. D÷ liÖu trong c¸c byte ®ã lÊy mét trong hai d¹ng. Khi bit MSB = 0 th× 15 bit thÊp h¬n biÓu thÞ sè tick trong mét phÇn t­ nèt nh¹c. Khi bit MSB = 1 nã biÓu diÔn thêi gian trong mét time code vµ byte thÊp h¬n biÓu thÞ sè tick trong mét khung SMPTE. Track chunk B¾t ®Çu víi “MTrk” trong d¹ng m· ASCII, mét track chunk b¾t ®Çu víi 8byte nhËn d¹ng (4byte nh­ “MTrk”, 4byte sau biÓu diÔn ®é dµi) theo sau lµ mét track event. Mçi track event cã hai phÇn, mét biÕn ®é dµi delta time (1 tíi 4 byte) m« t¶ thêi gian tr­íc sù kiÖn vµ b¶n th©n sù kiÖn. Sù kiÖn cã thÓ lµ mét trong sè c¸c d¹ng sau: mét sù kiÖn MIDI (®¬n gi¶n lµ mét b¶n tin vÒ kªnh truyÒn MIDI), mét b¶n tin dµnh riªng cña hÖ thèng (gäi lµ sysex event), hoÆc mét Meta event, kh«ng ph¶i th«ng tin cho bé tuÇn tù. Mét b¶n tin dµnh riªng cña hÖ thèng lµ mét chuçi d÷ liÖu cã d¹ng ba phÇn: mét byte nhËn d¹ng, th­êng lµ F0(Hex) hoÆc F7(Hex), theo sau lµ mét tíi ba byte biÓu diÔn ®é dµi chuçi d÷ liÖu vµ b¶n th©n chuçi d÷ liÖu. Mét Meta event gåm bèn phÇn: byte ®Çu tiªn th­êng lµ FF(Hex), tiÕp theo lµ m· kiÓu 1byte. TiÕp theo lµ mét biÕn biÓu diÔn ®é dµi cña d÷ liÖu trong Meta event. PhÇn cuèi cïng lµ d÷ liÖu Meta event. 1.7. Mod/ Sam MÆc dï MIDI lµ mét d¹ng l­u tr÷ nh¹c tèt, nh­ng nã còng cã mét vµi vÊn ®Ò. Khëi ®Çu, MIDI ®· ®­îc ph¸t triÓn cho viÖc kÕt nèi víi nhiÒu lo¹i phÇn cøng vÒ nh¹c. Mét bé tæng hîp sÏ chØ ®¸p øng cho mét tËp Ên ®Þnh c¸c ©m thanh nh¹c cô, vµ mçi bé tæng hîp lµ kh¸c nhau. ThËm chÝ, mçi nh¹c cô víi cïng mét tªn nh­ng l¹i nghe cã vÎ kh¸c nhau, nªn nhiÒu tÖp MIDI chØ nghe chuÈn trªn mét vµi bé tæng hîp nµo ®ã. ChÝnh v× vËy, ng­êi ta sö dông thªm d¹ng tÖp Mod. B»ng c¸ch bao gåm c¸c ©m thanh nh¹c cô ®· ®­îc thu thanh, c¸c tÖp Mod ®éc lËp víi c¸c tÝnh n¨ng cña bÊt cø bé tæng hîp hay card ©m thanh nµo. ChÝnh v× vËy, c¸c tÖp Mod nghe cã vÎ nh­ gièng nhau trªn mäi hÖ thèng. Kh¸c víi MIDI, c¸c tÖp Mod ®­îc cÊu tróc dùa quanh c¸c beat. Mçi beat t­¬ng øng víi mét qu·ng thêi gian vµ nã hoµn toµn m« t¶ nh÷ng g× xÈy ra trong qu·ng ®ã. Mét kÕt qu¶ kh¸c lµ c¸c tÖp Mod cã thÓ chØ ph¸t mét sè giíi h¹n c¸c nèt nh¹c ®ång thêi. MÆc dï ®iÒu nµy cã thÓ lµ mét trë ng¹i cho c¸c nhµ so¹n nh¹c, nh­ng nã l¹i lµ mét ­u ®iÓm cho nh÷ng ng­êi lËp tr×nh, nh÷ng ng­êi khai th¸c giíi h¹n nµy ®Ó cung cÊp qu¸ tr×nh ph¸t l¹i thªm x¸c thùc. C¸c tÖp Mod kh«ng thÓ ®­îc ®Þnh danh mét c¸ch x¸c thùc gièng nh­ mét vµi d¹ng kh¸c. D¹ng biÕn thÓ phæ biÕn Pro Tracker chøa 4-byte ký hiÖu, nh­ng l¹i kh«ng ®Þnh vÞ t¹i phÇn ®Çu cña tÖp. C¸c d¹ng biÕn thÓ Mod kh¸c kh«ng nh÷ng sö dông c¸c dÊu hiÖu kh¸c nhau, mµ l¹i ®Þnh vÞ chóng t¹i c¸c vÞ trÝ kh¸c nhau trong tÖp. Khu«n d¹ng chung cña Mod Khu«n d¹ng tÖp Mod cã thÓ ®­îc coi nh­ mét d¹ng nÐn míi. Nã ®Þnh danh mét chuçi c¸c mÉu h×nh lÆp trong phÇn nh¹c nªn viÖc l­u tr÷ trë nªn rÊt gän nhÑ. VÝ dô, nã l­u tr÷ nèt nh¹c ®· thu thanh cho mçi nh¹c cô, mµ nã sÏ ®­îc më réng thµnh mét chuçi c¸c ©m thanh trong qu¸ tr×nh ph¸t l¹i. Nã còng l­u tr÷ c¸c mÉu h×nh, c¸c ph©n ®o¹n ng¾n cña b¶n nh¹c mµ chóng cã thÓ ®­îc lÆp hay ph¸t l¹i theo bÊt cø tr×nh tù nµo ®Ó t¹o sù thuËn lîi cho c¸c chuçi lÆp nèt nh¹c. C¸c tÖp Mod chung nhÊt cho phÐp tíi 31 ©m thanh nh¹c cô kh¸c nhau. Mçi ©m thanh ®­îc ®Æc tr­ng bëi c¸c mÉu ®· ®­îc sè ho¸ víi mét ph©n ®o¹n lÆp tuú chän, cïng víi mét ©m l­îng ngÇm ®Þnh vµ tham sè “finetune”. Tham sè nµy cho phÐp tÇn sè ph¸t l¹i chÝnh x¸c (vµ c­êng ®é) cã thÓ ®­îc ®iÒu chØnh trªn mçi nh¹c cô c¬ b¶n. Timing §¬n vÞ thêi gian chuÈn ®­îc sö dông trong mét tÖp Mod lµ “tick”, th­êng lµ 1/50 gi©y. (Tèc ®é nµy t­¬ng øng víi tÇn sè vÏ l¹i theo chiÒu däc trong phiªn b¶n European/PAL cña Amiga. Mét vµi tÖp Mod kh«ng chuÈn cã thÓ lÊy gi¸ trÞ 1/60 gi©y, t­¬ng øng víi phiªn b¶n US/NTSC cña Amiga. RÊt nhiÒu tr×nh ph¸t c¸c tÖp Mod cho phÐp ®iÒu chØnh tÇn sè tick). TÖp Mod cho phÐp mét chuçi c¸c thay ®æi vÒ ©m thanh xuÊt hiÖn trong mçi tick. VÝ dô nh­, mét nèt nh¹c ®­îc ph¸t víi sù rung sÏ cã ©m l­îng cña nã ®­îc ®iÒu chØnh trªn mçi tick. Tuy nhiªn, nh÷ng sù thay ®«Ø vÒ nèt nh¹c cã thÓ chØ xuÊt hiÖn t¹i phÇn ®Çu cña mçi beat míi. Th«ng th­êng, mét beat lµ 6 ticks, mÆc dï gi¸ trÞ nµy cho phÐp ®­îc ®iÒu chØnh tuú ý. C¸c beats còng ®­îc quy chiÕu tíi nh­ c¸c hµng, bëi v× rÊt nhiÒu tr×nh so¹n th¶o tÖp Mod hiÓn thÞ mçi beat trªn mét hµng cña phÇn hiÓn thÞ v¨n b¶n. Notes Mçi beat lµ mét tËp hoµn chØnh c¸c nèt nh¹c(notes). Mçi nèt nh¹c bao gåm mét sè nh¹c cô, mét thêi ®o¹n (period), vµ mét m· t¸c ®éng. (Mét vµi khu«n d¹ng biÕn thÓ kh¸c còng l­u tr÷ trong mçi nèt nh¹c møc ©m l­îng). Sè nh¹c cô vµ thêi ®o¹n t­¬ng øng mét c¸ch trùc tiÕp víi phÇn cøng vÒ ©m thanh cña Amiga. NÕu c¶ sè nh¹c cô vµ thêi ®o¹n lµ 0, th× nèt nh¹c tr­íc ®ã nªn tiÕp tôc ®­îc ph¸t. NÕu chØ mét trong hai sè nµy b»ng 0, th× mét nèt nh¹c míi sÏ b¾t ®Çu nh­ng gi¸ trÞ 0 sÏ ®­îc thay thÕ bëi gi¸ trÞ tr­íc ®ã. Beats Mét beat bao gåm mét sù ®Þnh râ nèt nh¹c riªng cho mçi kªnh. Th«ng th­êng cã 4 kªnh, nh­ng c¸c d¹ng biÕn thÓ kh¸c cã thÓ cã 6 hay 8 kªnh. Ngoµi ra, mçi beat cßn cã mét kho¶ng x¸c ®Þnh, th­êng lµ 6 ticks, mÆc dï kho¶ng nµy cã thÓ ®­îc thiÕt lËp l¹i. Patterns C¸c tÖp Mod ®­îc thiÕt kÕ cho qu¸ tr×nh l­u tr÷ ©m nh¹c, mµ chóng cã c¸c ph©n ®o¹n lÆp. Mét mÉu h×nh (pattern) l­u tr÷ tíi 64 beats. T¹i mçi tÇn sè lÊy mÉu ph¸t l¹i b×nh th­êng, nã chØ ph¸t nh¹c trong vßng h¬n 7 gi©y. Mét tÖp Mod cã thÓ cã tíi 64 mÉu h×nh. Mét vµi d¹ng Mod kh¸c kh«ng l­u tr÷ c¸c mÉu h×nh, mµ chóng l­u tr÷ mét danh s¸ch liªn tiÕp c¸c beats. Playlist Playlist lµ mét danh s¸ch chøa tíi 128 sè mÉu h×nh. Nãi chung, mét tr×nh ph¸t mét tÖp Mod phøc t¹p h¬n so víi tr×nh ph¸t c¸c khu«n d¹ng Wave vµ AIFF, mÆc dï kh«ng phøc t¹p nh­ tr×nh ph¸t MIDI. CÊu tróc chung cña mét tÖp Mod nh­ sau: §é dµi M« t¶ 20 Tªn bµi h¸t 30 cho mçi nh¹c cô D÷ liÖu vÒ nh¹c cô 1 §é dµi cña playlist 1 Sè c¸c mÉu h×nh (chØ trong c¸c tÖp cò) 128 Playlist 4 Signature 1024 cho mçi mÉu h×nh C¸c mÉu h×nh TiÕp theo lµ d÷ liÖu vÒ mÉu h×nh nh¹c cô. PhÇn "Signature" ®­îc sö dông ®Ó chØ ra khu«n d¹ng chÝnh x¸c cña tÖp. Nh­ng phÇn nµy kh«ng xuÊt hiÖn t¹i cïng mét ®Þnh vÞ trong mäi khu«n d¹ng Mod. Sau ®©y lµ mét vµi trong sè c¸c ký hiÖu chung nhÊt: KÝ hiÖu M« t¶ M.K Ch÷ ký chung nhÊt. M!K! Gièng nh­ d¹ng trªn, nh­ng cã nhiÒu h¬n 64 mÉu h×nh. FLT4 T­¬ng tù nh­ M!K! FLT8 Mçi beat cã 8 kªnh 6CHN Mçi beat cã 6 kªnh 8CHN Mçi beat cã 8 kªnh DÞch phÇn III: 14. mpeg Audio Trong s¸ch: A Programmer's Guide To Sound Addison - Wesley / 1998, Tim Kientzle 1.8. MPEG (Moving Pictures Expert Group) §©y lµ mét chuÈn mµ ISO ®· ph¸t triÓn (5/1988) cho viÖc nÐn mét chuçi c¸c h×nh ¶nh video. MÆc dï c¸c chuÈn MPEG lµ rÊt næi tiÕng cho viÖc nÐn c¸c h×nh ¶nh video, nh­ng chóng còng ®¸p øng cho viÖc nÐn c¸c ©m víi chÊt l­îng cao. HiÖn nay, cã 3 d¹ng chuÈn MPEG chÝnh: MPEG-1, MPEG-2, MPEG-3. Sù ph©n biÖt gi÷a c¸c tÖp MPEG ©m thanh vµ h×nh ¶nh video lµ rÊt quan träng. C¸c chuÈn MPEG x¸c ®Þnh 3 khu«n d¹ng l­u tr÷. Mét tÖp cã thÓ chøa mét dßng h×nh ¶nh (video stream), mét dßng ©m thanh (audio stream), hay mét dßng hÖ thèng (system stream) lµ dßng mµ nã ®­îc chÌn vµo xen kÏ mét vµi tæ hîp cña c¸c dßng ©m thanh vµ h×nh ¶nh. C¶ 3 d¹ng tÖp nµy ®Òu ®­îc sö dông réng r·i. Nãi chung chuÈn MPEG kh¸c so víi vµi chuÈn kh¸c. ë ®©y, ta chØ xÐt tíi khu«n d¹ng cña mét dßng bit (bitstream) MPEG, vµ c¸ch m· ho¸ dßng bit ®ã chø kh«ng chØ ra kü thuËt nÐn. Mét c¸ch chñ yÕu, mét dßng bit ©m MPEG ®Þnh râ gi¸ trÞ tÇn sè cña ©m thanh vµ c¸ch gi¸ trÞ ®ã thay ®æi theo thêi gian. Theo c¸ch ®Ó l­u tr÷ kho¶ng trèng, bé nÐn sÏ lo¹i bá th«ng tin mét c¸ch cã lùa chän. ChuÈn chØ râ c¸ch th«ng tin gi÷ l¹i ®­îc m· ho¸ vµ bé gi¶i m· cã thÓ cÊu tróc c¸c mÉu ©m PCM tõ dßng bit MPEG. B»ng c¸ch ®Æt l¹i qu¸ tr×nh xö lý m· hãa kh«ng x¸c ®Þnh, c¸c bé cµi ®Æt cã thÓ tù do sö dông mét chuçi c¸c kü thuËt ®Ó quyÕt ®Þnh xem th«ng tin nµo lµ quan träng. Nh÷ng kü thuËt nµy cã thÓ bao gåm c¸c bé m· ho¸ ®¬n gi¶n cho c¸c øng dông chÊt l­îng thÊp h¬n, vµ c¸c bé m· ho¸ ®­îc chi tiÕt ho¸ cho c¸c d¹ng ©m thanh riªng biÖt (vÝ dô nh­ qu¸ tr×nh nÐn chÊt l­îng cao cho dµn nh¹c cã thÓ kh¸c víi qu¸ tr×nh nÐn chÊt l­îng cao cho tiÕng nãi). CÊu tróc chung Gièng nh­ nhiÒu kü thuËt nÐn ®Þnh h­íng phÇn cøng, d÷ liÖu ®· ®­îc nÐn MPEG ®­îc ®Þnh nghÜa nh­ mét dßng c¸c bit. Mét dßng bit MPEG bao gåm c¸c khung (frame) d÷ liÖu nÐn. Mçi khung chøa mét "frame header" mµ nã x¸c ®Þnh khu«n d¹ng d÷ liÖu ®ã. §Ó gi¶i m· d÷ liÖu, cÇn ph¶i r·nh ho¸ c¸c bytes vµo, ®Þnh danh vµ ph©n tÝch c¸c "frame header", vµ sö dông th«ng tin trong c¸c header ®Ó gi¶i nÐn c¸c khung riªng biÖt. Frame Header cña MPEG Mét frame header lu«n lµ 32 bits vµ ®­îc x¾p hµng trªn mét byte ®­êng biªn. 12 bits ®Çu tiªn ®Òu lµ 1, cho sù ®ång bé ho¸; c¸c bits cßn l¹i ®­îc chØ ra trong b¶ng sau. 12 bits gi¸ trÞ 1 lµ "syncword". NÕu bé gi¶i m· mÊt r·nh n¬i mµ nã ®ang ®Þnh vÞ, th× nã cã thÓ t×m vÒ phÝa tr­íc cho "syncword" tiÕp theo vµ ®Þnh vÞ l¹i tõ ®ã. MPEG frame Header: Byte Bits M« t¶ 0 8 Cho sù ®ång bé, mäi gi¸ trÞ ®Òu b»ng 1 1 4 Cho sù ®ång bé, mäi gi¸ trÞ ®Òu b»ng 1 1 ID: 0 chØ ra r»ng c¸c phÇn më r«ng MPEG-2 ®ang ®­îc sö dông 2 TÇng: 11=tÇng 1, 10=tÇng 2, 01=tÇng 3, 00=dù tr÷ 1 Bit b¶o vÖ: 0 nÕu CRC ®­îc kÌm vµo 2 4 ChØ sè tÇn sè bit 2 ChØ sè tÇn sè mÉu 1 ChÌn thªm: 1 nÕu cã mét khe phô 1 Private 3 2 ChÕ ®é: 00=stereo, 01=joint stereo, 10=dual channel, 11=mono 2 Sù më réng chÕ ®é: d¶i tÇn thÊp nhÊt cho ©m thanh d¹ng stereo vÒ c­êng ®é 1 B¶n quyÒn: 1, nÕu cã 1 Nguån gèc: 1, nÕu ®©y lµ b¶n gèc 2 NhÊn m¹nh C¸c syncword gi¶ cã thÓ g©y khã kh¨n cho bé gi¶i m· trong viÖc ®ång bé l¹i mét c¸ch ®¸ng tin cËy. MÆc dï chuÈn nµy ®¶m b¶o r»ng syncword gi¶ sÏ kh«ng xuÊt hiÖn trong mét dßng ©m thÝch hîp, chóng cã thÓ xuÊt hiÖn nÕu d÷ liÖu m· ho¸ bÞ c¸c lçi g©y h­ h¹i. NÕu bé gi¶i m· biÕt th«ng tin phô vÒ dßng bit vµo (vÝ dô nh­ nã cã thÓ ®· biÕt ®Ó tr«ng chê mét dßng bit MPEG-1 Layer 1), nã cã thÓ sö dông c¸c bits header phô nµy nh­ mét syncword më réng. ChuÈn nµy còng cung cÊp mét d¹ng m· ho¸ vßng CRC ®Ó ®­îc l­u tr÷ theo sau header. CRC cung cÊp mét d¹ng kiÓm tra lçi cho header vµ phÇn lín c¸c d÷ liÖu ©m thanh nh¹y c¶m ®· ®­îc m· ho¸. NÕu qu¸ tr×nh kiÓm tra CRC bÞ tr­ît, th× bé gi¶i m· cã thÓ bá qua khung nµy (lµm trÇm ®Çu vµo, hay t¹o b¶n sao cña khung tr­íc ®ã ®Ó che d÷ liÖu ®· mÊt), ®ång bé l¹i, vµ tiÕp tôc víi khung thÝch hîp tiÕp theo. C¸c m· ho¸ vÒ tÇn sè lÊy mÉu cña MPEG : MPEG - 1 MPEG - 2 M· ho¸ TÇn sè lÊy mÉu TÇn sè lÊy mÉu 00 44,100 22,050 01 48,000 24,000 10 32,000 16,000 11 Reserved Reserved Frame header chØ ra tÇn sè lÊy mÉu cña d÷ liÖu ©m thanh kh«ng bÞ nÐn (samples/gi©y) vµ tÇn sè cña d÷ liÖu ®· nÐn (bits/gi©y). C¸c gi¸ trÞ nµy ®­îc l­u tr÷ ë phÇn header cña mçi khung. MÆc dï nã kh«ng ®ång nhÊt cho c¸c bé m· ho¸ trong viÖc thay ®æi tÇn sè lÊy mÉu gi÷a c¸c khung, nh­ng nã kh¸ hîp lý trong viÖc thay ®æi tèc ®é bit (bit rate) gi÷a c¸c khung. B»ng c¸ch thay ®æi tèc ®é bit gi÷a c¸c khung, MPEG cã thÓ sö dông c¸c tèc ®é bit hiÖn thêi (trong b¶ng m· ho¸ tèc ®é bit sau). Trong mét vµi tr­êng hîp, tèc ®é bit "free" cã thÓ ®­îc sö dông mÆc dï chóng cã mét vµi giíi h¹n. Ngoµi ra, ®Ó tr¸nh lµm sai c¸c "syncword", kh«ng nªn sö dông gi¸ trÞ toµn 1. B¶ng c¸c m· ho¸ tèc ®é bit MPEG: M· ho¸ Tèc ®é bit MPEG-1 Tèc ®é bit MPEG-2 TÇng 1 TÇng 2 TÇng 3 TÇng 1 TÇng 2 TÇng 3 0000 Free Free Free Free Free Free 0001 32 32 32 32 8 8 0010 64 48 40 48 16 16 0011 96 56 48 56 24 24 0100 128 64 56 64 32 32 0101 160 80 64 80 40 40 0110 192 96 80 96 48 48 0111 224 112 96 112 56 56 1000 256 128 112 128 64 64 1001 288 160 128 144 80 80 1010 320 192 160 160 96 96 1011 352 224 192 176 112 112 1100 384 256 224 192 128 128 1101 416 320 256 224 144 144 1110 448 384 320 256 160 160 1111 * * * * * * MPEG-1 ®¸p øng cho 4 thiÕt lËp vÒ kªnh truyÒn. C¸c chÕ ®é ©m thanh næi th«ng th­êng vµ kªnh truyÒn kÐp cã thÓ l­u tr÷ 2 dßng d÷ liÖu nÐn mét c¸ch ®éc lËp. ThiÕt lËp vÒ ©m thanh næi ®­îc kÕt nèi sö dông Ýt d÷ liÖu nhÊt b»ng c¸ch chia sÎ mét vµi th«ng tin gi÷a 2 kªnh. §iÒu nµy t¹o thuËn lîi cho c¸c ch­¬ng tr×nh ®¸p øng d¹ng ©m thanh næi cã sù kh¸c nhau gi÷a c¸c kªnh tr¸i vµ ph¶i lµ rÊt nhá. C¸c khe vµ khung (Slots vµ Frames) C¸c khung cña MPEG ®­îc tÝnh b»ng c¸c khe (slots). Víi tÇng 1, mét khe lµ 4 bytes; víi tÇng 2 vµ 3 lµ 1 byte. Sù ®Þnh vÞ cña header tiÕp theo lµ rÊt ®¬n gi¶n, nªn dÔ dµng x¸c ®Þnh tèc ®é bit cña d÷ liÖu vµo, tÇn sè lÊy mÉu cña ©m ra, còng nh­ sè c¸c mÉu xuÊt hiÖn trong mét gãi: 384 mÉu cho tÇng 1; vµ 1,152 mÉu cho tÇng 2 vµ 3. Tõ c¸c sè liÖu nµy ta cã thÓ tÝnh ®é dµi trung b×nh cña khung. Ngoµi ra, mäi th«ng tin vÒ header ®­îc lÆp l¹i trong mçi khung. PhÇn lín th«ng tin naú cho phÐp thay ®æi víi mçi khung (mÆc dï c¸c th«ng sè vÒ tÇng, chØ sè, vµ tÇn sè lÊy mÉu kh«ng nªn thay ®æi). Bëi v× khi mét tèc ®é bit ®­îc thay ®æi gi÷a c¸c header, th× rÊt cã thÓ sÏ t¹o ra mét sai sè lín. Mét c¸ch kh¸c, ®Ó cã thÓ sö dông mét tèc ®é bit kh«ng chuÈn ta nªn sö dông mét m· ho¸ "free bit rate". DÜ nhiªn, trong tr­êng hîp nµy ta kh«ng thÓ tÝnh to¸n trùc tiÕp ®é dµi khung, do ®ã, nªn quy ®Þnh r»ng nÕu tèc ®é bit lµ "free" th× ®é dµi khung kh«ng ®­îc thay ®æi (ngo¹i trõ cho khe ®· ®­îc chØ râ cña qu¸ tr×nh chÌn thªm). §iÒu nµy cho phÐp tÝnh to¸n ®é dµi khung ®Çu tiªn b»ng c¸ch t×m kiÕm tr­íc cho header tiÕp theo vµ sau ®ã sö dông l¹i gi¸ trÞ ®ã cho c¸c khung ®­îc gi÷ l¹i. DÞch phÇn: C¸c d¹ng file ©m thanh Trong: cool edit Pro 1.9. VBA , VBase ADPCM (.VBA) §©y lµ d¹ng Dialogic VOX víi mét ®Çu ®äc nhá, cho phÐp c¸c ph©n ®o¹n ®­îc ®¸nh dÊu. Nã sÏ chØ ghi d­íi d¹ng ©m 16-bit ®¬n, vµ gièng nh­ c¸c d¹ng ADPCM kh¸c, nã nÐn theo kiÓu 4-bits/mÉu (tû lÖ 4:1). Kh¸c víi d¹ng Dialogic VOX, th«ng tin vÒ tÇn sè lÊy mÉu ®­îc gi÷ l¹i víi tÖp. 1.10. VCE, NMS VCE (.VCE) Natural MicroSystems (NMS) ADPCM. §©y lµ d¹ng biÕn ®æi G.721 ADPCM ®­îc sö dông trong c¸c øng dông trong ngµnh ®iÖn tho¹i. Mét tÖp .vce chøa mét b¶n tin vÒ giäng nãi ®¬n víi 2,3 hay 4-bit/mÉu t¹i tèc ®é 8000 mÉu trong mçi gi©y. D¹ng nµy chØ øng dông cho c¸c d¹ng ®¬n, 16-bit t¹i tÇn sè 8kHz. TÖp .vce lµ mét tÖp máng vµ kh«ng cã ®Çu ®äc. C¸c tÖp .vce béi vµ cã ®Çu ®äc ®­îc chøa trong tÖp .vox d¹ng NMS ®¬n. 1.11. TXT ASCII Text Data (.TXT) D÷ liÖu cã thÓ ®­îc ®äc hoÆc viÕt tõ c¸c tÖp theo d¹ng v¨n b¶n chuÈn, mµ trong ®ã mçi mÉu ®­îc chia bëi mét “carriage return” vµ c¸c kªnh ®­îc chia bëi ký tù “tab”. C¸c tuú chän cho phÐp d÷ liÖu ®­îc chuÈn ho¸ trong kho¶ng gi¸ trÞ –1.0 vµ 1.0, hoÆc ®­îc viÕt hay ®äc theo c¸c gi¸ trÞ nguyªn. Mét ®Çu ®äc tuú chän cã thÓ ®­îc xÕp tr­íc c¸c d÷ liÖu. NÕu kh«ng cã header text, th× d÷ liÖu ®­îc thõa nhËn lµ c¸c sè nguyªn hÖ 10 d¹ng 16-bit. §Çu ®äc ®­îc ®Þnh d¹ng nh­ tõ kho¸: gåm c¸c gi¸ trÞ, SAMPLERATE, vµ NORMALIZED. Gi¸ trÞ cña NORMALIZED lµ TRUE hoÆc FALSE. VÝ dô nh­: SAMPLES: 1582 BITSPERSAMPLE: 16 CHANNELS: 2 SAMPLERATE: 22050 NORMALIZED: FALSE 164 -1372 492 -876 vv... 1.12. SMP, SampleVision (.Smp) D¹ng SampleVision ®­îc ch­¬ng tr×nh SampleVision cña Turtle Beach sö dông. Nã chØ ®¸p øng c¸c d¹ng ©m 16-bit ®¬n. 8-bit signed (.Sam) D¹ng nµy rÊt phæ biÕn cho viÖc t¹o c¸c tÖp d¹ng Mod, kÓ tõ khi c¸c ©m trong c¸c tÖp Mod lµ d¹ng 8-bit. RÊt nhiÒu tr×nh so¹n th¶o Mod cho phÐp c¸c mÉu ®­îc chÌn vµo tõ c¸c tÖp, hoÆc ®­îc xuÊt sang c¸c tÖp theo d¹ng nµy. D÷ liÖu d¹ng nguyªn 8-bit signed víi phÇn më réng .Sam ®­îc thõa nhËn lµ d÷ liÖu d¹ng nguyªn 8-bit signed vµ kh«ng cã ®Çu ®äc. TÇn sè lÊy mÉu th­êng lµ 22050Hz, nh­ng hiÖn nay, gi¸ trÞ nµy cã thÓ ®­îc thay ®æi. 1.13. VOX Dialogic ADPCM (.Vox) D¹ng Dialogic ADPCM, nãi chung, cã trong c¸c øng dông trong ngµnh ®iÖn tho¹i, ®· ®­îc tèi ­u cho c¸c giäng cã tÇn sè lÊy mÉu thÊp. Nã chØ ghi c¸c ©m d¹ng 16-bit ®¬n, vµ gièng nh­ c¸c d¹ng ADPCM kh¸c, nã nÐn theo kiÓu 4-bits/mÉu (cho tû lÖ 4:1). D¹ng nµy kh«ng cã ®Çu ®äc, v× vËy bÊt cø d¹ng tÖp nµo cã phÇn më réng .Vox sÏ ®­îc thõa nhËn lµ thuéc d¹ng nµy. Pika ADPCM (.VOX, *.*) Pika ADPCM còng lµ d¹ng cã trong c¸c øng dông trong hÖ thèng ®iÖn tho¹i. Nã lµ phiªn b¶n "nibble-reversed" cña d¹ng Dialogic VOX chuÈn. §Ó ghi sang d¹ng Pika, tÖp gèc ph¶i lµ d¹ng ®¬n 8kHz 16-bit. 1.14. PCM, PCM Raw Data (.PCM) Mét c¸ch ®¬n gi¶n, d¹ng nµy lµ sù kÕt xuÊt PCM cho mäi d÷ liÖu cña tÖp ©m. TÖp kh«ng chøa c¸c th«ng tin vÒ ®Çu ®äc. Nªn ta kh«ng cÇn quan t©m tíi viÖc lùa chän tÇn sè lÊy mÉu, ®é ph©n gi¶i, còng nh­ sè kªnh truyÒn trong qu¸ tr×nh më tÖp. B»ng c¸ch më c¸c d÷ liÖu ©m thanh gièng nh­ PCM, ta cã thÓ diÔn xuÊt hÇu nh­ bÊt cø d¹ng tÖp ©m thanh nµo víi vµi ý t­ëng vÒ tÇn sè lÊy mÉu, sè c¸c kªnh truyÒn, vv.. Ta còng cã thÓ biÓu diÔn d÷ liÖu nh­ c¸c d¹ng nÐn A-Law hay Mu-law. 1.15. DWD , DiamondWare Digitized (.DWD) §©y lµ d¹ng ©m thanh ®­îc Sound Toolkit cña DiamondWare sö dông, ®©y lµ th­ viÖn cña ch­¬ng tr×nh mµ nã cho phÐp nhanh chãng vµ dÔ dµng thªm c¸c t­¬ng t¸c mang tÝnh ®Æc tr­ng cao vµo c¸c øng dông multimedia hay c¸c trß ch¬i. Nã øng dông c¶ 2 d¹ng tÖp (mono vµ stereo), víi mét tËp c¸c ®é ph©n gi¶i vµ tÇn sè lÊy mÉu kh¸c nhau. 1.16. RA, RealAudio 3.0 (.RA) §©y lµ d¹ng nÐn Progressive Networks ®­îc sö dông cho viÖc x¾p xÕp c¸c ©m thanh thêi gian thùc trªn Internet. C¸c tÖp RealAudio cã thÓ ®­îc m· ho¸ b»ng c¸ch sö dông c¸c gi¶i thuËt kh¸c nhau. Mçi gi¶i thuËt lµ tèi ­u cho mét d¹ng ©m vµ gi¶i tÇn kÕt nèi riªng. Ta cã thÓ ghi sang d¹ng nµy tõ d¹ng 8 hay 18-bit, ©m mono hay ©m stereo, víi tÇn sè lÊy mÉu thÝch hîp 8 kHz, 11.025 kHz, 16 kHz, 22.05 kHz, vµ 44.1 kHz. Ta còng cã thÓ sö dông c¸c nguån ©m stereo ®Ó t¹o ra c¸c tÖp RealAudio ©m mono hay stereo, tuy nhiªn kh«ng thÓ sö dông tÖp ®Çu vµo d¹ng ©m mono ®Ó t¹o ra tÖp d¹ng ©m stereo. Trong tr­êng hîp nµy, cÇn ph¶i chuyÓn sang d¹ng ©m stereo tr­íc qu¸ tr×nh ghi.

Các file đính kèm theo tài liệu này:

  • docSoundFileFormat.doc
  • doc#.~lock.DigitalSound.doc#
  • docDigitalSound.doc
  • docTomTat.doc
  • docHuong_Resume.doc
  • docSonNumerique.doc