Kỹ thuật tạo âm nhạc theo thủ tục [đóng]


89

Tôi đã suy nghĩ rất nhiều về việc tạo nội dung theo thủ tục trong một thời gian và tôi chưa bao giờ thấy nhiều thử nghiệm với âm nhạc theo thủ tục. Chúng tôi có các kỹ thuật tuyệt vời để tạo mô hình, hoạt ảnh, kết cấu, nhưng âm nhạc vẫn hoàn toàn tĩnh hoặc đơn giản là các vòng lặp nhiều lớp (ví dụ: Spore).

Vì vậy, tôi đã nghĩ ra các kỹ thuật tạo âm nhạc tối ưu và tôi tò mò không biết người khác nghĩ gì. Ngay cả khi bạn chưa xem xét nó trước đây, bạn nghĩ điều gì sẽ hoạt động tốt? Vui lòng sử dụng một kỹ thuật cho mỗi câu trả lời và bao gồm các ví dụ nếu có thể. Kỹ thuật này có thể sử dụng dữ liệu hiện có hoặc tạo nhạc hoàn toàn từ đầu, có thể dựa trên một số loại đầu vào (tâm trạng, tốc độ, bất cứ thứ gì).


19
Cuối cùng là một câu hỏi về âm nhạc về thực sự lập trình / tạo / tạo nhạc! : D
Oddmund 8/10/08

Câu trả lời:


28

Dữ liệu tự động di động - đọc .

Bạn cũng có thể dùng thử tại đây .

Biên tập:

rakkarage đã cung cấp một tài nguyên khác: http://www.ibm.com/developerworks/java/library/j-camusic/


1
Wolfram thật thông minh! Làm tốt lắm làm cho loại điều để truy cập quá ...
defmeta

Tôi không thể làm cho nó hoạt động trên hộp Ubuntu của mình. :(
Calmarius


Vấn đề với điều này là nó bị mắc kẹt trong hệ thống 12 giai điệu. Một thuật toán tạo âm nhạc thực sự sẽ vượt trội hơn so với thiết bị thông thường và có khả năng kiểm soát giai điệu hài hòa miễn phí. Đàn piano được thiết kế với một hệ thống âm sắc cụ thể đã được thống nhất làm tiêu chuẩn vào thời đó. Tuy nhiên, hệ thống 12 giai điệu vẫn rực rỡ trong thời gian đó.
Timothy Swan

42

Hệ thống thành công nhất có thể sẽ kết hợp một số kỹ thuật. Tôi nghi ngờ bạn sẽ tìm thấy một kỹ thuật hoạt động tốt cho giai điệu, hòa âm, nhịp điệu và tạo chuỗi âm trầm trên tất cả các thể loại âm nhạc.

Ví dụ, chuỗi Markov rất thích hợp để tạo chuỗi giai điệu và hài hòa. Phương pháp này yêu cầu phân tích các bài hát hiện có để xây dựng xác suất chuyển đổi chuỗi. Vẻ đẹp thực sự của dây chuyền Markov là các trạng thái có thể là bất cứ điều gì bạn muốn.

  • Để tạo giai điệu, hãy thử các số nốt tương đối chính (ví dụ: nếu phím là C thứ, C sẽ là 0, D sẽ là 1, D # sẽ là 2, v.v.)
  • Để tạo hòa âm, hãy thử kết hợp các số nốt tương đối của phím cho gốc của hợp âm, loại hợp âm (chính, phụ, giảm dần, tăng thêm, v.v.) và độ đảo của hợp âm (gốc, đầu tiên hoặc thứ hai)

Mạng nơron rất phù hợp với dự đoán chuỗi thời gian (dự báo), có nghĩa là chúng cũng phù hợp để 'dự đoán' chuỗi âm nhạc khi được đào tạo dựa trên các giai điệu / hòa âm phổ biến hiện có. Kết quả cuối cùng sẽ tương tự như kết quả của cách tiếp cận chuỗi Markov. Tôi không thể nghĩ đến bất kỳ lợi ích nào đối với cách tiếp cận chuỗi Markov ngoài việc giảm dung lượng bộ nhớ.

Ngoài cao độ, bạn sẽ cần thời lượng để xác định nhịp điệu của các nốt nhạc hoặc hợp âm được tạo ra. Bạn có thể chọn kết hợp thông tin này vào các trạng thái chuỗi Markov hoặc kết quả đầu ra của mạng nơ-ron hoặc bạn có thể tạo riêng và kết hợp các chuỗi cao độ và thời lượng độc lập.

Các thuật toán di truyền có thể được sử dụng để phát triển các phần nhịp điệu. Một mô hình đơn giản có thể sử dụng một nhiễm sắc thể nhị phân, trong đó 32 bit đầu tiên đại diện cho mô hình của một trống đá, 32 bit thứ hai là một cái bẫy, 32 bit thứ ba là một chiếc mũ kín, v.v. Nhược điểm trong trường hợp này là chúng yêu cầu phản hồi liên tục của con người để đánh giá tính phù hợp của các mẫu mới phát triển.

Một hệ thống chuyên gia có thể được sử dụng để xác minh các trình tự được tạo ra bởi các kỹ thuật khác. Cơ sở kiến ​​thức cho một hệ thống xác nhận như vậy có thể được lấy từ bất kỳ trang web hoặc sách lý thuyết âm nhạc hay nào. Hãy thử Ricci Adams ' musictheory.net .


10

Có hơn 50 năm nghiên cứu về các kỹ thuật này, thường bị bỏ qua bởi các nhà phát triển không quen thuộc với lịch sử của âm nhạc máy tính và sáng tác thuật toán. Có thể tìm thấy nhiều ví dụ về hệ thống và nghiên cứu giải quyết những vấn đề này tại đây:

http://www.algorithmic.net


7

Một thuật toán dễ dàng và hơi hiệu quả là sử dụng tiếng ồn 1 / f hay còn gọi là "tiếng ồn màu hồng" để chọn thời lượng và ghi chú từ thang âm. Điều này nghe giống như âm nhạc và có thể là một điểm khởi đầu tốt.

Một thuật toán tốt hơn là sử dụng "chuỗi markov" .. quét một số bản nhạc ví dụ và xây dựng một bảng xác suất. Trong trường hợp đơn giản nhất, giống như C có 20% khả năng theo sau A. Để làm cho điều này tốt hơn, hãy xem trình tự của một vài ghi chú trước đây, ví dụ: "CA B" có 15% khả năng được theo sau bởi B, và 4% có khả năng được theo sau bởi một Bb, v.v. Sau đó, chỉ cần chọn các ghi chú bằng cách sử dụng xác suất của các ghi chú đã chọn trước đó. Thuật toán đặc biệt đơn giản này tạo ra kết quả khá tốt.

Chuỗi Markov cho thế hệ âm nhạc



4

Phần mềm của tôi sử dụng lý thuyết tiến hóa ứng dụng để "phát triển" âm nhạc. Quá trình này tương tự như chương trình The Blind Watchmaker của Richard Dawkins - MusiGenesis thêm vào các yếu tố âm nhạc một cách ngẫu nhiên, và sau đó người dùng quyết định có giữ từng yếu tố đã thêm vào hay không. Ý tưởng là chỉ giữ lại những gì bạn thích và loại bỏ bất cứ thứ gì nghe không ổn và bạn không cần phải qua bất kỳ khóa đào tạo âm nhạc nào để sử dụng nó.

Giao diện tuyệt vời, nhưng nó cũ - hãy kiện tôi.


4

Tôi luôn thích các trò chơi Lucasarts cũ sử dụng hệ thống iMuse, tạo ra nhạc nền không bao giờ kết thúc cho trò chơi và rất âm nhạc (vì hầu hết nó vẫn được tạo ra bởi một nhà soạn nhạc). Bạn có thể tìm thấy các thông số kỹ thuật (bao gồm cả bằng sáng chế) tại đây: http://en.wikipedia.org/wiki/IMUSE

Nintendo dường như là công ty duy nhất vẫn sử dụng cách tiếp cận tương tự như iMuse để tạo hoặc ảnh hưởng đến âm nhạc một cách nhanh chóng.

Trừ khi dự án của bạn mang tính thử nghiệm, tôi sẽ không từ bỏ việc sử dụng một nhà soạn nhạc - một nhà soạn nhạc thực sự của con người sẽ tạo ra nhiều kết quả âm nhạc và dễ nghe hơn là một thuật ngữ.

So sánh nó với việc viết một bài thơ: Bạn có thể dễ dàng tạo ra những bài thơ nonsene nghe có vẻ rất tiên phong, nhưng để mô phỏng lại shakespeare bằng một thuật ngữ thì rất khó, nói một cách nhẹ nhàng.


Rất đúng, nhưng tôi nghĩ rằng người dùng sẽ xa quan tâm nhiều hơn trong "ok" hay "đàng hoàng" âm nhạc mà phản ứng với gameplay so với cùng 5 ca khúc "vĩ đại" hơn và hơn nữa ...
RCIX

@RCIX: Bạn đã bao giờ chơi trò chơi với hệ thống iMuse chưa? Nó phản ứng với vô số thứ, nó rất tinh tế hoặc hiển nhiên, theo yêu cầu, nhưng nó sử dụng âm nhạc được viết bởi một nhà soạn nhạc con người. Nó không tạo ra âm nhạc hoàn toàn mới, chưa từng nghe trước đây, nhưng nó có sự chuyển đổi tuyệt vời giữa các tín hiệu, nó có thể thay đổi cách sắp xếp (đưa nhạc cụ mới vào, kết hợp các nhạc cụ khác), nó có thể tăng tốc hoặc giảm tốc độ, tất cả đều không bị lỡ nhịp . Điều này khác rất xa so với "5 bản nhạc tuyệt vời lặp đi lặp lại". Tôi sẽ gọi nó là "một dòng nhạc liên tục được định hình để phù hợp với tâm trạng của trò chơi ở thời điểm hiện tại".
Galghamon

3

Bạn đã xem qua SoundHelix (http://www.soundhelix.com) chưa? Đó là một khuôn khổ Java Mã nguồn mở để tạo nhạc ngẫu nhiên theo thuật toán tạo ra âm nhạc khá gọn gàng. Bạn có thể sử dụng SoundHelix như một ứng dụng độc lập, như một applet được nhúng trong một trang web, dưới dạng một applet dựa trên JNLP hoặc bạn có thể đưa nó vào chương trình Java của riêng mình.

Có thể tìm thấy các ví dụ được tạo bằng SoundHelix tại đây: http://www.soundhelix.com/audio-examples


3

Nghiên cứu về thế hệ âm nhạc thủ tục không nhàm chán đã quay trở lại. Duyệt qua các số báo cũ và mới của Tạp chí Âm nhạc Máy tính http://www.mitpressjournals.org/cmj (không có tên miền thật?) Đây là các bài báo kỹ thuật nghiêm túc được sử dụng thực tế để tổng hợp âm nhạc, thợ hàn sắt, thợ đàn bit và các nhà nghiên cứu học thuật. Đó không phải là một bài đánh giá và phỏng vấn lông bông, chẳng hạn như một số bản ghi mà bạn có thể tìm thấy ở các hiệu sách lớn.


Tôi nên đề cập đến kiến ​​thức của tôi về tạp chí này dựa trên đăng ký tôi đã có nhưng đã hết hiệu lực cách đây vài năm. tôi cho rằng nó vẫn tốt!
DarenW

2

Một chủ đề lớn như vậy. Bạn có thể xem ứng dụng iPad, Thicket hoặc phần mềm Ripple của tôi tại morganpackard.com. Theo kinh nghiệm của tôi, hầu hết các phương pháp tiếp cận học thuật đối với thế hệ âm nhạc năng động đều đưa ra những thứ nghe có vẻ hàn lâm. Tôi nghĩ rằng những thứ thành công hơn được tìm thấy ở rìa của thế giới câu lạc bộ / điện tử. Monolake là anh hùng của tôi về mặt này. Nội dung rất dễ nghe, rất nhiều do máy tính tạo ra. Nhạc của tôi cũng không tệ. "Cuốn sách bảng chữ cái" của Paul Lansky là một ví dụ điển hình về âm nhạc thuật toán cực kỳ dễ nghe, đặc biệt là khi anh ấy là một chàng trai học thuật.


1
Ngoài ra, hãy xem các cộng đồng xung quanh các công cụ mà các nhạc sĩ sử dụng để tạo ra nội dung - Pure Data, SuperCollider, Max. Tôi sẽ bắt đầu bằng cách tìm một nhạc sĩ có tác phẩm bạn thích và làm việc ngược lại từ đó, thay vì bắt đầu bằng việc tìm kiếm các kỹ thuật thú vị về mặt khái niệm.
morgancodes

1

Kỹ thuật mà tôi đang xem xét là tạo ra các mẫu âm nhạc nhỏ, lên đến một ô nhịp hoặc hơn. Gắn thẻ các mẫu này bằng các từ định danh cảm giác như 'phấn khích', 'dữ dội', v.v. Khi bạn muốn tạo nhạc cho một tình huống, hãy chọn một vài mẫu dựa trên các thẻ này và chọn nhạc cụ bạn muốn chơi cùng. Dựa trên nhạc cụ, tìm ra cách kết hợp các mẫu (ví dụ: trên đàn piano, bạn có thể chơi tất cả cùng nhau, tùy thuộc vào nhịp tay, trên một cây đàn guitar, bạn có thể chơi các nốt liên tiếp nhanh chóng) và sau đó kết xuất nó sang PCM . Ngoài ra, bạn có thể thay đổi phím, thay đổi tốc độ, thêm hiệu ứng, v.v.


1

Kỹ thuật cụ thể mà bạn đang mô tả là thứ mà Thomas Dolby đã làm cách đây mười hoặc mười lăm năm, mặc dù bây giờ tôi không thể nhớ ông ấy gọi nó là gì nên tôi không thể cung cấp cho bạn một cụm từ tìm kiếm tốt.

Nhưng hãy xem bài viết này trên Wikipedia và trang Metafilter này.


1
Bạn đang nghĩ đến "âm nhạc tổng hợp" và chương trình có tên "Koan".
MusiGenesis

1

Cuốn sách Thành phần thuật toán là một chuyến tham quan hay về một số phương pháp được sử dụng:

"Các chủ đề được đề cập là: mô hình markov, ngữ pháp chung, mạng chuyển tiếp, sự hỗn loạn và tự tương đồng, thuật toán di truyền, tự động hóa tế bào, mạng thần kinh và trí tuệ nhân tạo."

Đó là một điểm khởi đầu tốt về chủ đề rộng lớn này, tuy nhiên nó không bao giờ mô tả sâu về cách thức hoạt động của từng phương pháp. Nó cung cấp một cái nhìn tổng quan tốt về từng loại, nhưng sẽ không đủ nếu bạn chưa có kiến ​​thức về chúng.


0

Quay lại cuối những năm 90, Microsoft đã tạo ra một điều khiển ActiveX được gọi là "Điều khiển âm nhạc tương tác", điều khiển này thực hiện chính xác những gì bạn đang tìm kiếm. Thật không may, họ dường như đã từ bỏ dự án.


Đó là bởi vì âm nhạc mà nó tạo ra hoàn toàn thổi hồn, đây là một đặc điểm khá phổ biến đối với âm nhạc được sáng tác theo thuật toán.
MusiGenesis 8/10/08

Dự án Wolfram Tones được tham chiếu bởi @thekidder ở trên là một thành công đáng kể. Tôi đã mong đợi một trò chơi rnd thông thường ...
defmeta



0

Tôi đã xem xét thực hiện đề xuất dự án này - "8.1 " từ nhóm nghiên cứu "Lý thuyết và thực dụng trong ngôn ngữ lập trình" từ Đại học Copenhagen - bộ phận CS:

8.1 Thu hoạch tự động và phân tích thống kê của Music Corpora

Phân tích bản nhạc truyền thống bao gồm một hoặc nhiều người phân tích nhịp điệu, trình tự hợp âm và các đặc điểm khác của một bản nhạc, đặt trong bối cảnh so sánh thường mơ hồ giữa các bản nhạc khác của cùng một nhà soạn nhạc hoặc các nhà soạn nhạc khác trong cùng thời kỳ.

Phân tích tự động truyền thống về âm nhạc hầu như không xử lý được bản nhạc, nhưng tập trung vào phân tích tín hiệu và sử dụng các kỹ thuật máy học để trích xuất và phân loại trong, chẳng hạn như tâm trạng hoặc thể loại. Ngược lại, nghiên cứu ban đầu tại DIKU nhằm mục đích tự động hóa các phần của phân tích bản nhạc. Giá trị gia tăng là tiềm năng trích xuất thông tin từ khối lượng lớn bản nhạc không thể dễ dàng thực hiện bằng tay và không thể phân tích ý nghĩa bằng kỹ thuật máy học.

Điều này - như tôi thấy - là hướng ngược lại với câu hỏi của bạn, dữ liệu được tạo ra - tôi tưởng tượng - có thể được sử dụng trong một số trường hợp tạo nhạc theo quy trình.


0

Ý kiến ​​của tôi là âm nhạc tổng hợp chỉ phát huy tác dụng khi nó trải qua quá trình chọn lọc khắt khe. David Cope, một nhà tiên phong về âm nhạc theo thuật toán, sẽ trải qua hàng giờ đầu ra âm nhạc từ các thuật toán của mình (mà tôi nghĩ chủ yếu dựa trên Markov Chain) để chọn ra một số ít thực sự hoạt động tốt.

Tôi nghĩ rằng quá trình lựa chọn này có thể được tự động hóa bằng cách mô hình hóa các đặc điểm của một phong cách âm nhạc cụ thể. Ví dụ, phong cách "disco" sẽ cho rất nhiều điểm cho phần bassline có các nhịp điệu và phần trống có bẫy ở nhịp đập lưng nhưng trừ điểm cho các phần hòa âm không hài hòa.

Thực tế là quá trình sáng tác âm nhạc chứa rất nhiều thành ngữ thực hành đến mức chúng rất khó để mô phỏng nếu không có kiến ​​thức cụ thể về lĩnh vực này.


0

Tôi đang làm việc trên một mô-đun Python cho âm nhạc thủ tục. Tôi chỉ lập trình những gì tôi biết về nốt, thang âm và cấu tạo hợp âm, sau đó có thể để nó ngẫu nhiên tạo ra nội dung từ những ràng buộc đó. Tôi chắc rằng có nhiều lý thuyết và khuôn mẫu hơn mà một hệ thống như vậy có thể được dạy, đặc biệt là bởi một người hiểu chủ đề hơn. Sau đó, bạn có thể sử dụng các hệ thống đó làm ràng buộc cho các thuật toán di truyền hoặc tạo nội dung ngẫu nhiên.

Bạn có thể xem qua cách triển khai của tôi tại đây , đặc biệt là ví dụ khách hàng tiềm năng được tạo ngẫu nhiên có thể hữu ích cho bạn. Một người nào đó có hiểu biết vững chắc về sự tiến triển của hợp âm có thể tạo cấu trúc bài hát từ các kỹ thuật như vậy và thực hiện các giai điệu ngẫu nhiên bị ràng buộc như thế này trên nó. Kiến thức của tôi về lý thuyết âm nhạc không mở rộng đến mức đó.

Nhưng về cơ bản, bạn sẽ cần mã hóa lý thuyết về loại âm nhạc bạn muốn tạo ra, sau đó sử dụng lý thuyết đó làm ràng buộc cho một số thuật toán để khám phá phạm vi của lý thuyết đó theo thủ tục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.