Оживить компьютерную музыку

Здесь, на примере одной своей пьески для фортепиано с симфоническим оркестром (АК - "Дворник"), я расскажу о том, как можно сделать игру компьютера похожей на исполнение "живого" музыканта.
Это не какое-то открытие, но начинающему компьютерному музыканту что-то из написанного может оказаться полезным. Да и бывает так, что знал о чём-то, но не пользовался этим (или просто забыл)...
music
Итак, я написал (мышкой, а не вживую) фортепианную партию. Можете послушать её, лучше от начала до конца, чтобы понимать разницу в звучании:

На всякий случай - в нотном виде:
sheet
В общем-то ничего даже написано, но явно некрасиво звучит (статично, по темпу и громкости) и быстро надоедает.
Вот тут и придётся поработать над "игрой" компьютера.
Первое, о чём не каждый компьютерный музыкант вспоминает - это сила (или скорость): нажатия клавиш, щипка струны, давления на смычок и т. п., а если быть точнее, то разность этой самой силы - всё это регулируется параметром velocity. Согласитесь, живой музыкант никогда не играет все ноты одинаково, даже если очень захочет.
Тут и пальцы у человека разные (по строению, силе) и скорость исполнения влияет, да и музыка сама по себе требует, например, отделять тему от гармонического сопровождения или выделять какие-то фразы.
Вот по этим принципам вы можете разнообразить параметр velocity у каждой ноты - выделить тему из аккордов (обычно в них это верхняя нота), отделить аккомпанемент от мелодии (чтобы он не глушил её - сделать тише). Если в левой руке у фортепиано есть аккомпанемент, состоящий из арпеджио - значит бас из такой последовательности должен звучать немного сильнее - поднять ему  velocity или уменьшить остальным нотам. Если идёт "бас-аккорд", на бас тоже делается упор.
Конечно, надо иметь представление о самом инструменте и хоть немного знать о приёмах игры на нём (а лучше даже иметь некоторый опыт исполнения). Например, при игре перебором на гитаре безымянный палец правой руки немного сильнее извлекает ноты, чем остальные. Следовательно, вы должны представлять, какую ноту в своей партии и каким  пальцем вы бы исполнили вживую.
Вот результат моей работы над этим параметром в той же самой фортепианной партии:

Разница уже заметна, музыка оживилась.
Замечу ещё, что не у всех виртуальных инструментов этот параметр реализован хорошо. Т. е. сколько его ни правь, разницы в звучании будет мало - это характерно для самых простых VSTi. А вот в инструментах такого уровня, как ударные Battery или оркестр Vienna Symphonic, на каждую единицу шкалы velocity записано по нескольку сэмплов. Там уже изменяется не только громкость звука, но и дополнительные особенности - например, послезвучие ("дребезжание" струн по пластику на малом барабане или гул резонирующего корпуса инструмента) и т. п.
Но ведь "живые" музыканты никогда не играют ноты в одинаковом темпе. Изменения в темпе - у них всегда есть, даже если они стараются держать ритм.
Если у вас какая-нибудь ритмичная танцевальная музыка (в которой ровный барабанный ритм), тут вносить на компьютере разнообразие в темп нежелательно. А вот если вы имитируете "живой" ансамбль - стоит уже и поработать над этим.
И, поскольку я работал над игрой фортепиано с оркестром, то изменений темпа пришлось сделать немало. Здесь уже на ваше усмотрение, как вы это слышите.
В идеале, конечно, было бы неплохо наиграть всё вживую (пусть даже не попадая в ноты, но с замедлениями-ускорениями)  и воспользоваться Time Warp для работы с темпом.
Ниже рисунки только первой части этой пьески, той, что вы слушаете в примерах.
Это в Cubase:
cubase-tempo
А это в Logic:
logic-tempo
Выглядит пугающе, но того стоит. Теперь послушайте, что получилось и сравните с самой первой версией:


Вот так, поработав над двумя музыкальными параметрами, я приблизил "игру" компьютера к живому исполнению.
А теперь послушайте итоговый вариант этой пьески уже с симфоническим оркестром (правда, не очень качественным, но какой имелся):


На этой картинке - полностью темп этой пьески.