Как создать звук с нуля С#

Я пытаюсь создать виртуальный пианино на С# и хочу, чтобы создать масштаб музыкальных нот с нуля.

Я знаю, что я могу просто найти или создать кучу WAV файлов, 1 для каждой заметки, но это создаст слишком много места на жестком диске пользователя и не будет очень интуитивным для меня в будущем.

Итак, есть способ создать правильный звук - например, B flat, в С# без использования .wav файла, все в коде thorugh С#, а если нет, есть ли способ сделать это на другом языке - С++.

Спасибо, я попытался сделать это как можно более ясным.

Ответы

Ответ 1

Я думаю, это похоже на то, что вы должны начать:

http://blogs.msdn.com/b/dawate/archive/2009/06/24/intro-to-audio-programming-part-3-synthesizing-simple-wave-audio-using-c.aspx

EDIT: Я должен добавить, что генерация звуков без образцов .wav и эмулирование фортепиано противоречат друг другу.

Если вы хотите получить "настоящий" звук фортепьяно, лучше всего работать с образцами (удерживайте их в памяти, если вы не хотите держать их в файловой системе). Если вы просто хотите простой способ испускать точные заметки (которые не звучат как настоящий пианино), то делать это программно - это путь!

Ответ 2

Если вы хотите эмулировать пианино, у вас есть только два варианта, один из которых - использовать образцы, а другой - физическое моделирование. Физическое моделирование требует некоторых довольно продвинутых знаний о DSP (фильтрация, свертка и т.д.), А пианино было бы сложным инструментом для решения, но это делалось с помощью Pianoteq

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

Ответ 3

Возможно, вы захотите взглянуть на MIDI.

Там API окон можно обернуть на С++, а затем вывести управляемый интерфейс, который вы можете использовать на С#.

Ответ 4

Может быть, использование библиотеки MIDI могло бы помочь? Я не в этом разбираюсь, но если вы не хотите использовать аудиофайлы, это единственное, что приходит мне на ум. Там вопрос об этом здесь.

Ответ 5

Здесь вы найдете статью, включающую источник о том, как создавать звук фортепьяно с нуля, по крайней мере, для одной ноты Octave музыкальных нот (она расширяема).