Domanda

Sono nuovo di questo campo - ma ho bisogno di eseguire una conversione WAV-to-MIDI in java. C'è un modo per sapere quali sono esattamente i passaggi necessari per la conversione WAV-to-MIDI? Ho un'idea molto approssimativa come si deve; campionare il file wav, filtrare, utilizzare FFT per l'analisi spettrale, estrazione di caratteristiche e quindi scrivere le caratteristiche estratte a MIDI. Ma non riesco a trovare fonti solide o documenti come in come fare tutto questo? Qualcuno può darmi indizi utili su come e da dove cominciare? Ci sono delle API Open Source disponibile per questo processo di conversione WAV-to-MIDI?

Advance grazie

È stato utile?

Soluzione

E 'un processo più coinvolto di quanto si possa immaginare.

Questo problema di ricerca è spesso definito come musica di trascrizione : l'atto di conversione di una rappresentazione a basso livello di musica (ad esempio, la forma d'onda) in una rappresentazione di più alto livello, come MIDI o addirittura spartiti .

La sofisticazione della soluzione dipenderà la complessità dei dati di input. Tonnellate di articoli di ricerca riguardano la trascrizione solo musica al pianoforte monofonica o batteria ... perché sono facili da trascrivere. (Relativamente). Violino è più difficile. Voice è ancora più difficile. Violino più voce, più pianoforte è molto più difficile. Una sinfonia è quasi impossibile. Si ottiene l'immagine.

Gli elementi di base della trascrizione musicale coinvolgono una delle seguenti aree di sovrapposizione:

  1. (multi) stima passo
  2. il riconoscimento dello strumento, la modellazione timbrica
  3. rilevamento ritmo
  4. nota insorgenza / rilevazione di offset
  5. forma / struttura di modellazione

Cerca documenti su "la trascrizione musicale" su Google Scholar o dal procedimento Ismir: http://www.ismir.net . Se siete più interessati a una delle sotto-argomenti di cui sopra, posso indicarvi ulteriormente. Buona fortuna.

EDIT: Detto questo, ci sono soluzioni esistenti che tutti possiamo trovare sul web. Sentitevi liberi di provarli. Ma come si fa, li valutano con occhio critico e l'orecchio. Quali tipi di segnali audio causerebbe la trascrizione di fallire?

EDIT 2: Ah, si sta solo facendo questo per pianoforte. Okay, questo è fattibile. La musica di trascrizione ha avanzato al punto in cui può trascrivere pianoforte monofonico abbastanza bene. Un concerto di Rachmaninov sarà ancora porre dei problemi.

Le nostre raccomandazioni dipendono il vostro obiettivo finale. Lei afferma " necessità per eseguire ... in Java ." Così suona come si desidera solo qualcosa su cui lavorare indipendentemente da come si arriva. In tal caso, sono d'accordo al 100% con gli altri: usare qualcosa che esiste.

Che in realtà è una domanda interessante; tutte le librerie MIR che conosco sono in genere C / C ++ / Python / Matlab. Ma non è Java. L'EchoNest ha un'API Java, ma non credo che fa la trascrizione a livello di nota. http://developer.echonest.com . (Edit:... E ' non di trascrizione a livello note I dati restituiti include tono, timbro, battere, Tatum, e più ma trovo la polifonia è ancora un problema)

Oh, Marsia è basato su Java. Freddo. Ho pensato che fosse solo C ++. http://marsyas.info/ vi consiglio questo. E 'sviluppato da George Tzanetakis, un professore in MIR. Lo fa analisi a livello del segnale e dovrebbe essere una buona opzione.

Ora, se questo è per un'esperienza di apprendimento divertente, penso che si può utilizzare le utilità di manipolazione del suono in Java a sperimentare con il segnale WAV e vedere cosa viene fuori.

EDIT: Questa pagina descrive il software MIR meglio di me: gli strumenti che usiamo

Per Matlab, si può essere interessati al MIR Toolbox

Ecco una bella pagina di set di dati comuni: MIR Dataset

Altri suggerimenti

Questo è un impegno grande per essere di nuovo al campo, a meno che non significa che si ha familiarità con l'analisi del segnale e la rilevazione funzione in generale e desidera esaminare più specificamente la trascrizione automatica.

Non v'è alcuna API per WAV alla conversione MIDI. Vamp è un framework per i plugin di estrazione caratteristica, ma per fare la trascrizione automatica si avrebbe bisogno di utilizzare tutto la funzionalità dei plugin esistenti, oltre a implementare la funzionalità che esiste in nessuno di loro ancora.

Sfoglia le descrizioni dei plug-in tomaia pagina di download , le descrizioni che si fanno non capisco sono argomenti si dovrebbe iniziare la ricerca, se si vuole fare questo.

Se non avete bisogno di automatizzare questo compito (ad esempio, per un sito web dove le persone possono caricare MP3 e ottenere i file MIDI indietro), allora si dovrebbe considerare l'utilizzo di uno strumento come Melodyne che è già abbastanza bravo a andare questo. Come notato Steve, questo è un compito molto difficile da realizzare, e anche le migliori algoritmi e soluzioni presenti al momento non sono affidabili al 100%.

Quindi, se si sta solo facendo un lavoro di studio e la necessità di fare un paio di conversioni, sarà probabilmente risparmiare un po 'di tempo (e un sacco di mal di testa) di utilizzare uno strumento già progettato per questo compito.

Delfino, mi dispiace di essere brusco, ma hanno completamente sottovalutato il problema. Quello che si vuole raggiungere - una completa trascrizione suono di pianoforte che coinvolge tutti i parametri che sono stati utilizzati durante il gioco avrebbe bisogno di una quantità enorme di ricerche con persone che hanno lavorato nel settore da molti anni. Anche un gruppo di dottori di ricerca nel settore della trasformazione del segnale dovrebbe investire un sacco di lavoro per venire anche vicino a quello che vuoi dire. Musica trascrizione è necessario decenni di lavoro di lavorare ancora a metà strada affidabile. Io suggerirei di scegliere un problema diverso, che è possibile gestire meglio di questo.

Questo è un campo che è ancora molto in fase di sviluppo, tuttavia, ci sono alcuni (sperimentale) algoritmi disponibili.

È possibile installare commentatore sonora e utilizzare alcuni plugin vamp.

Ad esempio:

./sonic-annotator file.wav -d vamp:qm-vamp-plugins:qm-transcription:transcription -w midi

./sonic-annotator file.wav -d vamp:silvet:silvet:notes -w midi

./sonic-annotator file.wav -d vamp:ua-vamp-plugins:mf0ua:mf0ua -w midi
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top