1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nhận dạng bản nhạc dựa trên việc phân tích ký âm

80 497 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nhận dạng bản nhạc dựa trên phân tích ký âm
Tác giả Trần Trung Triều
Người hướng dẫn Thầy Trần Minh Văn
Trường học Đại học Nha Trang
Chuyên ngành Khoa Nghệ Thông Tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2011
Thành phố Nha Trang
Định dạng
Số trang 80
Dung lượng 0,96 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Về xử lý tín hiệu số, ngày nay các kỹ thuật xử lý tín hiệu số gần như đã được hoàn thiện, cả về lý thuyết và ứng dụng thực tiễn, xử lý tín hiệu số ứng dụng của nó là hầu như ở rất nhiều

Trang 1

LỜI CẢM ƠN

Đầu tiên em xin chân thành cảm ơn thầy Trần Minh Văn là giáo viên trực tiếp hướng dẫn và tận tình giúp đỡ tạo mọi điều kiện để em hoàn thành tốt đồ án tốt nghiệp này

Xin chân thành cảm ơn đến tất cả quý thầy cô trong bộ môn, cũng như khoa Khoa Nghệ Thông Tin và trường Đại học Nha Trang đã tận tình đào tạo trong những năm qua

Xin chân thành cảm ơn!

Nha trang, ngày 7 tháng 6 năm 2011

Sinh viên thực hiện Trần Trung Triều

Trang 2

MỤC LỤC

Contents

PHẦN I : GIỚI THIỆU CHUNG 4

1 Giới thiệu chung 4

2 Đặt vấn đề 4

3 Chủ đề luận án 4

4 Phạm vi luận án Error! Bookmark not defined. PHẦN II : CƠ SỞ LÝ THUYẾT 7

CHƯƠNG 1 LÝ THUYẾT XỬ LÝ TÍN HIỆU SỐ 7

1.1 Tín hiệu số 7

1.2 Xử lý tín hiệu số (DSP- Digital signal processing) 8

Chương 2 GIỚI THIỆU CHUNG VỀ ÂM THANH SỐ 18

2.1 Âm thanh và đặc tính của âm thanh 18

2.2 Âm thanh số 19

2.3 Định dạng dữ liệu 21

2.4 Khuôn dạng lưu trữ 23

Chương 3 KHUÔN DẠNG LƯU TRỮ TỆP ÂM THANH 29

3.1 File định dạng Wave (*.wav) 29

3.2 File định dạng MIDI (*.mid) 33

PHẦN III : GIẢI PHÁP XỬ LÝ 39

Chương 4 XÂY DỰNG CƠ SỞ DỮ LIỆU 39

4.1 Cơ sở lý thuyết 39

4.2 Cấu trúc file *.3t 40

4.3 Xây dựng cơ sở dữ liệu 41

Chương 5 BIẾN ĐỔI FFT VÀ PHÂN TÍCH PHỔ 44

5.1 Biến đổi FFT 44

Trang 3

5.2 Phân tích phổ 46

Chương 6 RÚT TRÍCH KÍ ÂM VÀ NHẬN DẠNG TÊN BÀI HÁT 48

6.1 Rút trích kí âm 48

6.2 Nhận dạng tên bài hát 50

PHẦN IV: THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 56

Chương 7 PHƯƠNG PHÁP THIẾT KẾ 56

7.1 Khái quát chức năng 56

7.2 Cơ chế thực hiện 56

Chương 8 CÀI ĐẶT CHƯƠNG TRÌNH 59

8.1 Truy cập file wave 59

8.2 Truy cập file midi 61

8.3 Cài đặt thuật toán FFT Cooley-Tookey 63

8.4 Phân tích phổ tần số 66

8.5 Nhận dạng bài hát 69

Chương 9 HƯỚNG DẪN SỬ DỤNG 71

9.1 Giao diện chương trình 71

9.2 Tùy chọn chức năng 74

ĐÁNH GIÁ CHƯƠNG TRÌNH 75

1 Đánh giá chương trình 75

2 Hướng phát triển 76

3 Kết luận 77

Phụ lục A GIẢI THÍCH THUẬT NGỮ 79

Phụ lục B TÀI LIỆU THAM KHẢO 80

Trang 4

PHẦN I : 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 giải trí, 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 khi nó được phát lại 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á

Về xử lý tín hiệu số, ngày nay các kỹ thuật xử lý tín hiệu số gần như đã được hoàn thiện, cả về lý thuyết và ứng dụng thực tiễn, xử lý tín hiệu số ứng dụng của nó là hầu như ở rất nhiều lĩnh vực, trong âm nhạc, quốc phòng an ninh, địa chất dự đoán động đất, …

Trước những nền tảng đã có, thì việc xây dựng các ứng dụng áp dụng kỹ thuật xử lý tín hiệu số tác động lên file âm thanh số không phải là hiếm, nó đã được nhiều tổ chức, cá nhân nghiên cứu và cũng đã cho ra trên thị trường nhiều phần mềm hữu ích phục vụ cho một số công việc, chức năng cụ thể

3 Chủ đề luận văn

Trang 5

Trên cơ sở lý thuyết đã có, nhận xét rằng nội dung một bản nhạc là bao gồm tập các nốt nhạc (ký âm) được bố trí theo trật tự trong khuôn nhạc, kèm theo là những ký hiệu mô tả cho giai điệu, nhịp, phách, của bản nhạc đó

Hình minh họa: một bản nhạc gồm tập các nốt nhạc

Dựa trên tập nốt nhạc trong bản nhạc, các nhạc cụ được dùng khi phát một bản nhạc

sẽ tạo thành một sóng âm thanh trong không khí mà tai người cảm nhận được, các thiết bị điện tử dùng kỹ thuật lấy mẫu và lượng tử hóa lưu sóng âm đó vào trong máy tính

Hình minh họa: file nhạc mô tả sóng âm của bản nhạc được phát

Âm thanh đã được số hóa, bằng cách áp dụng các kỹ thuật xử lý tín hiệu số trên file

âm thanh này, phân tích ngược tìm lại các nốt nhạc của bản nhạc gốc ban đầu Kết quả được đem so sánh với cơ sở dữ liệu gồm các bản nhạc để tìm ra tên bài hát Đây chính là nội dung

mà luận văn sẽ trình bày

Vậy với đề tài: “Nhận dạng bản nhạc dựa trên việc phân tích ký âm” thì nhiệm vụ chính là đi tìm hiểu lại các kỹ thuật xử lý tín hiệu số, và cấu trúc định dạng của một vài định

Trang 6

dạng âm thanh số được lưu trữ trong máy tính, ưu nhược điểm của chúng Sau đó sẽ xây dựng một chương trình sử dụng ngôn ngữ lập trình C#) nhận dạng một bản nhạc cụ thể Nội dung chính sẽ đề cập đến những phần sau:

- Xây dựng cơ sở dữ liệu bao gồm các file 3t từ file midi

- Áp dụng kỹ thuật xử lý tín hiệu số (DFT), cụ thể dùng thuật toán biến đổi nhanh FFT, tác động lên dữ liệu đầu vào là file thu âm, phân tích phổ đầu ra tìm tần số cơ bản

- Nhận dạng tìm tên bài hát dựa trên cơ sở dữ liệu và mảng các tần số cơ bản thu được

Trang 7

Ví dụ: Tín hiệu âm thanh là sự biến thiên của áp suất theo thời gian P(t) hoặc cũng

có thể coi tín hiệu âm thanh là sự biến thiên áp suất theo không gian P(x,y,z)

1.1.2 Phân loại tín hiệu

a Phân loại theo biến độc lập:

- Tín hiệu liên tục theo thời gian: là tín hiệu có biến thời gian liên tục (nhận mọi giá trị trong một khoảng giá trị nào đó)

- Tín hiệu rời rạc: là tín hiệu có biến độc lập thời gian chỉ nhận một số giá trị(Ví dụ: Các chỉ số thị trường chứng khoán, các số liệu khí tượng…) Nghĩa là tín hiệu có thể biểu diễn bằng một dãy số, hàm tín hiệu chỉ có giá trị xác định ở những thời điểm nhất định Tín hiệu rời rạc (còn được gọi là tín hiệu lấy mẫu) thu được bằng cách lấy mẫu tín hiệu liên tục

b Phân loại theo biên độ:

- Tín hiệu liên tục theo biên độ: là tín hiệu mà hàm biên độ nhận bất kỳ giá trị nào Ví dụ: Hàm x(t) = sin(t) nhận mọi giá trị trong khoảng [-1,1]

- Tín hiệu rời rạc theo biên độ hay còn gọi là tín hiệu được lượng tử hoá: là tín hiệu mà hàm biên độ chỉ nhận các giá trị nhất định Ví dụ: x(t) = 0 với t < 0 và x(t)

= 1 với t ≥ 0

1.1.3 Định nghĩa tín hiệu số

Từ đó ta có định nghĩa tín hiệu số: Tín hiệu số (Digital Signal) là tín hiệu có biên độ

và thời gian rời rạc

Trang 8

x32

-101

-2-3

− Phân loại hệ xử lý theo tín hiệu vào và tín hiệu ra:

+ Hệ rời rạc: là hệ xử lý tín hiệu rời rạc

+ Hệ tương tự: là hệ xử lý tín hiệu tương tự

1.2 Xử lý tín hiệu số (DSP- Digital signal processing)

Xử lý tín hiệu số là việc xử lý trên những tín hiệu đã được biểu diễn dưới dạng chuỗi

số Các phép xử lý DSP chuẩn cơ bản là : FFT, lọc, decimation, interpolation (nội suy), convolution (tích chập),…

Việc phân tích và thiết kế của các hệ thống tuyến tính đã được thực sự đơn giản hóa bởi các phép biểu diễn trong miền tần số của cả tín hiệu và hệ thống Trong đó biến đổi Fourier đóng vai trò quan trọng trong việc biểu diễn các tín hiệu và hệ thống rời rạc theo thời gian

Trang 9

1.2.1 Phép biến đổi Fourier với tín hiệu liên tục

Một tín hiệu liên tục được xây dựng trên cơ sở là tập hợp của các sóng hình sin có tần số, và chu kỳ khác nhau Phép biến đổi Fourier với tín hiệu liên tục là đi phân tích tín hiệu tổng hợp này thành các thành phần tín hiệu cơ bản cấu thành nên chúng Vì vậy với tín hiệu liên tục tuần hoàn theo thời gian thì kết quả của phép biến đổi Fourier sẽ cho ra một sóng hình sin có tần số tương ứng với tần số của tín hiệu đầu vào Với tín hiệu liên tục không tuần hoàn thì ta có thể xếp chồng tín hiệu không tuần hoàn để tạo thành một tín hiệu liên tục tuần hoàn với chu kỳ là vô cùng lớn, vì thế kết quả của phép biến đổi Fourier bao gồm nhiều các thành phần con, mỗi thành phần mang một tần số cơ sở, và khi ta kết hợp tập các tần số cơ sở này sẽ cho ra lại tín liệu liên tục như ban đầu

Hình 1.1: Kết quả phép biến đổi Fourier với tín liệu liên tục được biểu diễn sang miền tần số Như vậy một tín hiệu liên tục bất kì có thể được phân tích thành những thành phần tần số cơ bản cấu thành nên chúng, với tín hiệu số được lấy mẫu và lượng tử hóa từ tín hiệu liên tục đó, thì cũng với phương pháp biến đổi Fourier trên tín hiệu số này ta cũng tìm được những thành phàn cơ sở, sau đây sẽ nói cụ thể hơn về phép biến đổi Fourier tác động lên tín liệu rời rạc

1.2.2 Biến đổi Fourier rời rạc (DFT - Discrete Fourier Transform)

Như ta đã biết thì DFT được sử dụng rộng rãi trong quá trình tính toán sự đánh giá phổ, các hàm tự tương quan và việc cài đặt các bộ lọc số, Đây là phép biến đổi Fourier

Trang 10

rời rạc của tín hiệu x(n) có độ dài hữu hạn và có trục tần số cũng được rời rạc hóa Trong đó tín hiệu x(n) có độ dài hữu hạn là tín hiệu có giá trị khác 0 trong một khoảng thời gian nào

đó và chúng bằng 0 trong khoảng còn lại

Với x(n) được dùng như là một chu trình của tín hiệu, ta có thể xây dựng tín hiệu

xp(n) tuần hoàn với chu kỳ N bằng cách xếp chồng tuần hoàn x(n):

k víi0

10

10

)

(

1 1 0

Trong đó:

Ví dụ minh họa phép biến đổi Fourier rời rạc:

- Đầu vào phép biến đổi là tín hiệu rời rạc:

- Kết quả sau khi biến đổi Fourier được mô tả dưới dạng tập các sóng sin và cosin, mỗi sóng sin, cosin đều có một tần số cụ thể:

Trang 11

Tóm lại, Phép biến đổi Fourier đã biến đổi một tín hiệu trong miền thời gian sang miền tần số, dựa vào kết quả này mà tùy ứng dụng sẽ xử lý trên kết quả đầu ra theo mục

đích riêng nào đó Ở đây chúng ta sẽ lấy ra tần số cơ bản của mỗi lần biến đổi Fourier

1.2.3 Hàm cửa sổ

Như ta đã biết, phép biến đổi Fourier rời rạc DFT tác động trên tín hiệu có độ dài hữu hạn, nên cần thiết phải hạn chế độ dài đối với các tín hiệu có độ dài vô cùng hoặc quá lớn để có thể nghiên cứu phổ của chúng Để làm điều này ta thường dùng hàm cửa sổ, tức là nhân tín hiệu x(n) với cửa sổ w(n-n0) để nhận được một đoạn xN(n) trong khoảng n0 tới

n0+N-1 để phân tích

Trang 12

x N (n) = x(n) w(n- n 0 ) =

l¹icßn nvíi0

1)

(n n0 n n0 N x

(1.3) Việc nhân tín hiệu với hàm cửa sổ theo thời gian tương đương với việc nhân chập phổ của tín hiệu x(n) với phổ của cửa sổ:

Một số hàm cửa sổ thường được sử dụng: cửa sổ Hamming, Blackman,…

Kết quả nhận được từ tín hiệu sau khi đã cho qua cửa sổ không những phụ thuộc vào dạng cửa sổ mà còn phụ thuộc vào số điểm tín hiệu phân tích N, cũng như vị trí cửa sổ được đặt ở đâu, tức là tìm n0 phù hợp Ta phải chọn vị trí cửa sổ sao cho cửa sổ bao trùm lên phần quan trọng của tín hiệu và bỏ qua những chổ có biên độ nhỏ, và phải chọn N sao cho một chu kỳ xp(n) là xấp xỉ của x(n) với sai số cho phép

1.2.4 Phép biến đổi nhanh Fourier (FFT - Fast Fourier Transform)

Đây thực chất là DFT nhưng với một thuật toán nhanh, gọn và hiệu quả FFT đã tạo

ra một bước ngoặc mới và thực sự đóng vai trò hết sức quan trọng trong việc phân tích, thiết

kế và thực hiện các thuật toán xử lý tín hiệu số cũng như tín hiệu tương tự Tuy có nhiều thuật toán tính FFT khác nhau, nhưng nguyên tắc chung của tất cả các thuật toán này là dựa trên việc phân tích cách tính DFT của một dãy N số (gọi tắt là DFT N điểm) thành các phép tính DFT của các dãy nhỏ hơn, trong đó số phép tính tỷ lệ với N.log(N)

Để đánh giá hiệu quả của thuật toán, ta sử dụng số phép tính nhân và cộng phức Số phép nhân và cộng phức liên quan trực tiếp đến tốc độ tính toán khi thuật toán được thực hiện trên các máy tính hay là các bộ xử lý chuyên dụng

1.2.4.1 Hiệu quả tính toán của FFT

Công thức tính DFT của dãy dài N:

Trang 13

Qua đây ta thấy để tính mỗi giá trị DFT ta cần N phép nhân và cộng phức Để tính toàn bộ DFT ta cần phép nhân và cộng phức, hay nói cách khác công thức có độ phức tạp O( ) do đó với các giá trị N lớn phương pháp tính trực tiếp sẽ tốn khá nhiều thời gian, sau đây ta sẽ xem xét giải thuật để tính biến đổi Fourier rời rạc của tín hiệu rời rạc có chiều dài N x(n) với độ phức tạp nhỏ hơn

Đến đây nhận xét rằng ta gặp lại 2 bài toán tính biến đổi Fourier rời rạc của 2 dãy con x(2r) và x(2l+1) với chiều dài N/2 Sử dụng các kỹ thuật đệ quy bài toán biến đổi Fourier rời rạc sẽ được giải quyết với độ phức tạp O(NlogN) nhỏ hơn rất nhiều so với việc

ta tính toán trực tiếp công thức ban đầu độ phức tạp lên tới O( )

1.2.4.3 Thuật toán Cooley–Tukey

Năm 1965, Cooley và Tukey đã tìm ra thuật toán tính DFT một cách hiệu quả gọi là thuật toán FFT Thuật toán Cooley-Tukey được sử dụng phổ biến Nó đưa việc tính DFT

Trang 14

của dãy N=N1*N2 điểm về việc tính toán DFTs với kích thước nhỏ hơn là N1,N2, công việc này được thực hiện một cách đệ quy

Xuất phát từ công thức DFT ban đầu cho đầu vào là dãy N mẫu:

Chuyển việc tính toán DFT N điểm về 2 lần DFTs trên N/2 bằng cách chia dãy N thành 2 dãy con có độ dài N/2, và một dãy sẽ chứa các mẫu có chỉ số chẵn n=2m, và mảng còn lại chứa các mẫu ở vị trí chỉ số lẻ n=2m+1:

Với là những phần được xem như phần thực và phần ảo của đầu ra FFT tại mỗi mẫu ( )

Tuy nhiên, do tính chất đối xứng của phép DFT ở đầu ra:

Nên suy ra công thức FFT mới:

Trang 15

Ví dụ 1.1 : FFT một dãy 8 mẫu

Thay vào việc tính DFT cho 8 mẫu đầu vào ta thay bằng cách tính nhanh FFT với 2 lần tính DFT cho 8/2=4 mẫu Lần DFT đầu tiên sẽ cho các mẫu chẵn như hình vẽ, kết quả đầu ra được đặt tên là E[i], với i chạy từ 0 8/2-1=3, Lần DFT tiếp theo với đầu vào là các mẫu ở vị trí lẽ, kết quả đầu ra là mảng O[i], với i: 0 3 Sau đó áp dụng công thức (1.5), tính kết quả đầu ra của phép DFT cho mảng 8 mẫu đầu vào, thể hiện qua X[i], i:0 7

Trang 16

Mã giả của thuật toán được mô tả như sau:

 Khái niệm phổ tín hiệu:

Người ta chứng minh được rằng một tín hiệu bất kì có thể phân hủy hay tổng hợp từ các sóng sin có biên độ và tần số khác nhau Đặc trưng của các sóng sin được thể hiện bởi tần số, biên độ và pha, vì vậy muốn thể hiện trên trục đồ thị tập hợp các sóng sin tương đương với tín hiệu thì phải vẽ lên một trục tọa độ mà một cái là tần số còn cái kia là biên độ hoặc pha, tín hiệu tương đương này người ta gọi là phổ biên độ (phổ) hoặc phổ pha Trục f ở đây thể hiện các tần số của sóng sin cần có để có thể tổng hợp ra một tín hiệu tương đương với tín hiệu gốc theo phép biến đổi Fourier

Trang 17

Xét cho cùng phổ là một công cụ toán học như tích phân, đạo hàm đây là công cụ dùng để giải quyết một số bài toán mà các công cụ truyền thống khó khăn trong việc sử dụng Chẳng hạn như trong bài toán phân tích phổ của tín hiệu âm thanh ta có thể rút trích được biên độ, tần số cơ bản của một nốt nhạc được phát

Như vậy dựa vào phổ của tín hiệu mà ta có thể rút trích một số thông tin cần thiết phục vụ cho mục đích cụ thể nào đó

 Ứng dụng DFT phân tích phổ của tín hiệu:

Để tìm phổ của tín hiệu (cả liên tục và rời rạc), ta cần phải biết giá trị của tín hiệu tại tất cả các thời điểm Tuy nhiên trong thực tế, do ta chỉ quan sát được tín hiệu trong một khoảng thời gian hữu hạn nên phổ tính được chỉ là xấp xỉ của phổ chính xác DFT được ứng dụng rất hiệu quả trong việc tính toán phổ xấp xỉ này

Trong thực tế, nếu tín hiệu cần phân tích là tín hiệu liên tục, trước hết ta cho tín hiệu

đó đi qua một bộ lọc chống chồng phổ rồi lấy mẫu với tần số Fs ≥2B , với B là băng thông của tín hiệu sau khi lọc Như vậy, tần số cao nhất chứa trong tín hiệu rời rạc là Fs/2 Sau đó,

ta phải giới hạn chiều dài của tín hiệu trong khoảng thời gian T0 = LT, với L là số mẫu và

T là khoảng cách giữa hai mẫu Cuối cùng, ta tính DFT của tín hiệu rời rạc L mẫu Muốn tăng độ phân giải của phổ rời rạc, ta tăng chiều dài của DFT bằng cách bù thêm số 0 vào cuối tín hiệu rời rạc trước khi tính DFT

Trang 18

Chương 2 GIỚI THIỆU CHUNG VỀ ÂM THANH SỐ

2.1 Âm thanh và đặc tính của âm thanh

2.1.1 Sóng âm và cảm giác âm

Khi một vật dao động về một phía nào đó, nó làm cho các lớp không khí liền trước bị nén lại, và lớp không liền sau dãn ra Sự nén và dãn không khí như vậy lặp đi lặp lại một cách tuần hoàn nên đã tạo ra trong không khí một sóng đàn hồi Sóng này truyền tới tai, nén vào màng nhĩ khiến cho màng nhĩ cũng dao động với cùng tần số Khi màng nhĩ dao động, các vị trí phân biệt của màng nhĩ trên bề mặt giống như nó chuyển động về trước hay sau đáp ứng với các sóng âm vào Khi cùng một thời điểm, ta nghe thấy nhiều âm, thì mọi âm thanh phân biệt này được trộn với nhau một cách tự nhiên trong tai giống như một hình mẫu đơn của áp suất không khí thay đổi Tai và óc làm việc cùng nhau để phân tích tín hiệu này ngược lại thành những cảm giác về âm riêng biệt

2.1.2 Độ cao của âm

Độ cao của âm là một đặc tính sinh lý của âm và nó phụ thuộc vào một đặc tính của

âm là tần số Những âm có tần số khác nhau, tạo nên cảm giác về các âm khác nhau: âm có tần số lớn gọi là âm cao hay âm thanh; âm có tần số nhỏ gọi là âm thấp hay âm trầm Sự cảm nhận về mức độ to nhỏ của âm thanh được gọi là cường độ (pitch) Và cường độ có liên quan rất gần với một thuộc tính về mặt vật lý gọi là tần số (frequency)

2.1.3 Âm lượng của âm (độ to của âm)

 Năng lượng của âm

Giống như các sóng cơ học, sóng âm cũng mang năng lượng sóng tỷ lệ với bình phương biên độ sóng

Và cường độ âm chính là năng lượng được sóng âm truyền trong một đơn vị thời gian qua một đơn vị diện tích đặt vuông góc với phương truyền (đơn vị W/m2)

Tuy nhiên, để cảm nhận một âm, ta không đánh giá qua giá trị tuyệt đối của cường

độ âm I, mà xét theo mức cường độ âm L

Tức là: L(B) = lg(I/I ) , với I là một giá trị chuẩn nào đó

Trang 19

Thông thường, L lấy đơn vị là deciben (ký hiệu là dB) Với L=1dB (I lớn gấp 1,26 lần I0) là mức cường độ nhỏ nhất mà tai ta có thể phân biệt được

 Âm lượng của âm

Để có thể tạo ra cảm giác âm, cường độ âm phải lớn hơn một ngưỡng nào đó Với các tần số trong khoảng 1000-5000Hz, ngưỡng nghe khoảng 10-12W/m2 Với tần số 50Hz thì ngưỡng nghe lớn gấp 105 lần Và mức âm lượng của âm phụ thuộc vào cả cường độ âm

và tần số

2.1.4 Âm sắc của âm

Âm sắc là một đặc tính sinh lý của âm và nó được cấu thành trên cơ sở các đặc tính vật lý của âm là tần số và biên độ Đây là một đặc trưng riêng của từng nguồn phát âm Khi một nguồn phát ra một âm có tần số f1, thì đồng thời cũng phát ra các âm có tần số f2=2* f1,

f3=3* f1

Âm có tần số f1 gọi là âm cơ bản hay hoạ âm thứ nhất Các âm có tần số f2, f3, gọi

là các hoạ âm thứ hai, thứ ba Tuỳ theo đặc tính của từng nguồn phát âm mà tạo ra các hoạ

âm khác nhau với biên độ hay khoảng kéo dài khác nhau Do đó âm do một nguồn âm phát

ra là sự tổng hợp âm cơ bản và các hoạ âm Nên, mặc dù có cùng tần số f1 của âm cơ bản nhưng đường biểu diễn không còn là một đường hình sin đơn thuần mà là một đường phức tạp có chu kỳ

2.2 Âm thanh số

Dạng chung nhất của các quá trình thu âm thanh số là dạng điều biến mã xung (PCM

- Pulse Code Modulation) Đây là dạng mà phần lớn các đĩa compact và các file Wave sử dụng Trong phần cứng thu thanh dạng PCM, một microphone chuyển dạng biến đổi áp suất không khí (các sóng âm thanh) thành dạng biến đổi điện áp Sau đó một bộ chuyển đổi tương tự-số đo (mẫu hoá) dòng điện áp tại các quãng thời gian đều nhau Ví dụ như, trong một đĩa compact có tới 44,100 mẫu được lấy mỗi giây Mỗi điện áp mẫu hoá nhận được sẽ được chuyển đổi sang dạng số nguyên 16-bit Một đĩa CD chứa 2 kênh dữ liệu: một cho tai trái, và một cho tai phải (đối với âm thanh dạng stereo) Hai kênh được thu thanh độc lập,

Trang 20

nhau trái, phải, trái, phải, ) Dữ liệu nhận được từ quá trình thu thanh PCM là một hàm theo thời gian

2.2.1 Nguyên lý

Về cơ bản, âm thanh tương tự và số là khác nhau, nên ta luôn bị mất thông tin khi làm phép chuyển đổi giữa chúng Khi được số hoá, sóng âm thanh được biểu diễn như là một chuỗi các số (được gọi là các mẫu), mà chúng biểu diễn áp suất không khí hay tín hiệu điện tại các thời điểm kế tiếp nhau theo thời gian Khi mẫu hoá một tín hiệu tương tự, ta luôn gặp phải 2 vấn đề: thứ nhất, mỗi giá trị kế tiếp trong dạng biểu diễn dạng số là một quãng xác định nào đó của thời gian, và mỗi khối có một độ rộng xác định; thứ hai là các số

số hoá là rời rạc Chỉ có một số xác định các độ cao có thể cho mỗi khối Theo hình vẽ, ta thấy độ cao các khối không ăn khớp với đường tín hiệu gốc

TÝn hiÖu t−¬ng tù TÝn hiÖu sè

Hình 2.1 : Chuyển đổi tín hiệu sang dạng các mẫu số Đây là hai lỗi cơ bản trong tín hiệu âm thanh số Lỗi này có thể được kiểm soát bằng cách thay đổi khuôn dạng chi tiết của dạng biểu diễn âm thanh, nhưng không thể loại bỏ được hoàn toàn Chính vì vậy, tuỳ theo ứng dụng ta sẽ phải chấp nhận một số lỗi nhất định

Và các hệ số khác như kích thước dữ liệu hay tần số xử lý yêu cầu ta phải chấp nhận một sai

số lớn hơn từ một số nguồn để có thể giảm hơn nữa các sai số khác

2.2.2 Tần số và cường độ

Tần số của một sóng hình sin là khoảng thời gian mà nó dùng cho một chu kỳ hoàn chỉnh Tần số được tính theo hertz (Hz), là số các chu kỳ hoàn chỉnh mà chúng xuất hiện

Trang 21

trong một giây Tai người có thể nghe thấy các sóng hình sin có tần số dao động trong khoảng 30 Hz tới 20.000 Hz Những dao động trong miền tần số này gọi là dao động âm hay âm thanh

Chu kỳ (periodic) là nghịch đảo của tần số, là khoảng thời gian mà tín hiệu lặp lại một cách chính xác Mặc dù rất nhiều hàm toán học được sử dụng để làm việc với âm thanh dựa trên các tín hiệu lặp một cách lý tưởng, đặc biệt là phép biến đổi Fourier, nhưng lại có rất ít các âm thanh thực là thực sự tuần hoàn Trong thực tế, tần số chỉ có ý nghĩa trực tiếp cho các sóng hình sin

Tuy nhiên, mọi âm thanh đều có thể làm vỡ thành một tập các sóng hình sin Ta có thể tạo bất cứ âm thanh nào bằng cách thêm vào một tập các sóng hình sin phù hợp, cũng như có thể chia các âm thanh phức tạp thành các sóng hình sin riêng biệt, đơn giản

Ngoài ra, trong quá trình thu thanh số hoá, cần chú ý tới biên độ đỉnh để có thể tránh

sự méo cắt (mà nó xuất hiện khi biên độ đỉnh vượt quá khuôn dạng lưu trữ) trong khi giữ tỷ

lệ tín hiệu/nhiễu ở mức cao nhất có thể

2.3 Định dạng dữ liệu

Quá trình chuyển đổi âm thanh tương tự sang dạng âm thanh số cũng như việc lưu trữ

âm thanh số liên quan tới 2 vấn đề:

 Lấy mẫu (sampling): Quá trình lấy mẫu liên quan tới việc tính toán một cách tuần hoàn tín hiệu tương tự, và sử dụng các mẫu này thay cho tín hiệu gốc trong quá trình xử lý

 Lượng tử hoá (quantization): Quá trình xử lý các mẫu tương tự với độ chính xác không xác định và làm tròn chúng

2.3.1 PAM (Pulse Amplitude Modulation)

Trong thực tế, các bộ chuyển đổi DAC và ADC thường xuyên sử dụng dạng PAM (Pulse Amplitude Modulation) như một khuôn dạng trung gian, trong đó âm thanh được coi như một chuỗi các xung, và biên độ của mỗi xung (độ cao) biểu diễn độ mạnh của âm thanh tại điểm đó

Trang 22

TÝn hiÖu t−¬ng tù Xung PAM

Hình 2.2: PAM

2.3.2 PWM (Pulse Width Modulation)

Ngoài ra, ta còn dạng biểu diễn khác là PWM (Pulse Width Modulation), cũng giống như PAM, đây là dạng biểu diễn mỗi mẫu như một xung, nhưng nó sử dụng độ rộng hay khoảng kéo dài của xung (thay cho biên độ) để biểu diễn độ mạnh của âm thanh

TÝn hiÖu t−¬ng tù Xung PWM

Hình 2.3: PWM

2.3.3 PCM (Pulse Code Modulation)

Đây là dạng biểu diễn mỗi mẫu như một chuỗi các xung, mà các xung đó biểu diễn

mã nhị phân (code binary) của nó Nhưng biểu diễn dạng này rất khó xác định đâu là điểm bắt đầu và kết thúc của mỗi mã Tuy nhiên, không khó khăn để có thể khắc phục điều này,

ví dụ như ta có thể xây dựng các mã theo một dạng riêng để không có mã nào chứa 3 số 1 liên tiếp (111) và sau đó chèn 111 vào tín hiệu tại điểm bắt đầu của mỗi mã Trong bộ nhớ máy tính, các mã nhị phân liên tiếp được lưu trữ như các số Thông thường, dữ liệu âm thanh dạng PCM được lưu trữ với 8 hay 16 bits (1 hay 2 bytes) mỗi mẫu

Trang 23

âm thanh đã được lấy mẫu có thể tạo lại một cách chính xác bất cứ âm thanh nào mà tần số của nó nhỏ hơn một nửa tần số lấy mẫu Do đó, một nửa tần số lấy mẫu thường xuyên được tham chiếu như một giới hạn Nyquist (Nyquist limit)

Thông thường, nên làm việc trên các file âm thanh với dạng dữ liệu không nén Một khi đã nén, chương trình xử lý sẽ phải giải nén mỗi khi sử dụng, và với bất cứ lưu đồ (giải thuật) nén nào cũng đều gây nguy hiểm tới chất lượng âm thanh, không kể đến thời gian dùng để giải nén Và phạm vi đề tài chỉ xử lý trên những file âm thanh dạng không nén

2.4 Nhạc số

Nhạc số là một phần nhỏ nằm trong phạm vi định nghĩa của âm thanh số, nói đến âm thanh số là đề cập đến tất cả các loại âm thanh trong tự nhiên mà đã được lưu trữ thành một dãy số trong máy tính, còn nhạc số chỉ đề cập đến một loại âm thanh đó là âm nhạc, vì thế

âm thanh số có những tính chất thuộc tính gì thì nhạc số cũng được thừa hưởng những tính chất thuộc tính ấy, như đã đề cập ở phần trên

Một bản nhạc có thể được chơi bởi nhiều nhạc cụ tại cùng một thời điểm, tùy mỗi nhạc cụ sẽ cho ra những âm thanh khác nhau, và các sóng âm thanh này xuất hiện tại cùng

Trang 24

một thời điểm trong một không gian giống nhau nên được tổng hợp lại với nhau tạo thành sóng âm của bản nhạc hoàn chỉnh

Ví dụ một bản nhạc chỉ gồm một nốt nhạc La kéo dài trong thời gian 2 (s) được chơi bởi hai loại nhạc cụ: đàn ghi ta và kèn Harmonica, mỗi nhạc cụ chơi riêng rẽ tạo ra những sóng âm như sau:

- Sóng âm được tạo ra bởi đàn ghi ta:

Trang 26

Như vậy việc tổng hợp nhạc trong tự nhiên còn phụ thuộc vào số lượng và loại thiết

bị nhạc cụ dùng để chơi bản nhạc đó, cùng một bản nhạc nhưng với loại nhạc cụ khác nhau,

số lượng nhạc cụ khác nhau thì sẽ cho ra một kết quả file âm thanh số được lưu trong máy tính là khác nhau

Ngày xưa một bản nhạc khi được phát bởi nhiều nhạc cụ, công việc để lưu bản nhạc

đó vào trong máy tính được thực hiện bằng kỹ thuật lấy mẫu và lượng tử hóa như đã đề cập, nhưng nhược điểm của kỹ thuật này là dung lượng lưu trữ file âm thanh rất lớn, khó khăn cho việc truyền tải và lưu thông chúng trên mạng Vì thế sau đó có nhiều kỹ thuật mới ra đời nhằm khắc phục nhược điểm trên Và kỹ thuật được xem là tốt nhất được xây dựng dựa trên ý tưởng là lưu bản nhạc dưới dạng các nốt nhạc của từng loại thiết bị chơi nhạc, mỗi nốt nhạc được xem như là một nốt tần số Kỹ thuật này được thể hiện rõ trong phần lưu trữ file âm thanh theo định dạng MIDI Và mỗi kỹ thuật sẽ cho những tên gọi khác nhau dựa theo khuôn dạng lưu trữ của nó

Trang 27

thời gian truyền lâu

 Dạng nén: các file Shock wave, Quick Time, MPEG, mp3 mang bản chất là lưu âm thanh theo dạng tự nhiên nhưng đã loại bỏ những thành phần tần số không cần thiết, muốn phát lại cần có phần mềm đặc biệt Ưu điểm là kích thước nhỏ, nhưng mất thời gian giải nén, và chất lượng giảm

 Dạng MIDI: khuôn dạng đơn giản, kích thước nhỏ, thuận lợi trong việc soạn thảo âm thanh, nhưng chất lượng phụ thuộc vào thiết bị

Nói chung, các file âm thanh số được lưu trữ trong một khuôn dạng tương ứng với header của loại đó Một số khuôn dạng như sau:

- AU: là các file có đuôi au Hỗ trợ các file dạng mono và stereo với độ phân giải từ 8bit tới 16bit, tần số lấy mẫu trong khoảng 8KHz tới 48KHz Nguyên gốc trên nền UNIX, song cũng hỗ trợ bởi các ứng dụng PC và MAC

- AIFF: là các file có đuôi aif (Audio Interchange File Format) Hỗ trợ file âm thanh không nén dạng mono, stereo hoặc khuôn dạng đa kênh (multichannel) Độ phân giải và tần

số lấy mẫu trong phạm vi rất rộng, đạt tới chất lượng CD (16bit, lấy mẫu 44KHz) Nguyên gốc trên nền Macintosh nhưng cũng hỗ trợ trên PC và UNIX

- WAV: là các file có đuôi wav (Waveform Audio) Hỗ trợ dạng mono, stereo, hoặc khuôn dạng đa kênh với tần số lấy mẫu 44KHz, 16bit mẫu Khuôn dạng WAV nguyên gốc trên nền Windows, hiện nay đây là dạng file âm thanh phổ biến trên Internet WAV tương

tự cấu trúc aif nhưng khác phần đầu thông tin (header)

- MID: là các file có đuôi mid (Musical Instrument Data Interchange) Hỗ trợ dữ liệu Standar MIDI File (SMF) trên hệ thống trang bị MIDI playback (với một số khuôn dạng âm thanh tổng hợp)

Vì phạm vi đề tài chỉ đề cập đến 2 khuôn dạng là wav và mid nên sau đây chỉ trình bày chi tiết về cấu trúc của 2 khuôn dạng trên

Trang 29

Chương 3 KHUÔN DẠNG LƯU TRỮ TỆP ÂM THANH

3.1 File định dạng Wave (*.wav)

Đây là dạng của Microsoft Windows Các file Wave của Windows ứng dụng cho cả

2 dạng file â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 file 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 file â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 file 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 file chung được gọi là Resource Interchange File Format (RIFF) File 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à: file Wave (hay Wav) lưu trữ âm thanh; và file AVI lưu trữ các hình ảnh video

3.1.1 Đặc tính chung của các file Riff và Iff

Do file Wave là một dạng đặc biệt của file 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 file 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

Trang 30

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 file 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

3.1.2 Cấu trúc tổng quát của một file 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 File 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 File 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 file, có thể lên tới 4GB

Một file Wave là một dạng đặc biệt của file Riff, và mọi file 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 File 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 file 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 file Wave như sau:

R I F F KÝch th−íc W A V E Khóc fmt Khóc data

C¸c bytes kÝch th−íc

Hình 3.1: Khuôn dạng file Wave

Do có rất nhiều file Wave có cùng cấu trúc cơ sở này, nên nhiều chương trình xử lý các file 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

Trang 31

các file 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 file Wave cơ bản:

Bảng 3.1: Cấu trúc file Wave File 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

3.1.3 Đọc file 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 file 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 file như vậy là đọc lướt toàn bộ file 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ộ file ngay lập tức Đặc biệt, nếu ta

Trang 32

quan tâm tới quá trình truyền một file 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ộ file 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 file 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 file Riff (như trong mọi dạng IFF-derived file), mỗi khúc chiếm giữ một số bytes trong file 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ả

Trang 33

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 file Riff nào, chứ không phải chỉ trong các file 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

3.2 File định dạng MIDI (*.mid)

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

Trang 34

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

3.2.1 Cấu trúc chung của file MIDI chuẩn

Một file 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 file 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 track (rãnh) đơn Khúc MThd xuất hiện tại phần đầu của mọi file MIDI, và đây là dấu hiệu để định danh một file MIDI chuẩn, tiếp theo sau là số khúc MTrk được định nghĩa trong khúc MThd

3.2.2 Đọc file MIDI

Khúc MIDI Header (Header Chunk)

Nội dung khúc Header chứa các thông tin của bài hát gồm: định dạng file midi, số track (số khúc MTrk), và khuôn dạng thời gian Sau đây là nội dung của khúc MIDI MThd:

Bảng 3.3: Cấu trúc khúc MThd của file MIDI

Có 3 loại file MIDI, chúng được phân loại tuỳ theo cách xử lý các Track :

 File dạng 0 chỉ chứa duy nhất một track Một cách rõ ràng, đây là file dễ nhất để có thể phát, nên đây là dạng thông dụng cho các file quảng cáo

 File dạng 1 chứa rất nhiều Track 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 file dạng 1 phải bằng cách nào đó san phẳng dữ liệu

Trang 35

thành các dòng sự kiện đơn trước khi phát

 File dạng 2 chứa nhiều Track nhưng không thừa nhận bất cứ sự liên hệ nào giữa các Track Nói chung, các file dạng 2 là không phổ biến

 Các Track MIDI

Chú ý rằng một Track là khác so với một kênh MIDI Mặc dù đây là dạng chung cho các file multi-track để có thể phát mỗi Track 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 Track tuỳ ý để có thể phát các Track trên các kênh khác nhau theo bất cứ kiểu mẫu nào

Mỗi Track MIDI là một danh sách các sự kiện (Event), mà mỗi sự kiện có một “delta time” đặt trước Mỗi khúc trong một file MIDI có một độ dài đã được ấn định, dựa vào đó ta

có thể dễ dàng quản lý được khi nào thì một khúc là kết thúc

Cấu trúc chung của một Track:

Trang 36

Trong file định dạng midi, giá trị delta time được lưu trữ theo một khuôn dạng đặc biệt, người ta có thể giành riêng 4 byte cho phần mô tả deltal time nhưng vì để giảm kích cỡ tập tin MIDI nên delta time được lưu trữ với kích cỡ thay đổi, có chiều dài từ 1 đến 4 byte Cách lưu trữ này được gọi là: variable-length format

 Variable-length format

Định dạng biến có độ dài thay đổi được lưu trữ như sau: Mỗi byte chỉ sử dụng 7 bit thấp

để chứa số liệu Bit cao còn lại được thiết lập là 1, trừ byte cuối

Ví dụ 3.1: cách lưu trữ theo định dạng Variable-length

 Các Event MIDI (Sự kiện MIDI)

Một Event 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 số mã hoá xếp hàng từ 0 tới 15 và 0 tới 127 một cách tương ứng

Các Event MIDI được chia thành 3 loại: MIDI Control Events (Event điều khiển), System Exclusive Events (Event hệ thống) and Meta Events

 MIDI Control Events: bao gồm các sự kiện điều khiển để phát lại một bản nhạc mà file midi định nghĩa, ví dụ như việc bật hay tắt một nốt nhạc (not on, not off),… cấu trúc được định nghĩa như bảng sau:

Trang 37

Delta Time Event Type Value MIDI Channel Đối số 1 Đối số 2 Variable-

length

Bảng 3.5 : Định dạng MIDI Control Events

Channel Aftertouch 0xD Aftertouch value Không sử dụng

Bảng 3.6 : Chi tiết các kiểu Event

 Meta Events: là các chỉ thị hay thông tin gửi đến phần mềm xử lý tập tin MIDI, Meta-event luôn bắt đầu bằng 1 byte FFh Byte thứ nhì cho biết loại meta-event, byte thứ ba cho biết chiều dài của dữ liệu liên quan Cấu trúc chung được mô tả như sau:

Bảng 3.7 : cấu trúc Meta Event

 System Exclusive Events: loại event này chỉ dành riêng của từng nhà sản xuất

và chỉ được xử lý trong các thiết bị của nhà sản xuất đó Các tín hiệu này bắt đầu bằng một

số hiệu riêng (ID Number) khác nhau đối với các nhà sản xuất khác nhau Đối với các thiết

bị nhận không nhận biết được thì event này sẽ được bỏ qua

Trang 38

variable-data bytes

Trang 39

Để giải quyết vấn đề đó, thì sự lựa chọn file định dạng midi là không thể chối bỏ, trong tất cả các khuôn dạng lưu trữ thì file dạng midi chiếm một dung lượng rất nhỏ, nhỏ hơn 100 lần so với file mp3, 1000 lần với file wav,…khi lưu trữ cùng một bài hát, với dung lượng nhỏ như vậy thì ta có thể tạo ra một cơ sở dữ liệu chứa hàng trăm đến hàng ngàn bài hát và khi thực hiện bước tìm kiếm sẽ giải quyết được vấn đề về tốc độ Điểm thứ 2 là về nội dung mà file midi lưu trữ, không giống như file wav, lưu trữ bài hát đã được play và lưu chúng dưới dạng các mẫu đã được lượng tử hóa từ sóng âm thanh, như vậy sẽ rất khó để ta biết được đâu là đặc trưng của bài hát( nốt nhạc nào và thơi gian tồn tại ), … trái lại, với file midi, dữ liệu mà file midi chứa đựng sẽ dễ dàng cho ta biết được các đặc trưng bài hát (ký

âm và thời gian), ví dụ như khi ta bắt gặp kiểu event là 0x90 thì ta sẽ biết được byte dữ liệu tiếp theo là tên nốt nhạc được phát, và thời gian tồn tại của chúng là khoảng delta time tiếp theo của event đứng phía sau nó,…

Như vậy với định dạng file midi là đáp ứng được những yêu cầu của ứng dụng, tuy nhiên bên cạnh đó có rất nhiều dữ liệu trong file midi là không cần thiết, dư thừa Chẳng hạn như ta chỉ cần lấy thông tin khi nào một nốt nhạc được bật lên, khi nào nó được tắt đi,

đó gọi là ký âm của bản nhạc, còn đối với những dữ liệu điều khiển chuyển kênh phát, các

Trang 40

tố nữa đó là sự rắc rối nằm ở delta time trong file midi, … Chính vì thế mà ta cần phải xây dựng một định dạng riêng cho cơ sở dữ liệu của mình dựa trên những ưu điểm sẵn có từ file midi Nói tóm lại, là ta sẽ rút trích những thông tin cần thiết từ file midi, đơn giản hóa những sự rắc rối trong file midi, ghi ra một file mới ( định dạng mới), và đặt tên file đó là

*.3t Cơ sở dữ liệu sẽ là tập các file bài hát theo định dạng *.3t

4.2 Cấu trúc file *.3t

Vì được xây dựng từ file midi nên cấu trúc cơ bản của file *.3t tương đối giống với file midi Cũng bao gồm 2 loại khúc: khúc Header và khúc MTrk Đầu mỗi file là khúc Header, tiếp sau đó là một dãy các khúc MTrk chứa dữ liệu đặc trưng của bài hát bao gồm tên nốt và thời gian tồn tại

 Cấu trúc khúc Header:

Phần Header được lấy lại từ file midi, chi tiết như sau:

Hình 4-1: Cấu trúc Header file *.3t

 Cấu trúc khúc MTrk:

Những thông tin được lưu trữ trong khúc MTrk được lấy từ khúc MTrk trong file midi, nội dung chỉ chứa tên nốt và thời gian được phát của nốt đó, ở đây ta loại bỏ sự rắc rối nằm trong phần delta time bằng cách ta tính toán giá trị delta time trong file midi ra một số thực rồi ghi số này ra file *.3t Với mỗi nốt nhạc trong file *.3t sẽ được giành ra 5 byte để chứa nó, byte đầu tiên là tên nốt, 4 byte tiếp theo là khoảng thời gian mà nốt này tồn tại từ lúc nó được phát lên Cấu trúc tổng quát của một khúc Mtrk được mô tả như sau:

Ngày đăng: 15/08/2014, 14:56

HÌNH ẢNH LIÊN QUAN

Hình minh họa: một bản nhạc gồm tập các nốt nhạc. - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Hình minh họa: một bản nhạc gồm tập các nốt nhạc (Trang 5)
Hình 1.1 –Tín hiệu số - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Hình 1.1 –Tín hiệu số (Trang 8)
Hình 1.1: Kết quả phép biến đổi Fourier với tín liệu liên tục được biểu diễn sang miền tần số       Như vậy một tín hiệu liên tục bất kì có thể được phân tích thành những thành phần  tần số cơ bản cấu thành nên chúng, với tín hiệu số được lấy mẫu và lượng - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Hình 1.1 Kết quả phép biến đổi Fourier với tín liệu liên tục được biểu diễn sang miền tần số Như vậy một tín hiệu liên tục bất kì có thể được phân tích thành những thành phần tần số cơ bản cấu thành nên chúng, với tín hiệu số được lấy mẫu và lượng (Trang 9)
Hình 2.1 : Chuyển đổi tín hiệu sang dạng các mẫu số - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Hình 2.1 Chuyển đổi tín hiệu sang dạng các mẫu số (Trang 20)
Hình 2.3: PWM - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Hình 2.3 PWM (Trang 22)
Hình 2.4: PCM - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Hình 2.4 PCM (Trang 23)
Bảng 3.1: Cấu trúc file Wave - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Bảng 3.1 Cấu trúc file Wave (Trang 31)
Bảng 3.2: Cấu trúc khúc fmt của file Wave - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Bảng 3.2 Cấu trúc khúc fmt của file Wave (Trang 32)
Bảng 3.3: Cấu trúc khúc MThd của file MIDI - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Bảng 3.3 Cấu trúc khúc MThd của file MIDI (Trang 34)
Bảng 3.4: Cấu trúc một Track trong file MIDI - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Bảng 3.4 Cấu trúc một Track trong file MIDI (Trang 35)
Bảng  3.6 : Chi tiết các kiểu Event. - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
ng 3.6 : Chi tiết các kiểu Event (Trang 37)
Bảng  3.5  : Định dạng MIDI Control Events. - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
ng 3.5 : Định dạng MIDI Control Events (Trang 37)
Bảng 3.8 : Cấu trúc System Exclusive Events. - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
Bảng 3.8 Cấu trúc System Exclusive Events (Trang 38)
Bảng  5-1: Nốt nhạc và tần số tương ứng. - Nhận dạng bản nhạc dựa trên việc phân tích ký âm
ng 5-1: Nốt nhạc và tần số tương ứng (Trang 47)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w