Я'м в настоящее время разработке игры, и я'м пытаясь синтезировать музыка примечание из различных инструментов в C++. Для Теперь, я'м всего лишь пытается копировать А4 440 Гц с помощью существующих аудио-файла в качестве ссылки. Я'вэ старался изо всех сил, чтобы сделать мой сигнал выглядит так же, как оригинал в плане частоты и гармоник, но обратите внимание до сих пор не'т звучать естественно. Я'м вид новой музыки синтез, поэтому я надеюсь, что вы сможете решить мою проблему. Ссылки на аудио файлы:
Моя программа только добавляет синусоид с разными частотами вместе. Вот сравнение двух аудио файлов:
Спектрограммы (слева-настоящий, справа:синтезированы)
БПФ (пик) (слева-настоящий, справа=синтезированных)
(пики совпадают с ~=3гц разница)
Сигнал (слева-настоящий, справа=синтезированных)
Сдвиг по фазе на пике (слева-настоящий, справа=синтезированных)
Конверт срок
Настоящий рояль
Синтезированы фортепиано
Что я пропустила? Я'вэ старался изо всех сил, чтобы соответствовать гармонических частот, но они по-прежнему звучат по-разному. Же на их конверт. Я должен иметь больше гармоник? Я'пробовала добавлять больше, но звук не'т действительно, кажется, многое изменить. Несколько гармоник между 15 кГц и 20 кГц важное?
ЗЫ: я Дон'т хотите использовать существующее Примечание, ни музыка для моей игры, так как я'м делаешь это, чтобы понять, как музыка синтез работает.
Я не'т быть в состоянии, чтобы слушать файлы, но я думаю, что Пэт'ы комментарий, скорее всего, будет ближе к отметке. Из спектрографов, похоже, вы может быть не хватает двух вещей:
Некоторые предложения:
Редактировать выслушав файл:
Звук фортепиано ноты изменяется с течением времени. Ваш синтезированный образец только на 1 секунду дольше. Вы должны сравнивать звучание в течение всей жизни ноты. Если у вас есть приличный звук, одна вещь, вы могли бы сделать это вдвое больше, так как большая часть диапазона фортепиано имеет две или три струны на ноту, а не один. Как только он'ы в два раза, слегка расстроить один (или два) из них. И я немного. Хороших настройщиков пианино вам их очень близко, но они еще могут отличаться по .5 Гц или около того. Обратите внимание, что бит частота .5 Гц занимает 2 секунд, чтобы завершить цикл, так что'ы еще одна причина, почему в 1 секунду выборка не является достаточно времени прослушивания. В целом я думаю, что ваш синтезированный образец довольно хорошо. В нем отсутствуют некоторые из перечисленных выше компонентов, и вы должны также начать сравнивать низшие и высшие ноты, чтобы увидеть, как ваш алгоритм держится.
Самая большая вещь, которую вы'Снова хватает приступ. ПЭТ намного более'ы comment совершенно верно:
одна вещь, которая определенно не хватает: реальные звуки пианино тонн негармонических составляющих при атаке звука. Серия обертона поможет поддерживать и распад, но атака нуждается в большом количестве шум и компоненты негармоничной.
Почти все документы имеют краткое, не звук, ударный звук, который играет за крошечную долю секунды, когда внимание сначала начинает играть. Если вы слушаете своего образца фортепиано заметим еще раз, вы'заметите, что первые доли секунды записки гораздо громче, чем остальные ноты. Вы также можете заметить, что это звучит немного как барабан-это удар, когда нота начинает играть. Что's для атаки. (На настоящем пианино, этот звук вызван движением молотка прихват колонны.)
В отличие от синтезированных, обратите внимание на ее тихой, когда она начнет играть. Он не имеет атаки. Это недостающее атаки это очень важно! Я считаю, что если вы добавляете нападение на вашу записку, то оно будет звучать убедительно, как настоящий рояль.
Вы можете сделать это, либо играть в взрыв в форме белого шума, когда ваше внимание начнет играть или, несколько более убедительно, разыгрывая образец ударного инструмента, смешанных искусно, каждый раз на пианино играет ноты. (Хотя взрыв белого шума звучит довольно искусственно, Я'вэ был очень хороший успех, добавив атаки белого шума на синтезаторы в мою собственную музыку. Это действительно достаточно убедительным, чтобы работать во многих ситуациях! Тодд Уилкокс'ы comment дает хорошие советы по изготовлению белого шума работы для нападения.) Наиболее убедительным подходом было бы найти записи кого-то изолировать звук пианино молоток поражая без звука фортепиано струнный звон и использовать это для своего образца атаку.
Я заметила, что твой синтезированный тон имеет ударный элемент в ней уже. Однако, это звучит получаться через заметьте, не в начале. Атака должна достигнуть своего пика в тот самый момент, когда внимание начнет играть. Вы добавили этот график на ваш пост:
Обратите внимание, что для реального тона пианино слева, точка громкий звук весь путь к левому краю звуковой волны. Напротив, ваш тон становится громче за полсекунды до достижения ее громче всех. К сожалению, это слишком поздно. Ударный звук должен начаться в начале тон был убедительный атаки.
Кроме того, ваш ударный звук очень низкого тона. Фортепиано обычно имеет нападение, которое также имеет некоторые среднечастотные и высокочастотные элементы. Я предлагаю использовать барабан нажмите, мягкая древесина заблокировать удар, или, как я уже упоминал выше, запись пианино молотком ударить, чтобы стимулировать вашу атаку вместо глубокого handdrum звук, который вы're через Сейчас.
Помимо нападения, на мое ухо, ваша синтезированные тона почти нет. Я лично думаю, что после добавления нападение, вы'll имеет синтезированные тона, что's, как высокое качество, как то, что вы'll найти в самых $100 Midi-клавиатур. Он все равно будет звучать искусственно, но это будет звучать приятный и он выиграл'т, кажется странным.
Просто чтобы добавить к предыдущим ответам по поводу начального переходного звука. Есть две вещи, пропавшие из вашего синтеза, оба из которых влияют на первоначальный звук.
Есть механический шум из ключевых механизмов, плюс в "бухать" из ударять молотком струны, которая исходит из статической части пианино, а не от самих строках. Эти звуки похожи на каждую ноту на инструменте (и это'ы довольно хорошим приближением считать, что они абсолютно одинаковы для каждой ноты) и они обычно распадаются на ничего в около 0,1 секунды.
Второй эффект-это то, что это'т, как правило, упоминается в "Школе физика" в описаниях уровень как натянутая струна вибрирует, но ...
Звук фортепиано происходит от передачи энергии от струны к деке, который также вибрирует с небольшой амплитудой, но имеет большую площадь поверхности, которая движется воздух, чтобы создать звук, который вы слышите. Таким образом, концы струны не исправлены абсолютно жестко, потому что там должен быть какой-перемещение деки в ссылки. Степени гибкости, отличается для движения в двух разных направлениях, перпендикулярном к плоскости деки и из стороны в сторону параллельно деке.
Различные гибкие возможности означают, что на одном струна вибрирует одновременно с двумя слегка различными частотами, перпендикулярно и параллельно деки. Кроме того, энергия передается на деке быстрее от в "перпендикулярно" в режим, потому что это более гибкое направление.
Следствием всего этого является то, что вы измеряете как "Единое гармоническое" это действительно два гармоник с различными частотами, одна из которых затухает быстрее, чем другие. Для заметок с частотой около 500 Гц - 1 кГц, нижняя частота вибрации начинается с большей амплитудой, но гниет очень быстро (скажем за 0,5 секунды) при чуть более высокой частоты затухает медленно и продолжается в течение всей длине Примечание (несколько секунд).
Как дальнейшее осложнение, двух вибраций начинают в фазе друг с другом, но изменения фазы со временем, потому что частоты немного отличаются. Если вы посмотрите на пианино образец зафиксированы недалеко от инструмента, чтобы устранить акустические эффекты комнаты на фортепиано, вы видите, что в сочетании амплитуды начинается максимум и быстро спадает почти до нуля как два колебания идут в противофазе и компенсируют друг друга, а потом поднимается* снова. На данный момент одним из вибрации почти вымерли, а остальные ноты-это медленное гниение от других.
На самом деле, это легче измерить и понять, на акустической гитаре, а не на пианино, потому что есть только одна строка за внимание, и разница между двумя частотами вибрации больше. На гитаре вы можете также изменить начальных амплитуд двух частотах, ПО на "общипывать, что" перпендикулярно к деке (как в классической гитаре метод выщипывания с ногтем) или "бренчание на" струны боком параллельно деке.
На пианино, есть еще одно осложнение,, что большинство заметок имеют две или три строки, а не только один. Струны не будут за обновлениями совершенно в унисон и (как другой ответ сказал) опытный тюнер скорректировать овал комбинированный звуковой оболочки всех 6 режимов вибрации из трех строк, чтобы создать что-то "пианино" это нужные - а в Bösendorfer Imperial и Ямаха акустического рояля предназначена для рок и поп музыки, как и"звук, как пианино", но звук очень отличаются друг от друга!
Я'd не говорите, что вы'вновь учусь, как тонко человеческое ухо может обнаружить небольшие различия в фазах и частотах. Ваш синтезатор, кажется, немного off - пик частоты при более высоких амплитуд, чем реальный.
Все что я могу сказать, что там'ы причина всех высококлассных цифровых пианино использовать образцы, а не сырые частоты генераторов.
Графики амплитуды и графики на конверте было ясно, что у вас не совпали фазы компонентов. В этом случае атака была размазана во времени. Он также вызывает отсутствие "и наклоняться влево" из компонентов в конверт ... конверт для фортепиано больше пила, чем ваша группа-общества треугольника синтетики. Переложив часть компонентов на более ранних этапах поможет.
Одним из способов решения этой проблемы-отслеживать аргумент (сложный этап). Я вижу, что у вас совпало амплитуд в периодограмм (абсолютная БПФ амплитуд), но есть свидетельства того, что у вас не подобраны аргументы.
Как в сторону... вы выбрали один из самых трудных инструментов для аддитивно синтезировать. Спектральные сдвиги содержимого нелинейно с амплитудой. Есть несколько гармонических и энгармонические урчит индуктивной передачи струны незатухающие. Прямые осцилляторов (строки) имеют три степени свободы, Таким образом, есть три естественных спектров для каждой строки и большинство отмечает, производятся на двух или трех строк. Если вы должны начинаться с клавиатуры прибора, что-то вроде челесты может быть существенно меньше разочарований для вас.
Как и многие другие указали, вы не только эмуляция спектра гармоник фазы, но не нападение и распад фортепиано.
Вот некоторые варианты:
Да, более одного образца, в идеале на заметку, но наверное одна на октаву должно быть достаточно для начала. Тангаж звуки +- 6 полутонов. Отдельные нападения, гармоники и фазы спада, и петля только гармоническая фаза. Использовать различные образцы для затухающих / незатухающие строк. Получите разные образцы для разных динамика, поскольку гармоники, нападения и распада характеристик изменения. Вы, вероятно, может уйти с 20 сэмплов на октаву сделать в чем-то убедить фортепиано. И вы начнете воссоздавать что-то очень сложное и дорогостоящее](https://www.steinberg.net/fi/products/vst/thegrand3/start.html).
Модель ##физика.
Вместо того, чтобы думать о гармоник, используя аддитивный / субтрактивный синтез, думать о том, как создается звук. Струнные инструменты использовать некоторые возбуждения на веревочке, который приносит в строку resonation и только гармоники струны'ы физические характеристики усиливаются, другие частоты вам затухнет. Простой алгоритм, который Мартин карплус-сильный.
Вы также можете использовать физическую библиотеку для моделирования, например, СТК, который имеет некоторые электронные пианино, как демо, но это, наверное, почти так же трудно получить естественное звучание фортепиано как с образцом подхода.
Если вы только хотите играть некоторые ноты с фиксированным диапазоном динамики, использовать один образец. Когда ноты звучат неестественно, добавить второй образец, а затем попытаться найти способ, чтобы загрузить лучшие из нескольких доступных выборку, основанную на поле, динамика, длительность.
Теория ## В зависимости от того, насколько глубоко вы хотите погрузиться в тему, есть несколько книг, посвященных этой теме, Некоторые бесплатно:
Используя Puredata для синтеза может быть хорошим выбором, потому что вы можете построить несколько выше звук уровня абстракции при использовании ПД в библиотеку в программу через libPd.