Процедурні методи створення музики [закрито]


89

Я деякий час багато думав над процедурним генеруванням контенту, і ніколи не бачив великих експериментів з процедурною музикою. У нас є фантастичні прийоми для створення моделей, анімацій, текстур, але музика все одно є або повністю статичною, або просто багатошаровою петлею (наприклад, Spore).

Через це я продумував оптимальні методи створення музики, і мені цікаво, що мають на увазі інші люди. Навіть якщо ви раніше цього не розглядали, що, на вашу думку, буде працювати добре? Будь ласка, один прийом на відповідь, і, якщо це можливо, додайте приклади. Ця техніка може використовувати наявні дані або генерувати музику повністю з нуля, можливо, на якомусь вході (настрій, швидкість, що завгодно).


19
Нарешті, музичне питання про власне програмування / створення / створення музики! : D
Оддмунд

Відповіді:


28

Клітинні автомати - читайте .

Ви також можете спробувати тут .

Редагувати:

rakkarage надав ще один ресурс: http://www.ibm.com/developerworks/java/library/j-camusic/


1
Вольфрам такий розумний! Чудова робота, що зробила подібні речі такими доступними ...
defmeta

Мені не вдалося змусити його працювати на моєму вікні Ubuntu. :(
Calmarius


Проблема цього полягає в тому, що він потрапляє в 12-тональну систему. Справжній алгоритм генерації музики буде вищим за звичайний інструментарій та матиме вільний гармонійний контроль тону. Фортепіано було розроблено з особливою тональною системою, яка була узгоджена як стандарт у його часи. Тим не менше, 12-тональна система була блискучою для свого часу.
Timothy Swan

42

Найуспішніша система, швидше за все, поєднує в собі кілька методів. Сумніваюсь, ви знайдете одну техніку, яка добре працює для створення мелодії, гармонії, ритму та басових послідовностей у всіх жанрах музики.

Наприклад, ланцюги Маркова добре підходять для генерації мелодійних та гармонійних послідовностей. Цей метод вимагає аналізу існуючих пісень для побудови ймовірностей ланцюгового переходу. Справжня краса ланцюгів Маркова полягає в тому, що штати можуть бути будь-якими.

  • Для генерації мелодії спробуйте ноти відносно клавіш (наприклад, якщо клавіша до мінору, C буде 0, D буде 1, D # буде 2 і так далі)
  • Для створення гармонії спробуйте комбінацію відносно ключових нот для кореня акорду, типу акорду (мажор, мінор, зменшений, доповнений тощо) та інверсії акорду (корінь, перший або другий)

Нейронні мережі добре підходять для прогнозування часових рядів (прогнозування), що означає, що вони однаково підходять для "прогнозування" музичної послідовності, коли тренуються з існуючими популярними мелодіями / гармоніями. Кінцевий результат буде схожий на результат підходу Маркова. Я не можу придумати жодної вигоди від підходу Маркова, крім зменшення обсягу пам'яті.

На додаток до висоти тону вам знадобиться тривалість для визначення ритму сформованих нот або акордів. Ви можете включити цю інформацію до станів ланцюга Маркова або виходів нейронної мережі, або ви можете сформувати її окремо та поєднати незалежні послідовності висоти та тривалості.

Генетичні алгоритми можуть бути використані для розвитку ритмових секцій. Проста модель може використовувати двійкову хромосому, в якій перші 32 біти представляють шаблон ударного барабана, другі 32 біти пастки, треті 32 біти закритої шапки тощо. Недоліком у цьому випадку є те, що вони вимагають постійного зворотного зв’язку з боку людини, щоб оцінити придатність нових еволюціонованих моделей.

Експертна система може бути використана для перевірки послідовностей , що генеруються іншими методами. Базу знань для такої системи перевірки, можливо, можна підняти з будь-якої хорошої книги з теорії музики чи веб-сайту. Спробуйте Річчі Адамса musictheory.net .


10

Існує понад 50 років досліджень цих методів, на які часто не звертають уваги розробники, не знайомі з історією комп’ютерної музики та алгоритмічною композицією. Численні приклади систем та досліджень, які вирішують ці проблеми, можна знайти тут:

http://www.algorithmic.net


7

Простий і дещо ефективний алгоритм - використовувати 1 / f шум, відомий як "рожевий шум", для вибору тривалості та нотаток за шкалою. Це звучить як музика і може стати гарною відправною точкою.

Кращий алгоритм - використовувати "ланцюжки Маркова" .. відсканувати якийсь приклад музики та побудувати таблицю ймовірностей. У найпростішому випадку це може бути щось на зразок С - 20% ймовірності слідуватиме за А. Щоб покращити це, подивіться на послідовність останніх декількох приміток, наприклад, "СА В" - на 15%, ймовірно, буде В, і 4%, ймовірно, за ними слід Bb тощо. Потім просто підбирайте нотатки, використовуючи ймовірності раніше вибраних нотаток. Цей надзвичайно простий алгоритм дає досить хороші результати.

Ланцюжки Маркова для музичного покоління



4

Моє програмне забезпечення використовує прикладну еволюційну теорію для «вирощування» музики. Процес схожий на програму Річарда Докінза " Сліпий годинникар " - MusiGenesis додає музичні елементи випадковим чином, і тоді користувач вирішує, чи слід зберігати кожен доданий елемент. Ідея полягає в тому, щоб просто зберегти те, що вам подобається, і кинути все, що не звучить правильно, і для цього не потрібно мати ніякої музичної підготовки.

Інтерфейс дме, але він старий - подайте мене в суд.


4

Мені завжди подобалися старі ігри Lucasarts, які використовували систему iMuse, яка створювала нескінченний реактивний саундтрек до гри і була дуже музичною (бо більшу частину її все ще створив композитор). Ви можете знайти специфікації (включаючи патент) тут: http://en.wikipedia.org/wiki/IMUSE

Здається, Nintendo - єдина компанія, яка все ще використовує підхід, подібний до iMuse, для створення музики або впливу на неї на льоту.

Якщо ваш проект не є дуже експериментальним, я б не відмовився від використання композитора - справжній людський композитор дасть набагато більше музичних та прослуховуваних результатів, ніж алгоритм.

Порівняйте це з написанням вірша: Ви легко можете створити безглузді вірші, які звучать дуже авангардно, але тиражувати Шекспіра алгоритмом важко, м’яко кажучи.


Дуже правда, але я думаю, що користувачів буде набагато більше цікавити "добре" або "гідна" музика, яка реагує на геймплей, ніж ті самі 5 "чудових" треків знову і знову ...
RCIX,

@RCIX: Ви коли-небудь грали в гру з системою iMuse? Він реагує на багато речей, дуже тонко або очевидно, як потрібно, але використовує музику, написану композитором-людиною. Він не генерує абсолютно нової, ніколи раніше не почутої музики, але робить чудові переходи між репліками, може змінювати аранжування (вводити нові інструменти, змішувати інші), може пришвидшувати або сповільнювати, і все, не пропускаючи жодного удару . Це дуже далеко від "тих самих 5 чудових треків знову і знову". Я б назвав це "одним безперервним потоком музики, який відповідає настрою гри на даний момент".
Галгамон

3

Ви заглянули в SoundHelix (http://www.soundhelix.com)? Це фреймворк з відкритим кодом Java для алгоритмічного створення випадкової музики, який створює досить акуратну музику. Ви можете використовувати SoundHelix як самостійну програму, як аплет, вбудований у веб-сторінку, як аплет на основі JNLP, або можете включити його у власну програму Java.

Приклади, створені за допомогою SoundHelix, можна знайти тут: http://www.soundhelix.com/audio-examples


3

Дослідження ненудної процедурної генерації музики сягають глибокої давнини. Перегляньте старі та нові випуски журналу Computer Music http://www.mitpressjournals.org/cmj (немає справжнього доменного імені?) Тут є серйозні технічні статті, які фактично використовуються для синтезаторів музики, паяльних жакеїв, пастухів та академічних дослідників. Це від пухнастих ганчірок рецензій та інтерв’ю, таких як кілька журналів, які ви можете знайти у великих книгарнях.


слід зазначити, що мої знання про цей журнал базуються на підписці, яку я мав, але втратив чинність кілька років тому. Я припускаю, що це все ще так само добре!
DarenW

2

Такий великий предмет. Ви можете поглянути на мій додаток iPad, Thicket або моє програмне забезпечення Ripple на веб-сайті morganpackard.com. З мого досвіду, більшість академічних підходів до динамічного створення музики придумують речі, які звучать, ну, академічно. Я думаю, що більш успішні речі знаходяться на краях світового клубу / електроніки. Монолейк - мій герой у цьому плані. Дуже слухаються речі, дуже багато генеруються комп’ютером. Моя власна музика теж непогана. "Книга абетки" Пола Ланського є прекрасним прикладом надзвичайно слухаючої алгоритмічної музики, особливо враховуючи, що він академічний хлопець.


1
Також перевірте спільноти навколо інструментів, які музиканти використовують для створення матеріалів - Pure Data, SuperCollider, Max. Я б почав із пошуку музиканта, чия робота вам подобається, і працював би від цього, а не починаючи з пошуку концептуально цікавих технік.
morgancodes

1

Техніка, яку я розглядав, полягає у створенні невеликих музичних візерунків, аж до такту. Позначте ці шаблони ідентифікаторами відчуття, такими як "хвилювання", "інтенсивність" тощо. Коли ви хочете створити музику для певної ситуації, виберіть кілька шаблонів на основі цих тегів та виберіть інструмент, на якому ви хочете на ньому грати. Виходячи з інструменту, придумайте, як поєднувати візерунки (наприклад, на фортепіано, можливо, ви зможете зіграти це все разом, залежно від розмаху рук, на гітарі ви зможете швидко грати ноти), а потім відтворити його на PCM . Крім того, ви можете змінити клавішу, змінити швидкість, додати ефекти тощо.


1

Конкретна техніка, яку ви описуєте, - це те, над чим Томас Долбі працював десять чи п’ятнадцять років тому, хоча зараз я не пам’ятаю, як він це називав, тому не можу дати вам хороший пошуковий термін.

Але дивіться цю статтю Вікіпедії та цю сторінку Metafilter.


1
Ви думаєте про "генеративну музику" та програму "Коан".
MusiGenesis

1

Книга « Алгоритмічний склад» - це хороший огляд кількох використовуваних методів:

"Висвітлюються теми: моделі Маркова, генеративні граматики, перехідні мережі, хаос і самоподібність, генетичні алгоритми, клітинні автомати, нейронні мережі та штучний інтелект".

Це хороша відправна точка для цієї широкої теми, однак вона ніколи не описує детально, як працює кожен метод. Він забезпечує хороший огляд кожного, але цього буде недостатньо, якщо ви ще не маєте про них знань.


0

Ще наприкінці 90-х Microsoft створила елемент керування ActiveX під назвою "Інтерактивне управління музикою", який точно відповідав вашим потребам. На жаль, вони, здається, відмовились від проекту.


Це тому, що музика, яку вона створила, повністю задула, що є досить загальною характеристикою алгоритмічно складеної музики.
MusiGenesis

Проект Wolfram Tones, на який посилається @thekidder вище, надзвичайно успішний у тому, що він не продуває. Я очікував звичайної локшини ...
defmeta



0

Я розглядав проектну пропозицію - "8.1 " з дослідницької групи "Теорія і практика в мові програмування" з Університету Копенгагена - департамент CS:

8.1 Автоматизоване збирання та статистичний аналіз музичних корпусів

Традиційний аналіз нотних аркушів складається з одного або декількох осіб, які аналізують ритм, послідовності акордів та інші характеристики окремого твору, встановленого в контексті часто туманного порівняння інших творів тим самим композитором чи іншими композиторами того ж періоду.

Традиційний автоматизований аналіз музики майже не обробляє ноти, але зосереджується на аналізі сигналів та використанні методів машинного навчання для вилучення та класифікації, скажімо, за настроєм чи жанром. Навпаки, початкові дослідження в DIKU спрямовані на автоматизацію частин аналізу нотних композицій. Додана вартість - це потенціал для вилучення інформації з великих обсягів нот, що неможливо легко зробити вручну і не може бути змістовно проаналізовано методами машинного навчання.

Це, на мою думку, є протилежним напрямком вашого запитання, генеровані дані, я думаю, можуть бути використані в деяких випадках процедурного породження музики.


0

На мою думку, генеративна музика працює лише тоді, коли вона проходить строгий процес відбору. Девід Коуп, піонер алгоритмічної музики, проходив години музичного виходу зі своїх алгоритмів (які, я думаю, в основному засновані на Маркові Ланцюгу), щоб виділити ті кілька, які насправді вийшли непоганими.

Я думаю, що цей процес відбору можна автоматизувати шляхом моделювання характеристик певного музичного стилю. Наприклад, стиль "дискотека" присуджує безліч балів за басову лінію, яка має незвичні та партії барабанів із пастками на зворотних ритмах, але віднімає очки для сильно дисонансних гармоній.

Справа в тому, що процес музичної композиції наповнений такою кількістю ідіоматичних практик, що їх дуже важко моделювати без конкретних знань у цій галузі.


0

Я працював над модулем Python для процедурної музики. Я просто запрограмував те, що знаю про ноти, гами та побудову акордів, а потім мав змогу довільно генерувати вміст із цих обмежень. Я впевнений, що такої системи можна навчити більше теорії та закономірностей, особливо тому, хто краще розуміється на цій темі. Тоді ви можете використовувати ці системи як обмеження для генетичних алгоритмів або рандомізованого генерування вмісту.

Ви можете переглянути мою реалізацію тут переглянути , особливо випадково згенерований приклад свинцю може бути вам корисний. Хтось із глибоким розумінням акордових прогресій може створити пісенну структуру з подібних прийомів та реалізувати над нею такі обмежені випадкові мелодії. Мої знання з теорії музики не так далеко поширюються.

Але в основному вам потрібно буде закодувати теорію того типу музики, який ви хочете створити, а потім використовувати це як обмеження для деякого алгоритму процедурного вивчення діапазону цієї теорії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.