как преобразовать звуковую волну в миди в С#

Кто-нибудь знает, как преобразовать аналоговую звуковую волну в файл MIDI?

Я знаю, что отличается от WAV к MP3, но сейчас это не важно. Я только хочу узнать основную логику преобразования. Если кто-нибудь может дать мне статью или какой-нибудь исходный код об этом, я буду признателен.


person Emre    schedule 19.07.2010    source источник
comment
Просто представьте, что вы записываете какую-то музыку для радио, отправляете этот звуковой файл в свою программу, и вы получаете все ноты для всех используемых в нем инструментов. Если вы знаете, как решить эту проблему (которую вы на самом деле описываете), вы можете заработать на этом много денег!   -  person Oliver    schedule 19.07.2010
comment
@Oliver: Есть программа, которая конвертирует MIDI в ноты — MuseScore на musescore.org. Так что все, что нужно сделать Эмре, — это конвертировать аналоговую звуковую волну в файл MIDI, и он будет дома свободен.   -  person Gilbert Le Blanc    schedule 19.07.2010
comment
@Gilbert: Да, MIDI -> Wave = простой; MIDI -> ноты = простые; Волна -> MIDI = много денег, если решить.   -  person Oliver    schedule 19.07.2010
comment
is.gd/igp4m -- я видел оооочень много вопросов о преобразовании MIDI в аудио. . Пожалуйста, найдите время, чтобы прочитать его, если вы планируете написать какую-то программную систему, которая должна это делать.   -  person Nik Reiman    schedule 06.12.2010
comment
@Nik Reiman, midi-to-wav намного проще, чем wav-to-midi   -  person finnw    schedule 08.05.2011
comment
@finnw, да, но делать и то, и другое на 100 % — несбыточная мечта.   -  person Nik Reiman    schedule 08.05.2011


Ответы (4)


Я понимаю, что вы хотите написать свой собственный конвертер волны в MIDI.

Однако я понятия не имел, что несколько компаний имеют программное обеспечение, которое выполняет преобразование волны в MIDI.

В интересах тех, кто заинтересован, вот список программ преобразования аудио в MIDI..

Я выбрал веб-сайт WidiSoft, потому что он был вверху списка. , и занял высокое место в поиске Google. Английский не является их родным языком. Тем не менее, вы можете загрузить и попробовать программное обеспечение, прежде чем купить его.

Это не обзор продукта, но в зависимости от ваших потребностей в конверсии вы сможете найти что-то, что уже существует.

person Gilbert Le Blanc    schedule 19.07.2010

Волна — это фактическая звуковая волна некоторого звука. Миди можно рассматривать как музыкальные ноты, сыгранные на предопределенных инструментах (хранящихся на компьютере или на звуковой карте).

Таким образом, звук, генерируемый midi, представляет собой подмножество звуков, которое можно сохранить в волновом файле. Это означает, что вы не можете преобразовать волну в миди (хотя вы можете сделать это наоборот).

Если вы знаете некоторые вещи о волнах, которые хотите преобразовать, это может быть возможно. Если, например, вы знаете, что волна содержит только пайно, можно преобразовать его в ноты, а из него — в миди.

person Lasse Skindstad Ebert    schedule 19.07.2010

Используйте идеи из проекта «Генетическое программирование: эволюция Моны Лизы», но применяйте их поверх звуков, а не изображений.

person Todor Balabanov    schedule 08.10.2017

Мне кажется, что вы должны сначала разбить аудио на небольшие клипы (может быть, 0,25 сек каждый). Затем вы можете использовать FFT, чтобы получить столько частот и связанных с ними амплитуд, которые вам нужны для каждого клипа (возможно, 8?). Затем вы можете округлить частоты до ближайшей ноты. Затем я думаю, что преобразовать это в MIDI довольно просто, по крайней мере, на этом базовом уровне. Итак, вам нужно написать программу C#, которая сэмплирует аудиоклип (сделано: см. NAudio), а затем получить (я не знаю где) программу, которая выполняет БПФ для клипа. Преобразование частоты в ноту осуществляется поиском по таблице. Вы также можете найти коммерческое программное обеспечение, которое выполняет преобразование: https://www.celemony.com/en/melodyne/new-in-melodyne-5

person fredm73    schedule 30.06.2020