Làm cách nào để tự trích xuất nhạc từ trò chơi? Sử dụng FMOD trong trò chơi âm thanh

Văn hóa sửa đổi trò chơi có từ thời xa xưa. Tôi nhớ sớm nhất là Wolfenstein 3D (1992). Nếu tôi không nhầm, bạn có thể vẽ bản đồ của riêng mình và sau đó là kẻ thù mới, thay thế kết cấu và âm thanh. Trở ngại chính trong việc sửa đổi là phân tích cú pháp định dạng không xác định dữ liệu. Đi thôi khía cạnh đạo đức hiện tượng này đối với các nguồn lực khác và chúng ta hãy tập trung vào những khó khăn kỹ thuật có thể phát sinh trong vấn đề khó khăn này.

Tôi đã tích lũy được khá nhiều câu chuyện thuộc loại này, từ những câu chuyện đơn giản nhất, chẳng hạn như phân tích một kho lưu trữ đơn giản nơi hàng nghìn tệp trò chơi được lưu trữ trong một tệp, đến thay thế mô hình 3D, nghiên cứu và viết codec âm thanh không chuẩn. Tôi sẽ kể cho bạn nghe một trong số đó, có độ phức tạp trung bình.

Giả sử bạn muốn thay thế một số cụm từ nhất định trong trò chơi hoặc thậm chí thử lồng tiếng đầy đủ bằng một số ngôn ngữ mà nhà phát triển không có đủ sức mạnh hoặc nguồn lực. Có vẻ như bạn chỉ cần ghi lại âm thanh, tìm vị trí của nó trong trò chơi và thay thế các tệp cần thiết. Nhưng điều này không phải lúc nào cũng dễ dàng, ví dụ như trong trò chơi mới nhất từ loạt phim Batman: Arkham sử dụng công cụ âm thanh wwise, đã được tích hợp vào Unreal Engine từ khá lâu.

Tôi đã gặp UE hơn một lần, nhưng như bạn biết, các nhà phát triển thương mại có khả năng thay đổi hoàn toàn bất kỳ phần nào của mã công cụ, vì vậy hầu hết tất cả các trò chơi đều trở nên độc đáo về mặt cấu trúc dữ liệu và điều này luôn thú vị khám phá.

Đầu tiên, chúng ta hãy nhìn vào các tập tin âm thanh. Như thường lệ, chúng nằm trong thư mục âm thanh và được tập hợp thành một gói lớn, với phần mở rộng không mong muốn.WAD (xin chào DOOM). Nếu muốn, bạn thậm chí có thể trích xuất tất cả âm thanh từ nó, nhưng nó sẽ có hàng nghìn tệp không tên và việc tìm kiếm thứ gì đó trong số chúng sẽ rất khó khăn, trừ khi bạn “thủ công” nghe tất cả chúng. Tôi phải nói rằng nó thường đơn giản hơn. Các nhà phát triển, để thuận tiện cho họ, hãy để lại một tệp ở đâu đó có danh sách các cụm từ. Nhưng đây không phải là trường hợp.

Thật hợp lý khi cho rằng vì bản thân trò chơi bằng cách nào đó đã tìm thấy âm thanh và phụ đề cần thiết cho chúng, điều đó có nghĩa là thông tin này được chứa trong các tệp ở đâu đó, bạn chỉ cần tìm nó. Các văn bản không được tìm thấy ở bất kỳ đâu trong các thư mục bản địa hóa, có nghĩa là chúng nằm rải rác ở các cấp độ riêng lẻ của trò chơi, như thường lệ. Hãy lấy một trong các tệp .upk có tên tương tự với cấp độ làm ví dụ và giải nén nó. May mắn thay, có những công cụ cho việc này, ngay cả với mã nguồn.

Bên trong, các tệp thuộc loại .RDialogueEvent nhanh chóng được phát hiện, trong đó văn bản của các cụm từ trong 11 ngôn ngữ có thể nhìn thấy được bằng mắt thường.

Tên tập tin giống với tên của âm thanh gốc. Tuyệt vời, bây giờ tất cả những gì còn lại là tìm sự trùng khớp giữa chúng và các tệp âm thanh. Đây là nơi các vấn đề bắt đầu. Tất nhiên, có những mã nhận dạng trong gói âm thanh. Đây là hàm băm 30 bit luôn được sử dụng cho âm thanh, nhưng rất tiếc là chúng không thể tìm thấy ở bất kỳ đâu trong số các tệp hội thoại. Ở khắp mọi nơi chỉ có những con số khó hiểu, không có gì giống với ID âm thanh, chúng sẽ được chú ý ngay lập tức. Mặt khác, điều này cũng dễ hiểu vì động cơ không đơn giản như vậy và bạn không thể chỉ lấy và phát một tệp âm thanh trong trò chơi. Nó được chứa trong ngân hàng âm thanh, nó có nhiều đặc tính áp đặt các hiệu ứng khác nhau, v.v.

Và sau đó hóa ra là trong mỗi thư mục có đoạn hội thoại đều có một file.akbank - rõ ràng đây là ngân hàng âm thanh wwise.

Nó có rất nhiều mã nhận dạng bên trong và khi thử chúng một cách ngẫu nhiên, chúng tôi thấy rằng một trong số chúng (được đánh dấu bằng màu xanh lá cây) nằm trong gói âm thanh. Nếu chúng tôi trích xuất dữ liệu từ đó bằng mã định danh này, chúng tôi sẽ nhận được một đoạn nhất định gồm nhiều âm thanh được ghép lại với nhau. Hãy chuyển đổi những âm thanh này từ định dạng wwise nội bộ sang ogg thông thường. Vâng, thực sự, trong một trong số đó, Batman nói: “Tôi không có thời gian cho việc này,” và trong một tập tin khác, họ trả lời anh ấy Và các cụm từ tương ứng chính xác với nội dung của cuộc đối thoại cụ thể này.

Không tệ rồi! Về nguyên tắc, chúng ta có thể dừng lại ở đó: tất cả các đoạn hội thoại được sắp xếp trong các thư mục, đối với mỗi đoạn hội thoại có một ngân hàng có liên kết đến đoạn âm thanh. Tất nhiên, chúng tôi không biết mỗi tệp ở đâu, nhưng chúng tôi có thể cắt một đoạn thành nhiều phần, nghe và đặt một số cụm từ vào vị trí của chúng (và thường chỉ có 3-4 cụm từ đó trong các đoạn hội thoại) theo cách thủ công.

Nhưng chúng tôi không tìm kiếm những cách dễ dàng. Hãy tìm ra nó cho đến cuối cùng. Hãy kiểm tra xem nếu âm thanh phát ra đúng thứ tự thì sao? Tất nhiên là không, họ đang bối rối. Dù người ta có thể nói gì thì ở đâu đó cũng phải có thông tin về mối liên hệ giữa các âm thanh trong đoạn và văn bản của đoạn hội thoại. Tôi đã dành khá nhiều thời gian để tìm hiểu nhiều tập tin khác nhau, hy vọng khám phá được điều gì đó, nhưng tất cả đều vô ích. Khỏe. Vì trường hợp này xảy ra nên hãy giải nén tất cả các gói trò chơi. Đây là vài gigabyte, à, không có gì, lần đầu tiên hay sao? Đó chỉ là tìm kiếm đầy đủ Theo tất cả dữ liệu từ trò chơi, nó cũng không mang lại kết quả gì. Nơi duy nhất có bộ nhận dạng âm thanh là ngân hàng âm thanh. Hóa ra kết nối chỉ đi qua anh ta. Bạn không thể làm gì được, bạn sẽ phải leo vào bên trong và tìm hiểu xem nó hoạt động như thế nào.

Bây giờ, để chắc chắn, hãy tìm một số đoạn hội thoại trong trò chơi mà bạn có thể nhanh chóng kiểm tra. Sau màn giới thiệu hoành tráng với nữ phóng viên quyến rũ và màn trình diễn mặt nạ, Batman đã bị Hugo Strange bắt giữ. Anh ấy nói một vài cụm từ bắt đầu bằng “Tôi cảm thấy mình nên cảm ơn bạn”, sau đó rời đi và trò chơi bắt đầu. Đây là nơi lưu đầu tiên xảy ra. Thời điểm này phù hợp với chúng ta.

Chúng ta hãy tìm cụm từ của nhân vật phản diện trong hồ sơ. Nó kết thúc trong gói OW_E8_Ch1z_Anim. Vì vậy, bạn sẽ không đoán ngay được. Chỉ có một đoạn hội thoại bên trong chứa toàn bộ phần đầu của trò chơi. Đó là một con số khổng lồ gồm 24 cụm từ, nhưng có lẽ đó là một điều tốt; trong một mớ mã lộn xộn, việc tìm số 24 sẽ dễ dàng hơn 1 hoặc 2. Vì vậy, chúng ta sẽ nghiên cứu nội dung của .akBank

Định dạng của các ngân hàng wwise đã được khám phá một phần. Hãy hy vọng rằng thông tin này là đủ cho mục đích của chúng tôi. Đánh giá ở phần đầu của tệp .akbank, nó chứa 5 ngân hàng âm thanh cho 5 ngôn ngữ, đầu tiên là ngân hàng INT (tiếng Anh) - chúng ta sẽ xem xét nó.

Đầu tiên, có một bảng khó hiểu sau tiêu đề VKRK, sau đó là khá nhiều số 0 (có thể thấy điều này trong hình trước), sau đó là phân đoạn BKHD và sau đó là phân đoạn HIRC, dường như chứa mô tả của tất cả âm thanh các đối tượng. TRONG trong trường hợp này chúng tôi có 79 trong số chúng (0x4F được tô sáng màu xanh lục). Như mô tả nêu rõ, các đối tượng trong phân đoạn lần lượt xuất hiện, đối với mỗi loại được chỉ định (1 byte), sau đó là độ dài 32 bit và ID. Độ dài và nội dung của một đối tượng khác nhau tùy thuộc vào loại.

Đối tượng loại 2 là âm thanh thực tế. Loại được tô sáng màu đỏ, chiều dài - màu vàng. Mỗi trong số chúng cho biết ID của chính đối tượng (màu xanh lá cây) và ID của tệp âm thanh (màu tím) nơi chứa nó. Dưới đây bạn có thể thấy phần đầu của đối tượng tiếp theo cùng loại.

Đối tượng 3 - hành động âm thanh, có vẻ như mỗi đối tượng trong số chúng đều "phát âm thanh", với một số thông số mà chúng tôi không xác định được, nhưng mỗi đối tượng đều có ID riêng (màu xám) và ID của âm thanh thực sự cần phát (màu xanh lá cây) ).

Đối tượng 4 - sự kiện âm thanh. Rất mục ngắn, trong đó chỉ ID của sự kiện được hiển thị (màu xanh lam) và cũng được biểu thị rằng nó chỉ chứa một hành động và ID của chính hành động này (màu xám).

Chà, có vẻ như chúng ta có 24 chuỗi sự kiện như thế này:

Sự kiện -> hành động -> âm thanh

Chúng được liên kết bằng các mã định danh và kết thúc bằng các liên kết đến các tệp âm thanh. Làm thế nào để tìm thấy các tập tin cần thiết? Sau khi tìm kiếm các mã này, chúng tôi tìm thấy chúng trong cùng một bảng ở đầu ngân hàng. Rõ ràng đây là một bảng ghi lại vị trí trong phân đoạn âm thanh âm thanh riêng lẻ. Và thực sự, nó chứa chính xác 24 phần tử và đối với mỗi tệp có cùng một ID mà chúng ta có trong đối tượng âm thanh, độ lệch so với phần đầu và độ dài được chỉ định. Chúc mừng! Bây giờ chúng tôi có một kết nối hoàn toàn có thể theo dõi được từ các sự kiện âm thanh trong ngân hàng đến từng cá nhân tập tin âm thanh:

Nghĩa là, với tư cách là đầu vào, chúng ta có ID của một số sự kiện, một ID cho mỗi cụm từ đối thoại và đối với mỗi sự kiện đó, chúng ta có thể tìm thấy một tệp âm thanh. Nhưng bây giờ làm thế nào chúng ta có thể kết nối chúng với chính cuộc đối thoại?

Chúng ta hãy thử tìm kiếm những định danh này ở đâu đó. Một lần nữa, chúng không có trong tập tin hội thoại. Ngoài ra còn có một số tệp .akevent rất ngắn trong thư mục - cũng có 24 tệp trong số đó. Rõ ràng đây là những tập tin sự kiện âm thanh. Bên trong có một số con số nhỏ, ai cũng như nhau, chẳng có tác dụng gì. Điều khác biệt duy nhất là id của các sự kiện âm thanh mà chúng tôi tìm thấy trong ngân hàng.

Một ngõ cụt khác: có những định danh cho tất cả các sự kiện, nhưng không có mối liên hệ nào giữa chúng và văn bản đối thoại! Để đề phòng, hãy làm một bài kiểm tra: thay đổi tập tin cần thiết ID và khởi động trò chơi. Đúng vậy, Hugo mở miệng nhưng không nói gì. Điều này có nghĩa đây chính xác là dữ liệu mà trò chơi tìm thấy âm thanh đúng. Đồng thời, chúng tôi lưu ý rằng phụ đề vẫn được hiển thị. Điều này có nghĩa là văn bản của các cuộc đối thoại trong trường hợp của chúng tôi là chính và âm thanh đã phát ra từ chúng.

Và sau đó tôi nhớ rằng công cụ UE3 có thói quen đề cập đến các đối tượng đóng gói thông qua số thứ tự của chúng trong gói, tức là cách chúng được đóng gói bên trong nó. Hãy xem tệp xuất được tạo khi chúng tôi giải nén các gói:

Các số ở đây là số thập phân và bắt đầu từ 0, nhưng trong trò chơi chúng bắt đầu từ 1, vì vậy hóa ra các tệp sự kiện khi xuất được đánh số 0x35-0x4C. Hãy xem liệu chúng có ở đâu đó trong số các cuộc đối thoại không. Chúng tôi bắt đầu tìm kiếm - và ôi, ngay đầu tập tin có con số này!

Đây là liên kết còn thiếu cuối cùng. Đồng thời, chúng tôi tìm thấy 0x2C ở gần - đây là số tệp ngân hàng. Nếu đột nhiên có một số hộp thoại trong một thư mục, chúng cũng có thể được phân biệt. Bây giờ chúng ta đã biết đầy đủ cách tìm ra âm thanh tương ứng từ văn bản của đoạn hội thoại.

Cái này hóa ra đẹp mạch phức tạp tương tác. Có vẻ như các nhà phát triển đã quyết định không quan tâm đến sự tiện lợi mà chỉ dựa vào các cơ chế bên trong của động cơ, dẫn đến kết quả này trong trường hợp này. Và các trường hợp, như tôi đã nói, rất khác nhau. Cấu trúc của các tập tin và kết nối giữa chúng có thể hoàn toàn khác nhau. Ở đây chúng tôi đã có một liên kết từ văn bản của đoạn hội thoại đến âm thanh. Nhưng điều ngược lại lại xảy ra, âm thanh chính là âm thanh và văn bản được đặt bên cạnh nó theo mã định danh. Hoặc sự kiện kịch bản trò chơi là chính và từ đó có các liên kết đến cả âm thanh và văn bản. Điều xảy ra là các tệp được định vị không phải theo tên mà theo hàm băm. Nhưng trong mọi trường hợp, bằng cách nào đó chúng đều có mối liên hệ với nhau, tất cả những gì còn lại là tìm ra mối liên hệ này.

Cuối cùng, hãy thử kiểm tra kết quả của chúng tôi. Chúng ta hãy tìm file hội thoại chính xác từ cụm từ “Tôi cảm thấy tôi nên cảm ơn bạn” mà chúng ta cần và thay thế 4B bằng 4C trong đó. Chúng tôi bắt đầu trò chơi, và người bạn Hugo của chúng tôi, thay vì cụm từ này, nói một cách đầy ý nghĩa: “Đó sẽ là di sản của tôi, một tượng đài cho sự thất bại của bạn và nếu bạn cố gắng ngăn cản tôi, tôi đảm bảo mọi người sẽ biết bí mật của bạn.”

Hãy để Batman ở lại đây, nghiên cứu có thể được coi là hoàn thành. Ở dạng viết, quá trình này có vẻ nhanh nhưng trên thực tế, mỗi giai đoạn có thể đi kèm với việc suy ngẫm lâu về các chữ số thập lục phân mà không có hy vọng rằng đến một lúc nào đó chúng sẽ tạo thành chuỗi có ý nghĩa và bạn sẽ hiểu ý nghĩa của chúng. Nhưng đôi khi điều này vẫn xảy ra.

Văn hóa sửa đổi trò chơi có từ thời xa xưa. Tôi nhớ sớm nhất là Wolfenstein 3D (1992). Nếu tôi không nhầm, bạn có thể vẽ bản đồ của riêng mình và sau đó là kẻ thù mới, thay thế kết cấu và âm thanh. Trở ngại chính trong việc sửa đổi là phân tích các định dạng dữ liệu không xác định. Hãy để các khía cạnh đạo đức của hiện tượng này cho các nguồn khác và tập trung vào những khó khăn kỹ thuật có thể nảy sinh trong vấn đề khó khăn này.

Tôi đã tích lũy được khá nhiều câu chuyện thuộc loại này, từ những câu chuyện đơn giản nhất, chẳng hạn như phân tích một kho lưu trữ đơn giản nơi hàng nghìn tệp trò chơi được lưu trữ trong một tệp, đến thay thế mô hình 3D, nghiên cứu và viết codec âm thanh không chuẩn. Tôi sẽ kể cho bạn nghe một trong số đó, có độ phức tạp trung bình.

Giả sử bạn muốn thay thế một số cụm từ nhất định trong trò chơi hoặc thậm chí thử lồng tiếng đầy đủ bằng một số ngôn ngữ mà nhà phát triển không có đủ sức mạnh hoặc nguồn lực. Có vẻ như bạn chỉ cần ghi lại âm thanh, tìm vị trí của nó trong trò chơi và thay thế các tệp cần thiết. Nhưng điều này không phải lúc nào cũng dễ dàng, chẳng hạn như các trò chơi mới nhất trong dòng Batman: Arkham sử dụng công cụ âm thanh wwise đã được tích hợp vào Unreal Engine từ khá lâu.

Tôi đã gặp UE hơn một lần, nhưng như bạn biết, các nhà phát triển thương mại có khả năng thay đổi hoàn toàn bất kỳ phần nào của mã công cụ, vì vậy hầu hết tất cả các trò chơi đều trở nên độc đáo về mặt cấu trúc dữ liệu và điều này luôn thú vị khám phá.

Đầu tiên, chúng ta hãy nhìn vào các tập tin âm thanh. Như thường lệ, chúng nằm trong thư mục âm thanh và được tập hợp thành một gói lớn, với phần mở rộng không mong muốn.WAD (xin chào DOOM). Nếu muốn, bạn thậm chí có thể trích xuất tất cả âm thanh từ nó, nhưng nó sẽ có hàng nghìn tệp không tên và việc tìm kiếm thứ gì đó trong số chúng sẽ rất khó khăn, trừ khi bạn “thủ công” nghe tất cả chúng. Tôi phải nói rằng nó thường đơn giản hơn. Các nhà phát triển, để thuận tiện cho họ, hãy để lại một tệp ở đâu đó có danh sách các cụm từ. Nhưng đây không phải là trường hợp.

Thật hợp lý khi cho rằng vì bản thân trò chơi bằng cách nào đó đã tìm thấy âm thanh và phụ đề cần thiết cho chúng, điều đó có nghĩa là thông tin này được chứa trong các tệp ở đâu đó, bạn chỉ cần tìm nó. Các văn bản không được tìm thấy ở bất kỳ đâu trong các thư mục bản địa hóa, có nghĩa là chúng nằm rải rác ở các cấp độ riêng lẻ của trò chơi, như thường lệ. Hãy lấy một trong các tệp .upk có tên tương tự với cấp độ làm ví dụ và giải nén nó. May mắn thay, có những công cụ cho việc này, ngay cả với mã nguồn.

Bên trong, các tệp thuộc loại .RDialogueEvent nhanh chóng được phát hiện, trong đó văn bản của các cụm từ trong 11 ngôn ngữ có thể nhìn thấy được bằng mắt thường.

Tên tập tin giống với tên của âm thanh gốc. Tuyệt vời, bây giờ tất cả những gì còn lại là tìm sự trùng khớp giữa chúng và các tệp âm thanh. Đây là nơi các vấn đề bắt đầu. Tất nhiên, có những mã nhận dạng trong gói âm thanh. Đây là hàm băm 30 bit luôn được sử dụng cho âm thanh, nhưng rất tiếc là chúng không thể tìm thấy ở bất kỳ đâu trong số các tệp hội thoại. Ở khắp mọi nơi chỉ có những con số khó hiểu, không có gì giống với ID âm thanh, chúng sẽ được chú ý ngay lập tức. Mặt khác, điều này cũng dễ hiểu vì động cơ không đơn giản như vậy và bạn không thể chỉ lấy và phát một tệp âm thanh trong trò chơi. Nó được chứa trong ngân hàng âm thanh, nó có nhiều đặc tính áp đặt các hiệu ứng khác nhau, v.v.

Và sau đó hóa ra là trong mỗi thư mục có đoạn hội thoại đều có một file.akbank - rõ ràng đây là ngân hàng âm thanh wwise.

Nó có rất nhiều mã nhận dạng bên trong và khi thử chúng một cách ngẫu nhiên, chúng tôi thấy rằng một trong số chúng (được đánh dấu bằng màu xanh lá cây) nằm trong gói âm thanh. Nếu chúng tôi trích xuất dữ liệu từ đó bằng mã định danh này, chúng tôi sẽ nhận được một đoạn nhất định gồm nhiều âm thanh được ghép lại với nhau. Hãy chuyển đổi những âm thanh này từ định dạng wwise nội bộ sang ogg thông thường. Vâng, thực sự, trong một trong số đó, Batman nói: “Tôi không có thời gian cho việc này,” và trong một tập tin khác, họ trả lời anh ấy Và các cụm từ tương ứng chính xác với nội dung của cuộc đối thoại cụ thể này.

Không tệ rồi! Về nguyên tắc, chúng ta có thể dừng lại ở đó: tất cả các đoạn hội thoại được sắp xếp trong các thư mục, đối với mỗi đoạn hội thoại có một ngân hàng có liên kết đến đoạn âm thanh. Tất nhiên, chúng tôi không biết mỗi tệp ở đâu, nhưng chúng tôi có thể cắt một đoạn thành nhiều phần, nghe và đặt một số cụm từ vào vị trí của chúng (và thường chỉ có 3-4 cụm từ đó trong các đoạn hội thoại) theo cách thủ công.

Nhưng chúng tôi không tìm kiếm những cách dễ dàng. Hãy tìm ra nó cho đến cuối cùng. Hãy kiểm tra xem nếu âm thanh phát ra đúng thứ tự thì sao? Tất nhiên là không, họ đang bối rối. Dù người ta có thể nói gì thì ở đâu đó cũng phải có thông tin về mối liên hệ giữa các âm thanh trong đoạn và văn bản của đoạn hội thoại. Tôi đã dành khá nhiều thời gian để tìm hiểu nhiều tập tin khác nhau, hy vọng khám phá được điều gì đó, nhưng tất cả đều vô ích. Khỏe. Vì trường hợp này xảy ra nên hãy giải nén tất cả các gói trò chơi. Đây là vài gigabyte, à, không có gì, lần đầu tiên hay sao? Nhưng tìm kiếm toàn bộ dữ liệu trò chơi cũng không mang lại kết quả gì. Nơi duy nhất có bộ nhận dạng âm thanh là ngân hàng âm thanh. Hóa ra kết nối chỉ đi qua anh ta. Bạn không thể làm gì được, bạn sẽ phải leo vào bên trong và tìm hiểu xem nó hoạt động như thế nào.

Bây giờ, để chắc chắn, hãy tìm một số đoạn hội thoại trong trò chơi mà bạn có thể nhanh chóng kiểm tra. Sau màn giới thiệu hoành tráng với nữ phóng viên quyến rũ và màn trình diễn mặt nạ, Batman đã bị Hugo Strange bắt giữ. Anh ấy nói một vài cụm từ bắt đầu bằng “Tôi cảm thấy mình nên cảm ơn bạn”, sau đó rời đi và trò chơi bắt đầu. Đây là nơi lưu đầu tiên xảy ra. Thời điểm này phù hợp với chúng ta.

Chúng ta hãy tìm cụm từ của nhân vật phản diện trong hồ sơ. Nó kết thúc trong gói OW_E8_Ch1z_Anim. Vì vậy, bạn sẽ không đoán ngay được. Chỉ có một đoạn hội thoại bên trong chứa toàn bộ phần đầu của trò chơi. Đó là một con số khổng lồ gồm 24 cụm từ, nhưng có lẽ đó là một điều tốt; trong một mớ mã lộn xộn, việc tìm số 24 sẽ dễ dàng hơn 1 hoặc 2. Vì vậy, chúng ta sẽ nghiên cứu nội dung của .akBank

Định dạng của các ngân hàng wwise đã được khám phá một phần. Hãy hy vọng rằng thông tin này là đủ cho mục đích của chúng tôi. Đánh giá ở phần đầu của tệp .akbank, nó chứa 5 ngân hàng âm thanh cho 5 ngôn ngữ, đầu tiên là ngân hàng INT (tiếng Anh) - chúng ta sẽ xem xét nó.

Đầu tiên, có một bảng khó hiểu sau tiêu đề VKRK, sau đó là khá nhiều số 0 (có thể thấy điều này trong hình trước), sau đó là phân đoạn BKHD và sau đó là phân đoạn HIRC, dường như chứa mô tả của tất cả âm thanh các đối tượng. Trong trường hợp này, chúng tôi có 79 trong số chúng (0x4F được tô sáng màu xanh lục). Như mô tả nêu rõ, các đối tượng trong phân đoạn lần lượt xuất hiện, đối với mỗi loại được chỉ định (1 byte), sau đó là độ dài 32 bit và ID. Độ dài và nội dung của một đối tượng khác nhau tùy thuộc vào loại.

Đối tượng loại 2 là âm thanh thực tế. Loại được tô sáng màu đỏ, chiều dài - màu vàng. Mỗi trong số chúng cho biết ID của chính đối tượng (màu xanh lá cây) và ID của tệp âm thanh (màu tím) nơi chứa nó. Dưới đây bạn có thể thấy phần đầu của đối tượng tiếp theo cùng loại.

Đối tượng 3 - hành động âm thanh, có vẻ như mỗi đối tượng trong số chúng đều "phát âm thanh", với một số thông số mà chúng tôi không xác định được, nhưng mỗi đối tượng đều có ID riêng (màu xám) và ID của âm thanh thực sự cần phát (màu xanh lá cây) ).

Đối tượng 4 - sự kiện âm thanh. Các mục nhập rất ngắn chỉ chứa ID sự kiện (màu xanh lam) đồng thời cho biết rằng nó chỉ chứa một hành động và ID của chính hành động này (màu xám).

Chà, có vẻ như chúng ta có 24 chuỗi sự kiện như thế này:

Sự kiện -> hành động -> âm thanh

Chúng được liên kết bằng các mã định danh và kết thúc bằng các liên kết đến các tệp âm thanh. Làm thế nào để tìm thấy các tập tin cần thiết? Sau khi tìm kiếm các mã này, chúng tôi tìm thấy chúng trong cùng một bảng ở đầu ngân hàng. Rõ ràng đây là một bảng ghi lại vị trí của từng âm thanh trong một phân đoạn âm thanh. Và thực sự, nó chứa chính xác 24 phần tử và đối với mỗi tệp có cùng một ID mà chúng ta có trong đối tượng âm thanh, độ lệch so với phần đầu và độ dài được chỉ định. Chúc mừng! Bây giờ chúng tôi có một kết nối hoàn toàn có thể theo dõi được từ các sự kiện âm thanh trong ngân hàng đến các tệp âm thanh riêng lẻ:

Nghĩa là, với tư cách là đầu vào, chúng ta có ID của một số sự kiện, một ID cho mỗi cụm từ đối thoại và đối với mỗi sự kiện đó, chúng ta có thể tìm thấy một tệp âm thanh. Nhưng bây giờ làm thế nào chúng ta có thể kết nối chúng với chính cuộc đối thoại?

Chúng ta hãy thử tìm kiếm những định danh này ở đâu đó. Một lần nữa, chúng không có trong tập tin hội thoại. Ngoài ra còn có một số tệp .akevent rất ngắn trong thư mục - cũng có 24 tệp trong số đó. Rõ ràng đây là những tập tin sự kiện âm thanh. Bên trong có một số con số nhỏ, ai cũng như nhau, chẳng có tác dụng gì. Điều khác biệt duy nhất là id của các sự kiện âm thanh mà chúng tôi tìm thấy trong ngân hàng.

Một ngõ cụt khác: có những định danh cho tất cả các sự kiện, nhưng không có mối liên hệ nào giữa chúng và văn bản đối thoại! Để đề phòng, hãy làm một bài kiểm tra: thay đổi ID trong tệp được yêu cầu và khởi chạy trò chơi. Đúng vậy, Hugo mở miệng nhưng không nói gì. Điều này có nghĩa rằng đây chính xác là dữ liệu mà trò chơi tìm thấy âm thanh mong muốn. Đồng thời, chúng tôi lưu ý rằng phụ đề vẫn được hiển thị. Điều này có nghĩa là văn bản của các cuộc đối thoại trong trường hợp của chúng tôi là chính và âm thanh đã phát ra từ chúng.

Và sau đó tôi nhớ rằng công cụ UE3 có thói quen đề cập đến các đối tượng đóng gói thông qua số thứ tự của chúng trong gói, tức là cách chúng được đóng gói bên trong nó. Hãy xem tệp xuất được tạo khi chúng tôi giải nén các gói:

Các số ở đây là số thập phân và bắt đầu từ 0, nhưng trong trò chơi chúng bắt đầu từ 1, vì vậy hóa ra các tệp sự kiện khi xuất được đánh số 0x35-0x4C. Hãy xem liệu chúng có ở đâu đó trong số các cuộc đối thoại không. Chúng tôi bắt đầu tìm kiếm - và ôi, ngay đầu tập tin có con số này!

Đây là liên kết còn thiếu cuối cùng. Đồng thời, chúng tôi tìm thấy 0x2C ở gần - đây là số tệp ngân hàng. Nếu đột nhiên có một số hộp thoại trong một thư mục, chúng cũng có thể được phân biệt. Bây giờ chúng ta đã biết đầy đủ cách tìm ra âm thanh tương ứng từ văn bản của đoạn hội thoại.

Đây hóa ra là một sơ đồ tương tác khá phức tạp. Có vẻ như các nhà phát triển đã quyết định không quan tâm đến sự tiện lợi mà chỉ dựa vào các cơ chế bên trong của động cơ, dẫn đến kết quả này trong trường hợp này. Và các trường hợp, như tôi đã nói, rất khác nhau. Cấu trúc của các tập tin và kết nối giữa chúng có thể hoàn toàn khác nhau. Ở đây chúng tôi đã có một liên kết từ văn bản của đoạn hội thoại đến âm thanh. Nhưng điều ngược lại lại xảy ra, âm thanh chính là âm thanh và văn bản được đặt bên cạnh nó theo mã định danh. Hoặc sự kiện kịch bản trò chơi là chính và từ đó có các liên kết đến cả âm thanh và văn bản. Điều xảy ra là các tệp được định vị không phải theo tên mà theo hàm băm. Nhưng trong mọi trường hợp, bằng cách nào đó chúng đều có mối liên hệ với nhau, tất cả những gì còn lại là tìm ra mối liên hệ này.

Cuối cùng, hãy thử kiểm tra kết quả của chúng tôi. Chúng ta hãy tìm file hội thoại chính xác từ cụm từ “Tôi cảm thấy tôi nên cảm ơn bạn” mà chúng ta cần và thay thế 4B bằng 4C trong đó. Chúng tôi bắt đầu trò chơi, và người bạn Hugo của chúng tôi, thay vì cụm từ này, nói một cách đầy ý nghĩa: “Đó sẽ là di sản của tôi, một tượng đài cho sự thất bại của bạn và nếu bạn cố gắng ngăn cản tôi, tôi đảm bảo mọi người sẽ biết bí mật của bạn.”

Hãy để Batman ở lại đây, nghiên cứu có thể được coi là hoàn thành. Ở dạng viết, quá trình này có vẻ nhanh nhưng trên thực tế, mỗi giai đoạn có thể đi kèm với việc suy ngẫm lâu về các chữ số thập lục phân mà không có hy vọng rằng đến một lúc nào đó chúng sẽ tạo thành chuỗi có ý nghĩa và bạn sẽ hiểu ý nghĩa của chúng. Nhưng đôi khi điều này vẫn xảy ra.

Tại sao phải trích xuất âm thanh từ trò chơi? Có mấy trang web âm nhạc?

Vâng, vấn đề là bạn sẽ cảm thấy mệt mỏi khi phải tìm kiếm các giai điệu từ trò chơi. Và sau đó là những trò chơi nằm rải rác trên máy tính với âm nhạc điện tử hay. Đúng lúc đó tôi rất cần phải làm và lên tiếng hiệu ứng âm thanh. Vì vậy tôi bắt đầu suy nghĩ xem có nên loại bỏ âm thanh khỏi trò chơi hay không. Trò chơi ở định dạng Java dành cho điện thoại di động và không thể dễ dàng mở được trong thư mục của nó chứ không phải thông qua bất kỳ chương trình nào.

Bây giờ việc trích xuất âm thanh từ trò chơi không còn là vấn đề đối với tôi nữa. Một người đã giúp tôi với điều này chương trình mạnh mẽ UniExtractor(tải xuống) Nó được thiết kế để giải nén các kho lưu trữ bị hỏng như 7zip, WinRAR và các kho lưu trữ khác tập tin nén. Chà, trình cài đặt chương trình tự giải nén mà không gặp vấn đề gì. Và trò chơi Java chính xác là trình cài đặt. Sau khi giải nén một trò chơi đơn giản, tôi cố gắng trích xuất âm thanh từ một trò chơi phức tạp hơn. Chương trình UniExtractor cũng xử lý các trò chơi dành cho phòng mổ Hệ thống Android. Phải mất rất ít thời gian để giải nén. Khoảng một phút. Trong thời gian này, bạn khó có thể tìm thấy âm thanh phù hợp trên Internet. Hãy bắt tay vào công việc.

Trích xuất âm thanh từ trò chơi

Để giải nén, như tôi đã đề cập ở trên, chúng tôi sẽ sử dụng trình giải nén kho lưu trữ đặc biệt - Máy chiết đơn. Chương trình không cần phải khởi chạy riêng, chỉ cần nhấp chuột phải vào trình cài đặt trò chơi. TRONG danh mục chọn mục- Giải nén bằng Máy đơn nhất.

Quá trình giải nén.

Bây giờ, chúng ta có thể thấy hai tập tin với cùng tên. Đầu tiên là trình cài đặt trò chơi và thứ hai là trình cài đặt đã giải nén, ở dạng thư mục chứa các tệp. Mở thư mục và tìm một thư mục khác trong đó có tên ứng dụng .

Trong thư mục này còn có hai thư mục nữa, chứa các tập tin âm thanh. Họ có thể được gọi khác nhau. Nhưng thường thì nó Âm nhạcÂm thanh.Nói chung, nếu chúng không có ở đó thì bạn sẽ phải xem lại tất cả các thư mục.

Em muôn lam cho anh hạnh phuc. Không phải tất cả các trò chơi đều có vấn đề này. Một số game giải nén có chứa định dạng âm thanh, có thể được nghe ngay trên máy nghe nhạc.

Điều này rất hữu ích để biết:


Các dạng nhạc trong game
Shiru (A.Semenov) mailto:shiru và mail dot ru

Trong quá trình phát triển trò chơi, sớm hay muộn câu hỏi cũng được đặt ra - sử dụng định dạng nào để lưu trữ dữ liệu trò chơi. Mục đích đánh giá này là xem xét các tính năng, ưu điểm và nhược điểm định dạng phổ biến nhạc đệm trong trò chơi, nhờ đó, dựa trên thông tin nhận được, có thể đưa ra sự lựa chọn thông minh như một phần của dự án của bạn. Sắc thái kỹ thuật các bản sao chép (như thế nào, với cái gì) của các định dạng được đề cập ở đây nằm ngoài phạm vi của bài viết và do đó không được xem xét ở đây.

Thông thường, chúng ta có thể chia các định dạng được sử dụng để lưu trữ nhạc thành hai nhóm: âm thanh phát trực tuyến, chứa bản âm thanh cuối cùng (tức là chỉ âm thanh), có thể được nén để giảm kích thước của nó; và bản thân các định dạng âm nhạc, lưu trữ một bộ hướng dẫn về thời điểm và nốt nào sẽ phát, cùng với các âm thanh (mẫu) mà các nốt này sẽ được chơi. Đầu tiên, chúng ta hãy xem xét các tính năng của hai nhóm này.

Truyền phát âm thanh

Nó không thực sự là một định dạng âm nhạc - đó là âm thanh vốn có, được ghi trong một tệp. Nhưng âm thanh đó rất có thể là âm nhạc, vì vậy, theo mục đích của bài viết này, âm thanh phát trực tuyến cũng là một định dạng âm nhạc. Nó được gọi là phát trực tuyến vì tệp không cần phải hiện diện toàn bộ trong bộ nhớ - chỉ cần đọc các đoạn nhỏ từ phương tiện, giải mã nó (nếu cần) và gửi nó để phát lại là đủ. Truyền phát âm thanh có hoặc không có nén.

Định dạng truyền phát âm thanh không nén, chúng thường không được sử dụng để lưu trữ nhạc trong trò chơi do kích thước khổng lồ: một giây âm thanh nổi chất lượng CD (44100hz, 16bit) chiếm 172 kilobyte. Ngoại lệ trước đây là CD-DA, định dạng CD âm thanh. Nhưng những trò chơi có âm nhạc ở định dạng này thì những năm trước không được quan sát - luôn có thứ gì đó để lấp đầy một số ít, theo tiêu chuẩn hiện đại, megabyte đĩa CD/DVD.

Phù hợp hơn cho ứng dụng chơi game là các định dạng âm thanh nén. Có những thuật toán để nén âm thanh mà không làm giảm chất lượng (gọi là thuật toán lossyless), nhưng mức tăng âm lượng là cực kỳ không đáng kể, do đó, các định dạng nén phổ biến nhất có chất lượng bị giảm (thuật toán lossy). Các thuật toán nén phổ biến mang lại mức tăng lớn về khối lượng tập tin cuối cùng, hãy sử dụng ý tưởng “mã hóa âm thanh tâm lý” - loại trừ động các tần số khỏi tín hiệu mà thính giác của con người cảm nhận kém. Thông thường, mức suy hao được chọn mà tai hầu như không nhận thấy được. Các thuật toán nén âm thanh thường hoạt động với tỷ lệ nén cố định, đối với trò chơi, tỷ lệ này thường là khoảng 11:1...7:1 (luồng dữ liệu 128...192kb/s). tồn tại số lượng lớnđịnh dạng nén âm thanh nhưng nổi tiếng và được sử dụng nhiều nhất trong số đó là MP3, WMA, OGG.

MP3 là định dạng lâu đời nhất và rất phổ biến. Ban đầu xuất hiện dưới dạng định dạng nén Track âm thanh dành cho phim video ở định dạng VideoCD (tên đầy đủ MP3 - MPEG Audio Layer III), nhưng khá nhanh chóng bắt đầu được sử dụng riêng. Bây giờ MP3 là tiêu chuẩn công nghiệp. Việc sử dụng tệp âm thanh nén MP3 trong các dự án trò chơi thương mại có số lượng phát hành hơn 5.000 bản sẽ phải trả phí - 2.500 USD cho mỗi sản phẩm (giấy phép trò chơi, để biết thêm thông tin về cấp phép, hãy xem các liên kết ở cuối bài viết). Ngày nay MP3 không cung cấp hiệu suất tốt nhất về tỷ lệ kích thước/chất lượng. Các phiên bản cải tiến của định dạng MP3 - ví dụ như MP3pro - với các chỉ số tương tự như WMA/OGG, chưa được phổ biến nhiều.

WMA- cửa sổ truyền thông tinÂm thanh, một định dạng được chính Microsoft quảng bá như một giải pháp thay thế ưu việt cho MP3, có khả năng gần giống với định dạng OGG. Công dụng của nó trong sản phẩm phần mềm lưu trữ nội dung âm thanh không yêu cầu cấp phép.

OGG - tương đối Hình thức mới nén âm thanh được các nhà phát triển trò chơi quan tâm nhất. Nó không yêu cầu bất kỳ giấy phép nào và hoàn toàn hợp pháp để sử dụng miễn phí; đồng thời nó cung cấp thêm chất lượng caoâm thanh có cùng kích thước với MP3 hoặc kích thước nhỏ hơn với cùng chất lượng âm thanh. Đúng, việc giải mã OGG yêu cầu nhiều tài nguyên máy tính hơn một chút so với MP3/WMA. Bộ mã hóa và giải mã phần mềm từ người tạo định dạng (Vorbis) được phân phối dưới dạng nguồn mở.

Ưu điểm của việc sử dụng âm thanh phát trực tuyến để lưu trữ nhạc:

  • Bạn có thể lưu trữ âm nhạc của bất kỳ ai trình độ kỹ thuật. Về vấn đề này, định dạng này là phổ biến và có tiềm năng (đặc biệt khi được nén bằng cấp thấp tổn thất) có khả năng cung cấp chất lượng tốt nhấtâm thanh
  • Nhạc sĩ của bạn không bị giới hạn bởi khả năng của định dạng và có thể sử dụng các công cụ tạo nhạc thuận tiện cho họ (tức là sẽ dễ dàng tìm được nhạc sĩ phù hợp)
  • Không yêu cầu dung lượng RAM lớn khi phát (luồng dữ liệu được đọc từ phương tiện theo từng phần nhỏ)
Nhược điểm:
  • Đối với một số ứng dụng, kích thước của âm thanh nén thậm chí có thể quá lớn - một tác phẩm có độ dài trung bình với chất lượng tốt sẽ mất 3-5 megabyte (khi sử dụng định dạng nén)
  • Việc giảm kích thước chỉ có thể được thực hiện bằng cách giảm đáng kể chất lượng (tăng tổn thất nén) và giảm độ dài của bố cục
  • Thời lượng của một bản nhạc trực tiếp phụ thuộc vào kích thước tệp của nó.
  • Giải mã âm thanh nén yêu cầu tài nguyên CPU tương đối lớn và có thể không thực hiện được trên nền tảng năng lượng thấp nếu không có bộ giải mã phần cứng (trong thời gian thực)

Định dạng nhạc

Bản thân các định dạng âm nhạc là các định dạng không chứa âm thanh cuối cùng mà chỉ chứa thông tin về cách lấy được âm thanh đó. Nghĩa là, thông tin về thời điểm và nốt nào sẽ chơi với âm thanh nào (và - tùy chọn - chính những âm thanh này). Do đó, có thể đạt được mức tăng đáng kể về lượng thông tin được lưu trữ (kích thước tệp). Âm thanh cuối cùng (mà người chơi sẽ nghe thấy) được thu trực tiếp trong quá trình phát nhạc. Việc này chiếm một số tài nguyên máy tính, nhưng nhìn chung tải không lớn hơn việc giải mã âm thanh truyền phát nén và thường thậm chí còn ít hơn (có thể thực hiện phát các định dạng nhạc tăng tốc phần cứng; ví dụ: trên PC, hỗ trợ phần cứng bắt buộc phổ biến hơn nhiều so với hỗ trợ phần cứng bắt buộc để giải mã âm thanh nén).

Các định dạng âm nhạc áp đặt một số hạn chế đối với quyền tự do sáng tạo của một nhạc sĩ - chẳng hạn, một phần giọng hát hoặc nhạc cụ dài được ghi trực tiếp không thể được chèn vào - chính xác hơn là nó sẽ không có lợi, bởi vì sẽ dẫn đến tăng kích thước tệp và sẽ thuận tiện hơn khi sử dụng âm thanh phát trực tuyến. Đối với nhạc “sống động” (dàn nhạc giao hưởng, ban nhạc rock, v.v.), bạn chắc chắn cần sử dụng âm thanh phát trực tuyến. Các định dạng âm nhạc chỉ phù hợp với sự bắt chước nhạc sống (đối với trường hợp âm thanh bắt chước trở nên chấp nhận được do kích thước tệp tăng đáng kể) hoặc đối với nhạc điện tử. Hầu như không thể đạt được sự tương đồng tuyệt đối về âm thanh của một tác phẩm ở định dạng âm nhạc với nhạc sống, chỉ có thể đạt được các mức độ gần đúng khác nhau. Như thực tế cho thấy, hạn chế này không phải là một nhược điểm nghiêm trọng.

Các định dạng âm nhạc được sử dụng trong trò chơi có thể được chia thành hai nhóm nhỏ: MIDI và nhóm định dạng trình theo dõi (được gọi là mô-đun theo dõi, đôi khi còn được gọi đơn giản là mô-đun). Sự khác biệt chính giữa hai nhóm con này là các tệp MIDI tiêu chuẩn chỉ chứa các nốt, trong khi các mô-đun theo dõi, ngoài các nốt, còn lưu trữ các mẫu được sử dụng để phát âm các nốt này. Những khác biệt còn lại chủ yếu liên quan đến một số hạn chế áp đặt những đặc điểm riêng của họ khi viết nhạc.

Một điểm quan trọng: cả định dạng MIDI và trình theo dõi đều không yêu cầu cấp phép để sử dụng trong sản phẩm thương mại.

Định dạng nhạc: MIDI

MIDI (Giao diện kỹ thuật số nhạc cụ) là giao diện phần cứng, đồng thời là tiêu chuẩn mô tả quá trình trao đổi dữ liệu âm nhạc giữa các nhạc cụ điện tử. Dữ liệu âm nhạc không phải là âm thanh, nói một cách đơn giản, nó chỉ là thông tin về các phím tổng hợp được nhấn/nhả. MIDI cũng là tiêu chuẩn để lưu trữ thông tin này trong các tệp (các tùy chọn phổ biến nhất là .mid, .midi). MIDI có thể, theo một cách gần đúng, được gọi là “định dạng nhạc phát trực tuyến”, bởi vì... để phát nó, không cần phải có toàn bộ tệp trong bộ nhớ - bạn có thể đọc từng phần một, như trường hợp của âm thanh phát trực tuyến. Nhưng đây là điểm tương đồng duy nhất giữa các định dạng này.

Nhiều người dùng PC khi nghe đến từ “midi” sẽ nói một cách khinh thường những câu như “ồ, đây là những tệp nhỏ với âm thanh khủng khiếp” (đặc biệt là những người vẫn còn hiếm card âm thanh không có bộ tổng hợp WaveTable chất lượng cao). Điều quan trọng là phải hiểu rằng âm thanh của một tác phẩm được ghi trong tệp MIDI là âm thanh của bộ tổng hợp trong máy tính của bạn, qua đó nội dung của tệp được phát; chất lượng âm thanh phụ thuộc trực tiếp vào chất lượng của bộ tổng hợp. Ít người biết rằng MIDI được sử dụng rộng rãi trong việc tạo ra âm nhạc điện tử chuyên nghiệp (bao gồm cả việc tạo nhạc cho trò chơi, để ghi âm sau này ở định dạng âm thanh).

TRONG Hiện nay nguyên tắc hoạt động duy nhất được sử dụng cho bộ tổng hợp MIDI trên PC được gọi là nguyên tắc hoạt động duy nhất. Tổng hợp WaveTable. Tức là có một bộ (ngân hàng) âm thanh của nhiều nhạc cụ khác nhau (được mô tả theo tiêu chuẩn, ít nhất 128 nhạc cụ và 64 âm trống), bộ tổng hợp sẽ tái tạo các nốt bằng những âm thanh này. Tệp MIDI không lưu trữ âm thanh nhạc cụ và ngân hàng nhạc cụ từ nhà sản xuất khác nhau card âm thanh có thể khác nhau (không phải ở thành phần của nhạc cụ mà ở đặc điểm âm thanh của chúng). Do đó, với các nhóm nhạc cụ khác nhau, âm thanh của cùng một tệp MIDI sẽ thay đổi đôi chút, điều này đôi khi tạo ra một số vấn đề nhất định. Một sáng tác được viết cho một ngân hàng có thể nghe tệ với một ngân hàng khác (ví dụ: do sự cân bằng âm lượng nhạc cụ khác nhau). Điều này cũng đặt ra một hạn chế đối với quyền tự do sáng tạo của nhạc sĩ - anh ta chỉ bị giới hạn bởi những âm sắc (nhạc cụ) mà tiêu chuẩn mô tả. Mặt khác, việc thiếu các mẫu nhạc cụ trong tệp MIDI làm giảm đáng kể kích thước của nó - một tác phẩm khổng lồ có thể chỉ nặng 50-100 kilobyte, đồng thời được nén hoàn hảo nhiều lần bằng ZIP thông thường.

Có một số tiêu chuẩn MIDI tương thích ngược - tiêu chuẩn chính, General Midi (GM); phần mở rộng từ Roland (GS); phần mở rộng nâng cao hơn từ Yamaha (XG). Các định dạng nâng cao có một lượng lớn nhạc cụ tiêu chuẩn (tối thiểu 226 cho GS, tối thiểu 480 cho XG - không bao gồm trống) và Tính năng bổ sungđiều khiển tổng hợp âm thanh, qua đó bạn có thể đa dạng hóa và cải thiện chất lượng âm thanh.

Để phát MIDI, bạn cần có bộ tổng hợp MIDI trong hệ thống - trên PC, đây có thể là card âm thanh với bộ tổng hợp WaveTable phần cứng (GM/GS/XG, với ngân hàng âm thanh riêng) hoặc card âm thanh đơn giản (chẳng hạn như AC"97) với bộ tổng hợp phần mềm (ngốn một phần hiệu suất hệ thống; bộ tổng hợp phần mềm GS với một dàn âm thanh tiêu chuẩn được bao gồm trong DirectX). Trên các thiết bị như điện thoại di động nó có thể là một bộ tổng hợp phần cứng đơn giản (chưa có sẵn cho sức mạnh tổng hợp phần mềm) và không phải là WaveTable mà là một trong những những cách thay thế tổng hợp (thường là tổng hợp FM), mô phỏng rất gần âm thanh của nhạc cụ.

Nếu không có bộ tổng hợp phần cứng trong hệ thống và không có đủ tài nguyên bộ xử lý/bộ nhớ để tổng hợp phần mềm thì không thể phát MIDI trên thiết bị như vậy.

Ưu điểm:

  • Kích thước tập tin rất nhỏ
  • sử dụng tổng hợp tốt Với ngân hàng tốt mẫu - chất lượng âm thanh cao
  • Nếu bạn có bộ tổng hợp phần cứng, CPU sẽ tải rất nhỏ (trình phát chỉ gửi lệnh đến bộ tổng hợp)
  • Sẽ không khó để tìm được một nhạc sĩ biết làm việc với MIDI
Nhược điểm:
  • Sự phụ thuộc của chất lượng âm thanh vào bộ tổng hợp được sử dụng
  • Âm thanh khác nhau của các nhạc cụ trên các bộ tổng hợp khác nhau (âm nhạc nghe hay trên một bộ tổng hợp có thể nghe tệ trên một bộ tổng hợp khác, ngay cả khi các bộ tổng hợp này có cùng chất lượng cao)
  • Một số sự đơn điệu trong âm thanh của bất kỳ bản nhạc nào trên cùng một bộ tổng hợp (do thực tế là ngân hàng mẫu cho các tác phẩm khác nhau thường không thay đổi)

Định dạng nhạc: nhạc theo dõi

Âm nhạc ở định dạng này còn được gọi là "mô-đun". Giống như trong MIDI, tệp lưu trữ dữ liệu về các nốt, nhưng ngoài chúng, nó còn lưu trữ các mẫu sẽ được sử dụng để phát âm các nốt khi chơi. Đây là nơi kết thúc những điểm tương đồng - về mặt kỹ thuật, có nhiều điểm khác biệt hơn là điểm tương đồng giữa nhạc MIDI và nhạc theo dõi. Bất chấp ý tưởng chung (để lưu trữ các nốt chứ không phải âm thanh cuối cùng), việc triển khai ý tưởng này rất khác nhau.

Trình theo dõi là biên tập âm nhạc với một loại giao diện cụ thể ( Cột dọc số và chữ cái thay vì khuông nhạc quen thuộc với các nhạc sĩ). Trình theo dõi đã xuất hiện từ lâu, trên những chiếc máy tính gia đình đầu tiên có thiết bị tổng hợp âm thanh đơn giản nhất. Các nốt được phát ra bởi phần cứng hệ thống (ví dụ: qua chip SID trên C64, qua chip AY trên ZX128). Trình theo dõi sử dụng mẫu để ghi chú âm thanh xuất hiện vào cuối những năm 80 trên nền tảng AMIGA và sau đó lan rộng sang tất cả các nền tảng khác có phương tiện tái tạo âm thanh kỹ thuật số.

Chính nguyên tắc hoạt động của máy theo dõi đã đặt ra những hạn chế nhất định đối với khả năng của nhạc sĩ, mặt khác, mang lại khả năng kiểm soát âm thanh khác thường. Không giống như chuẩn MIDI chuyên nghiệp, đây là chuẩn nghiệp dư được phát triển bởi những người đam mê âm nhạc máy tính chứ không phải nhà sản xuất thiết bị âm nhạc. Viết nhạc trong trình theo dõi khác với làm việc với trình sắp xếp MIDI phần mềm chuyên nghiệp. Các tính năng chính của trình theo dõi:

Lượng tử hóa thời gian nghiêm ngặt - các nốt không thể bắt đầu và ngừng phát âm bất cứ lúc nào mà chỉ ở một số vị trí nhất định (điều này gây khó khăn cho việc thực hiện một số hiệu ứng, chẳng hạn như chơi hợp âm guitar một cách mượt mà);
- Thiếu đa âm trên một kênh (rãnh), chính xác là có nhiều nốt có thể phát ra đồng thời như có các kênh trong rãnh;
- Sự hiện diện của “hiệu ứng” - lệnh ảnh hưởng đến quá trình chơi từng nốt riêng lẻ. Các hiệu ứng có thể khá bình thường (từ góc độ âm nhạc) - rung, điều khiển âm lượng, portamento; và những cái không hoàn toàn bình thường - dịch chuyển phần đầu của mẫu, điều khiển bộ lọc, v.v.

Mặc dù có một số hạn chế (so với MIDI), việc lưu trữ mẫu trong một tệp có bố cục mang lại những lợi thế rõ ràng - khả năng sử dụng bất kỳ âm sắc cần thiết nào, các đoạn của phần trực tiếp (đoạn riff guitar, vòng trống) - điều này cho phép bạn cải thiện chất lượng âm thanh và làm cho nó gần hơn với “âm thanh sống động”.

tồn tại một số lượng lớnđịnh dạng trình theo dõi - theo quy định, mỗi định dạng biên tập viên mới ngoài việc hỗ trợ một số định dạng phổ biến nhất, nó còn có riêng định dạng riêng. Các định dạng khác nhau về khả năng và cách tổ chức dữ liệu trong tệp, nhưng ý tưởng chung vẫn không thay đổi. Phổ biến nhất là bốn định dạng đã trở thành tiêu chuẩn (được hầu hết tất cả các biên tập viên hỗ trợ): MOD đơn giản (Sound Tracker/Pro Tracker) và S3M (Scream Tracker) và XM (Fast Tracker) và IT (Impulse Tracker) nâng cao hơn.

Định dạng trình theo dõi đầu tiên - MOD (từ mô-đun từ, đó là lý do tại sao nhạc theo dõi được gọi là mô-đun) - có khả năng khiêm tốn: 4 kênh, tối đa 15 nhạc cụ (chỉ các mẫu 8 bit, cộng với khả năng lặp đơn giản trong một mẫu), một bộ hiệu ứng ít ỏi. Sau đó, một bản sửa đổi MOD xuất hiện với khả năng sử dụng 31 nhạc cụ và 8 kênh.

S3M phần nào mở rộng khả năng của MOD - đặc biệt, bạn có thể sử dụng tối đa 32 kênh và số lượng hiệu ứng tăng lên. Nhưng định dạng mẫu vẫn bị giới hạn ở 8 bit.

XM và IT mang lại khả năng sáng tạo lớn hơn nhiều và chất lượng âm thanh cao hơn đáng kể. Một số lượng lớn các kênh (tùy thuộc vào trình chỉnh sửa và sự hỗ trợ từ người chơi), một số lượng lớn hiệu ứng, mẫu 16 bit (chúng có thể được lặp trực tiếp hoặc theo vòng lặp hai chiều), 64 nhạc cụ. Các công cụ trong XM/IT không đồng nghĩa với một mẫu - đó là mô tả về mẫu nào sẽ được sử dụng cho các phạm vi nốt nhất định của nhạc cụ (được gọi là các lớp, điều này cần thiết để cải thiện chất lượng mô phỏng các nhạc cụ trực tiếp) , âm lượng và đường bao toàn cảnh cũng như một số thông số khác.

Phát lại MOD/S3M yêu cầu ít tài nguyên CPU hơn một chút so với phát lại XM/IT phức tạp hơn. Tải trên CPU cũng phụ thuộc vào số lượng kênh trong mô-đun và thuật toán nội suy được sử dụng trong quá trình trộn (chất lượng âm thanh phụ thuộc rất nhiều vào chất lượng nội suy).

Các tệp nhạc theo dõi có thể có kích thước từ hàng trăm byte đến vài megabyte. Kích thước tệp trực tiếp phụ thuộc vào số lượng và chất lượng mẫu được sử dụng. Trung bình, một mô-đun có âm thanh tốt hơn hoặc ít hơn (ở bất kỳ thời lượng nào) mất 200-500 kilobyte.

Để giảm âm lượng chiếm dụng của âm nhạc trong trò chơi, bạn có thể lưu trữ một số bài hát trong một tệp, sử dụng cùng một mẫu nhạc cụ trong đó. Khả năng của trình theo dõi cho phép bạn sắp xếp một số đoạn lặp trong một bố cục; trong trò chơi, bạn có thể phát một bản nhạc như vậy, bắt đầu từ các vị trí khác nhau trong đó.

Có những sửa đổi về định dạng trình theo dõi tiêu chuẩn bằng cách sử dụng tính năng nén mẫu bằng OGG/MP3. Đây là các định dạng MO3 (kết hợp các định dạng IT/XM/S3M/MTM/MOD) và OXM (XM tiêu chuẩn, nhưng sử dụng OGG để đóng gói mẫu). Cả hai định dạng chỉ sử dụng tính năng nén cho những mẫu mà nó mang lại lợi ích về kích thước. Việc nén các mẫu dẫn đến giảm đáng kể dung lượng chiếm trên đĩa và chất lượng giảm gần như không thể nhận thấy. Các mẫu chỉ được lưu dưới dạng nén trong một tệp; khi mô-đun được tải, chúng sẽ được mở rộng trong bộ nhớ, do đó việc phát các mô-đun đó không làm tăng tải cho CPU, nhưng mô-đun trong khi phát lại sẽ chiếm cùng dung lượng RAM như một mô-đun. giải nén một cái. Việc sử dụng nén mẫu có thể chỉ đơn giản là giảm kích thước tệp hoặc cải thiện chất lượng âm thanh mà không thay đổi kích thước (do sử dụng mẫu chất lượng cao hơn). Công nghệ này có thể không phù hợp để sử dụng trên nền tảng năng lượng thấp - các mẫu có thể mất quá nhiều thời gian để giải mã (tải).

Ưu điểm:

  • Có khả năng có thể cung cấp tỷ lệ tốt nhất kích thước/chất lượng, khi kích thước của tệp nhạc rất hạn chế (100-500kb)
  • Việc tăng thời lượng của một tác phẩm sẽ làm tăng kích thước tệp rất ít
Nhược điểm:
  • Các định dạng theo dõi không linh hoạt như truyền phát âm thanh
  • Mô-đun đang được phát chiếm RAM (phù hợp với các hệ thống có số lượng RAM hạn chế, chẳng hạn như một số PDA)
  • Đủ cách tiếp cận không chuẩnđến việc viết nhạc, khác với ký hiệu âm nhạc thông thường, điều này làm phức tạp thêm sự phát triển của máy theo dõi dành cho các nhạc sĩ “bình thường”.

Chọn cái gì?

Sau khi làm quen với các chi tiết cụ thể của các định dạng âm nhạc khác nhau, cuối cùng chúng ta cũng có thể chuyển sang vấn đề thực tế là chọn định dạng phù hợp nhất trong khuôn khổ một dự án cụ thể. Trước tiên, bạn cần xác định tiêu chí lựa chọn: nền tảng mà trò chơi của bạn chạy có khả năng gì, khả năng gì? hạn chế kỹ thuật có sẵn. Cụ thể, dung lượng nhạc trên phương tiện và khi phát, RAM có quan trọng không? Tải CPU có quan trọng không? Có khả năng phần cứng để phát nhạc không (bộ giải mã MP3, bộ tổng hợp MIDI).

Việc sử dụng âm thanh phát trực tuyến là hợp lý khi không có giới hạn nghiêm ngặt về không gian chiếm dụng trên phương tiện và có đủ nguồn CPU để giải mã (hoặc có bộ giải mã phần cứng). Ngoài ra, nếu bạn cần tạo nhạc chất lượng rất cao (ví dụ: đài phát thanh trong loạt trò chơi GTA; nhạc được ghi trực tiếp), đơn giản là không còn lựa chọn nào khác ngoại trừ truyền phát âm thanh. Ưu điểm lớn của định dạng này là không có vấn đề gì về kỹ năng (hoặc thiếu) khi sử dụng các thiết bị và chương trình khác nhau của nhạc sĩ - họ có thể tự do sử dụng những công cụ thuận tiện nhất cho mình, bởi vì kết quả luôn có thể được ghi lại trong một tập tin âm thanh.

Nếu có những hạn chế nghiêm ngặt về dung lượng bộ nhớ bị chiếm dụng, tốt hơn hết bạn nên nghĩ đến các định dạng nhạc - MIDI hoặc nhạc theo dõi. Bạn cần lựa chọn giữa hai hướng này dựa trên khả năng phát các định dạng trên nền tảng mục tiêu(MIDI trên Palm hoặc GBA, giả sử bạn không thể phát nhiều) và các hạn chế về kích thước tệp. Khả năng của các nhạc sĩ của bạn cũng đóng một vai trò quan trọng (kể từ khi tạo ra âm nhạc chất lượngở những định dạng này đòi hỏi những kỹ năng nhất định).

Ngày nay, nó được sử dụng phổ biến, trong điều kiện bị hạn chế nghiêm trọng về dung lượng bộ nhớ trên phương tiện (thường là trò chơi phần mềm chia sẻ trên PC) được phân bổ cho âm nhạc, các đoạn trích dài một hai phút của âm thanh phát trực tuyến (thường là OGG) với chất lượng rất thấp (từ 56 kbps trở xuống, ở tốc độ 22050hz mono - khoảng 500-600 kilobyte). Trong những trường hợp như vậy, đáng suy nghĩ về khả năng sử dụng các định dạng theo dõi - trong trường hợp này, sức mạnh của CPU đủ để phát lại, nhưng đồng thời hoặc kích thước nhỏ hơn file, bạn có thể có được âm thanh sạch hơn, chất lượng cao hơn đáng kể (có lẽ kém sống động hơn - nhưng ở đây tất cả phụ thuộc vào kỹ năng của nhạc sĩ).

Nếu dự án thực hiện trên PC và dung lượng dành cho âm nhạc rất hạn chế (ví dụ: 500 kilobyte cho toàn bộ tác phẩm âm nhạc), bạn có thể nghĩ đến việc sử dụng tệp MIDI thay vì truyền phát âm thanh và mô-đun theo dõi. Vấn đề về các âm thanh khác nhau khi sử dụng các ngân hàng âm thanh khác nhau có thể được giải quyết bằng cách sử dụng bộ tổng hợp MIDI của phần mềm DirectX - Microsoft Software GS MIDI Synthezer. Nó sử dụng GS-bank 3 megabyte đi kèm với DirectX và nếu bạn viết một bản nhạc MIDI dành riêng cho bộ tổng hợp này, bạn có thể có được âm thanh rất tốt với mức tiêu thụ bộ nhớ tối thiểu cho thiết kế âm nhạc (500 kilobyte có thể dễ dàng phù hợp với hàng chục bản nhạc đã giải nén 5 -10 phút MIDI -file). Bạn cũng có thể sử dụng bộ tổng hợp MIDI phần mềm của riêng mình hoặc ngân hàng DLS của riêng bạn - trong trường hợp này, bạn sẽ nhận được tất cả lợi ích khi làm việc với âm nhạc qua MIDI và khả năng sử dụng âm sắc của riêng bạn, đặc trưng của các định dạng trình theo dõi.

Trên PDA và thiết bị cầm tay trình điều khiển gameĐịnh dạng phù hợp nhất hiện nay là nhạc theo dõi (định dạng cụ thể được chọn tùy thuộc vào sức mạnh của CPU) - âm lượng của phương tiện, trái ngược với sức mạnh của bộ xử lý, vẫn chưa phát triển đến khả năng tự do sử dụng âm thanh phát trực tuyến trong trò chơi .

Tóm lại, tôi muốn nói rằng việc lựa chọn định dạng nhạc không nên bị giới hạn bởi khả năng của bạn. triển khai phần mềm người chơi. Có một số lượng lớn các thư viện làm sẵn (cả trả phí và miễn phí) để sao chép tất cả định dạng được liệt kê cho tất cả các nền tảng nơi nó có thể được triển khai trong phần cứng.

Nhiều người có câu hỏi tương tự khi một bản nhạc hoặc chủ đề nào đó trong trò chơi thu hút sự chú ý của họ. Có thể bạn muốn có nó trên máy nghe nhạc của mình hoặc có thể bạn muốn thực hiện cuộc gọi. TrackID, Shazam hay Sound Hound sẽ giúp bạn nhận diện bản nhạc. Nhưng chúng ta cần sự tồn tại vật chất của anh ấy.

Nếu những cách khó hiểu của Google không dẫn đến kết quả và nền tảng trực tuyến Soundcloud đã từ chối yêu cầu của bạn, chúng tôi sẽ cố gắng giới thiệu bạn.

Chúng ta thường có hai vấn đề. Cách trích xuất nhạc và cách chuyển đổi các định dạng trò chơi cụ thể. , ví dụ: có các công thức nấu ăn cho các trò chơi cụ thể, mặc dù trang web này đã lỗi thời từ lâu nhưng đột nhiên nó sẽ có ích (chúng tôi nhận thấy Cuộn giấy cũ, GTA, Half-Life, Thế giới xe tăng, Cần cho Tốc độ, v.v.)

Đặc biệt - tiện ích.

Nhìn chung, nhạc được lưu trữ trong thư mục gốc của trò chơi và đôi khi không bị ẩn đi đâu cả. Đang tìm. Không tìm thấy nó? Sau đó, để trích xuất nhạc từ một trò chơi cụ thể, bạn nên sử dụng tiện ích đặc biệt, đặc biệt là vì các nhà phát triển có thể thay đổi định dạng âm thanh từ trò chơi này sang trò chơi khác (từ loạt phim này sang loạt phim khác), và ở đây các chương trình phổ thông không phải lúc nào cũng hữu ích. Vậy hãy cùng Google tiện ích cần thiết. Ví dụ: nó thuận tiện cho Saints Row 3.

Bạn có thể chuyển đổi nó sang định dạng được yêu cầu bằng một công cụ đa chức năng miễn phí. Nhà máy định dạng, Ví dụ. Nó cũng hỗ trợ các định dạng iPOd/iPhone/PSP/Blackberry.

Các chương trình phổ quát.

Nhưng ít nhiều chương trình phổ quát không nhiều lắm. Sự phát triển của Game Audio Player (có danh sách các trò chơi được hỗ trợ trong phần mô tả) và WinRipper đã kết thúc, tuy nhiên, chúng vẫn có những ưu điểm của mình.

Mọi thứ mang tính âm nhạc KHOẢNG CÁCH sẽ tìm, xuất, phát và có thể chuyển đổi sang WAV. Tuy nhiên, điều đáng nói là nhạc từ trò chơi có thể là âm thanh phát trực tuyến nén - WMA, OGG (thực sự là âm thanh "trực tiếp"), ở định dạng Midi hoặc trình theo dõi - MOD, S3M, XM và IT (còn gọi là nhạc mô-đun). Trong trường hợp cuối cùng này, trình phát GAP sẽ chỉ cung cấp cho bạn các nhạc cụ riêng lẻ vì nhạc mô-đun không phải là bản nhạc được ghi liên tục. Và nó không hỗ trợ midi chút nào.

Cảm ơn Chúa nó giải quyết được những vấn đề này WinRipper, nhưng đây là chương trình trích xuất, không phải trình phát. Nó có khả năng cắt nhạc ở các định dạng sau từ kho lưu trữ trò chơi tài nguyên:
WAV, VOC, AUD, AIFF, AU/SMD, 8SVX, RMI, HMP, HMI, XMI, MUS, CMF, MOD, S3M, IT, XM. Có chuyển đổi, không cụ thể - sang WAV và MID. Nhưng, luôn luôn có một chữ “nhưng”. VÀ KHOẢNG CÁCH, Và WinRipper làm việc với một định dạng đã biết.

Nó thường xảy ra rằng định dạng của âm nhạc không được biết trước. Đừng chơi trò đoán mò hãy tải Total Recorder Pro hoặc Total Đầu ghi video Chuyên nghiệp và vui mừng - nó thu và số hóa âm thanh từ hầu hết mọi nơi ở định dạng WAV hoặc MP3. Tất nhiên, có một điều bất tiện - quá trình ghi âm diễn ra theo thời gian thực, nhưng chương trình lại bị cháy. Đây là bài đánh giá duy nhất mà tôi có thể tìm thấy (Phiên bản cũ)<3 .

Những ai muốn lau đi giọt nước mắt hoài niệm về ngày xưa và nghe nhạc từ hộp mực Sega Mega Drive... Đã có một nhóm trên VK lâu rồi