Генерация музыки

Импорт текстур, моделей, звуков и пр.

Генерация музыки

Сообщение AABB 08 май 2016, 00:39

Надеюсь написал в подходящий раздел. Я тут решил для разнообразия попробовать сделать в игре генератор музыки. При чем игра должна идти на мобильных. Но что-то, чем больше работаю над скриптом, тем хуже всё становится. Во 1х - даже на прошлогоднем топовом телефоне музыка идёт медленно, а на поза-позапрошлогоднем ещё и с запинками. Во 2х бывают щелчки.

А я ведь не программирую целый оркестр. Я взял для начала 3 инструмента. Сэмплы взял wav из бесплатных sfz банков. 4-6 сэмплов на октаву. То есть, например, есть сэмпл ноты "до", а если надо взять ноту "до #", то тот же сэмпл играется с повышенным питчем. У каждого инструмента есть параметр полифония, то есть сколько нот может звучать одновременно. И при старте приложения создаётся объект с AudioSource'ми, количество которых равно общей полифонии плюс несколько запасных. И вот сейчас их где-то 12, не так уж много. Ещё создаётся список этих компонентов, как бы пул. И по ходу игры каждый инструмент берёт из этого пула AudioSource, грузит в него свой сэмпл, присваивает параметры громкости и питча, а когда нота перестаёт звучать, то AudioSource возвращается в пул. Что я делаю не так?

А ну да, у скрипта есть публичная переменная BPM - количество ударов метронома в минуту, грубо говоря. Пробовал синхронизировать через Time.unscaledTime и AudioSettings.dspTime. Одно не лучше другого.

И основные вычисления конечно выполняются не каждый фрейм, а только во время условного "удара метронома", кроме корутин, отвечающих за трели, тремоло, и за плавное затухание ноты. Это чтобы избежать щелчков. Я знаю, что в юнити предусмотрена фича AudioSource.SetScheduledEndTime для избежания щелчков, но как-то она не помогает.
AABB
UNIт
 
Сообщения: 134
Зарегистрирован: 05 фев 2014, 15:52

Re: Генерация музыки

Сообщение Cr0c 08 май 2016, 10:28

Это аналог сэмпловых форматов типа XM или IT. Почему бы не взять такие файлы, нарезать на совмещающиеся отрезки и соединять подходящие? Вряд ли Вы на лету генерируете музыку, скорее переключаетесь между шаблонами :) именно генерация музыки - это очень нетривиальная задача и я пока не слышал, чтобы её решили. Стабильной генерации добиться пока не могут, иногда что-то несложное бывает на выходе, но сильно несложное и довольно редко. Ну и теорию музыки надо знать хотя бы на уровне 2-го курса консерватории.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Генерация музыки

Сообщение AABB 08 май 2016, 10:53

Ну и теорию музыки надо знать хотя бы на уровне 2-го курса консерватории.

Ой не пугайте. Я теорию музыки знаю на уровне муз. школы и допустим этого достаточно. Мы же не симфонию с оркестром сочиняем. Сначала нужно понять почему эта музыка тормозит на мобильных девайсах. Ведь реально я не перегружаю

Это аналог сэмпловых форматов типа XM или IT. Почему бы не взять такие файлы, нарезать на совмещающиеся отрезки и соединять подходящие?
Ну если не получится решить проблему с генерацией музыки в юнити, то буду генерировать её в ренойзе. (Это трекер поддерживающий форматы XM или IT). Там тоже можно писать скрипты, только на луа. Просто у меня нет денег и желания нанимать композитора. Тем более стыдно нанимать композитора если сам учился в муз. школе. А вообще генерация музыки по ходу игры по идее даёт интерактивные возможности. Например, если у персонажа в игре есть параметр стресса, то при высоком стрессе музыка плавно становится атональной
AABB
UNIт
 
Сообщения: 134
Зарегистрирован: 05 фев 2014, 15:52

Re: Генерация музыки

Сообщение Cr0c 08 май 2016, 11:03

AABB писал(а):Тем более стыдно нанимать композитора если сам учился в муз. школе. А вообще генерация музыки по ходу игры по идее даёт интерактивные возможности. Например, если у персонажа в игре есть параметр стресса, то при высоком стрессе музыка плавно становится атональной

Достаточно простенького дерева состояний для кроссфейда между наборами треков...
Ну я тоже окончил муз. школу. И как-то желания написать что-то не возникает, а вот доверить эту работу заинтересованному умельцу - запросто. И если генерировать музыку так просто - дайте ссылку на пруф, мне самому интересно, где это используют в играх/медиа.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Генерация музыки

Сообщение AABB 08 май 2016, 23:29

Cr0c писал(а):И если генерировать музыку так просто - дайте ссылку на пруф, мне самому интересно, где это используют в играх/медиа.
Я не утверждал, что это часто используют в играх. Наверное это не так. Просто сам хотел попробовать.

Вообще, наверное, у нас с вами разные запросы. По мне так и просто рэндомные звуки одного инструмента с эффектом эха - уже звучит неплохо, создаёт атмосферу. Правда использовать риал-тайм эффекты в юнити, это наверное излишество.

В любом случае, вопрос то был - почему так безбожно тормозит на мобильных девайсах. Что-то мне кажется, когда в начале у меня не было пула, а был только Instantiate и Destroy, и то было лучше
AABB
UNIт
 
Сообщения: 134
Зарегистрирован: 05 фев 2014, 15:52

Re: Генерация музыки

Сообщение PREZRAK 09 май 2016, 11:25

AABB писал(а):
Cr0c писал(а):использовать риал-тайм эффекты в юнити, это наверное излишество
Каким боком здесь юнити? А, ну да, ну да, процессоры-то в мобилках и телевизорах и компах разные..
На самом деле странно, что возникают проблемы на этом этапе. Может быть, я попробую воссоздать Вашу работу. А пока проверьте настройки проекта, сэмплов и т.п.
По хорошему, т.к. это просто unity, можно воспользоваться AudioSource.PlayClipAtPoint, вернее его собственноручно написанным аналогом, потому что оригиналом проблематично управлять (вообще никак).
участник клуба GCC
Аватара пользователя
PREZRAK
Старожил
 
Сообщения: 653
Зарегистрирован: 30 май 2013, 12:41
  • Сайт

Re: Генерация музыки

Сообщение PREZRAK 11 май 2016, 16:51

Поковырялся я.
И понял.
Давайте рассказывайте, как реализовывали, потому что подозрения на "огрехи" в логике огромные.
Проверьте "настройки импорта" всех сэмплов, приглядитесь к AudioSource.PlayScheduled, на ПК она не очень нужна, но я ещё "строю" свою поделку.
участник клуба GCC
Аватара пользователя
PREZRAK
Старожил
 
Сообщения: 653
Зарегистрирован: 30 май 2013, 12:41
  • Сайт

Re: Генерация музыки

Сообщение AABB 07 авг 2016, 08:59

Простите, что долго не отвечал. Меня просто реально достало что ничего не получается. Реально я бы дал в морду тому человеку, который скажет, что юнити это простой движок. У меня опустились руки. Но прошло время и они снова поднялись. Я прошу прощения. Похоже AudioSource.PlayScheduled действительно решают проблему гуляющего темпа. Но они сами по себе не решают проблему кликов

А кстати, PREZRAK, вам то удалось написать хорошую музыку?
AABB
UNIт
 
Сообщения: 134
Зарегистрирован: 05 фев 2014, 15:52


Вернуться в Медиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3