Если вы имеете в виду неприятные щелчки между нотами: это совершенно нормально.
Даже в языках программирования, которые были специально разработаны для создания музыки, этот эффект возникает, если вы просто сопоставляете блоки с (синусоидальными) волнамикоторые имеют некоторую фиксированную амплитуду в течение всей продолжительности.
Вот эскиз того, как это выглядит, когда заканчивается одна нота, и начинается следующая нота:
Если первый узел случайно не заканчивается ровно в ноль, вы услышите этот «скачок», который наносится на 2
.
Чтобы избежать этого, вы должны реализовать лучшесинтез ноты.
Простым решением было бы плавное увеличение амплитуды каждой ноты, а затем плавное затухание в конце.Вот как будет выглядеть переход между двумя примечаниями, если вы сделаете это:
Этот график был создан по следующей формуле:
if x > 2:
return sin((x-2) * 60) * (1 - exp(-(x-2)**2 / 0.5))
else:
return sin(x * 30) * (1- exp(-(x-2)**2 / 0.5))
Надеемся, что вы можете распознать (1 - exp(-(x - tClick) ** 2 / smoothness))
факторы "размягчения", которые ответственны за нарастание / затухание.
Но опять же вы видите, что промежутки между нотами увеличиваютсяи если вы затем попытаетесь пересечь интервалы между различными примечаниями, все это станет довольно запутанным и сложным, и вам, вероятно, лучше взять язык программирования или библиотеку, которая уже знает, как это сделать правильно.Я думаю, что Руководство Чака содержало довольно подробное объяснение того, как получить все более и более звучащие ноты.