Сегодня я столкнулся с той же проблемой, и мне удалось заставить ее работать с этим кодом. Надеюсь, это поможет:
setTimeout(function(){ OpenSurvey(window,document,"script","smcx-sdk"); }, 60000);
function OpenSurvey(t,e,s,o){var n,a,c;t.SMCX=t.SMCX||[],e.getElementById(o)||(n=e.getElementsByTagName(s),a=n[n.length-1],c=e.createElement(s),c.type="text/javascript",c.async=!0,c.id=o,c.src=["https:"===location.protocol?"https://":"http://","widget.surveymonkey.com/collect/website/js/xxxxxxx.js"].join(""),a.parentNode.insertBefore(c,a))}
Мой студенческий проект имел дело с записью примечаний от файла WAV до файла MIDI. Мы обработали только простой случай одного инструмента, возможно играя больше чем одно примечание за один раз (фортепьяно, например). Наше исследование предмета, прежде чем мы запустили, показало, что даже это (т.е. только один инструмент) считают нетривиальным. В основном проблема:
Теперь, если у Вас есть больше чем один инструмент за один раз, и никакие два не играют те же примечания или гармонии этого когда-то, Вы смогли говорить инструменты независимо с помощью некоторой эвристики на величинах гармоний, или на последовательностях примечаний они играют. Скорее всего, будут времена, когда два инструмента будут играть то же примечание. Затем у Вас действительно нет способа решить, существует ли (a) один инструмент, играя примечание, (b) два инструмента, играющие в том же объеме, (c) одно мягкое проигрывание и другое громкое проигрывание или (d) любая комбинация этого.
Так или иначе это - короткий список проблем для решения. Я не знаю ни о каком алгоритме, который решает это в общем случае. Я не думаю, что эта проблема была решена все же.
Править: Моя презентация проекта может быть найдена по http://www-sipl.technion.ac.il/new/Archive/Special_Events/sipl2004/Projects_PowerPoint/WAV-to-MIDI.pdf
Я действительно столкнулся с очень интересным алгоритмом, который называется ICA (анализ независимых компонентов). Идея этого алгоритма не в мире обработки сигналов, а в вероятностных теориях. Мы использовали его для разделения двух песен, которые были смешаны в один mp3-файл. Вы можете найти библиотеку реализации в Matlab \ C ++ \ Python под названием FastICA здесь . Дайте ему шанс, это действительно приятно.
Каждый инструмент имеет характерные паразитные колебания, поэтому если Вы изолируете единственные примечания (с DFT/FFT) и сравниваете другие частоты в том моменте времени, Вы могли бы отличить, по крайней мере, различные типы инструментов.
Самый легкий способ сделать это должно поддержать инструменты отдельно во-первых, который является, почему много промежуточных музыкальных приложений обработки используют MIDI, чтобы хранить инструментальные сообщения в абстрактной форме на отдельных дорожках.
Длинная короткая история: Вы не можете кроме случая, что Ваши четыре инструмента являются синтезаторами, играя чистые синусоидальные волны.
mp3 является форматом с потерями. Это работает путем моделирования акустического ответа человека и выбрасывания информации, что это полагает, что человек не может услышать. В сущности более громкие инструменты, что, омрачая мягкие инструменты - более мягкий угроблен. Это означает, что Вы никогда не будете мочь извлечь то, что первоначально вошло в mp3 уже не говоря о, выделяют инструменты.
У меня есть друг, который является звукооператором, и он всегда должен говорить "Нет" людям, которые просят, чтобы он повторно спроектировал дорожку, зарегистрированную как mp3.
Несколько недель назад я видел исследование, которое предположило, что молодое поколение на самом деле предпочло звук mp3 по большему количеству полных форматов как, с именно это они выросли.