2009-07-26 11 views

risposta

8

Si potrebbe provare a interfacciarsi in qualche modo con Timidity, che è Open Source:

TiMidity ++ è un sintetizzatore software. Può riprodurre file MIDI convertendoli in dati di forme d'onda PCM; dargli un dato MIDI insieme a file di dati di strumenti digitali, quindi li sintetizza in tempo reale e suona. Non solo è in grado di riprodurre suoni, ma può anche salvare le forme d'onda generate in dischi rigidi come vari formati di file audio.

FluidSynth è un progetto Open Source più aggiornato di recente in un modo simile:

FluidSynth è un sintetizzatore software real-time basato sul SoundFont 2 specifiche.

È possibile scaricare alcuni SoundFonts gratuiti (i dati PCM effettivi utilizzati da questi sintetizzatori a "rendere" i file MIDI) dai siti su this list.

+0

Nice link, Jacob. –

+0

Grazie, l'ho scoperto da quando. Funziona bene con i font audio da questo elenco: http://en.wikipedia.org/wiki/SoundFont#Free_SoundFont_downloads – Jacob

+0

Jacob, ottimo lavoro con questi collegamenti. Sono sicuro che saranno utili. In particolare mi piace la funzione TiMidity ++: 'Riproduce file MIDI remoti attraverso la rete' Sai dove posso trovare un file .exe? Mi incasino sempre durante la configurazione delle applicazioni C++ del linker (non sono un ottimo programmatore C++) – vondip

8

MIDI files contengono solo note e informazioni sul controller, non suoni. Per ottenere suoni da un file MIDI, devi passare il file attraverso un sintetizzatore musicale o un campionatore, che convertirà le note e le informazioni del controller in suoni reali.

In pratica, ciò significa che qualsiasi dato file MIDI non ha un suono specifico. Il suono risultante dalla conversione di un file MIDI in audio varierà in base alla qualità del sintetizzatore o della libreria di campioni e ai suoni selezionati per eseguire la conversione.

Molte schede audio hanno la capacità di produrre suoni da file MIDI. Possono farlo perché molti file MIDI seguono uno standard chiamato General MIDI specification. La General MIDI Specification fornisce un modo standard per mappare assegnazioni di strumenti specifici. Se il tuo file MIDI è conforme a questo standard, puoi riprodurlo attraverso un generatore di suono General MIDI e aspettarti che un rullante suoni come un rullante e non come una tromba.

Se si dispone di un pacchetto di produzione musicale sofisticato come Cakewalk, è possibile caricare un file MIDI e utilizzerà le sue librerie di suoni integrate per rendere un file audio per voi, e questo può essere fatto più velocemente di in tempo reale (ovvero non deve riprodurre il suono attraverso la scheda audio e acquisire l'output).

Credo che quello che sto cercando di dire è che ci sono molte parti mobili in questo. Non c'è un singolo pezzo di codice o un modulo di classe che farà questo per te.

+0

Desidero poter riprodurre file midi su silverlight, sto esponendo troppo? – vondip

+0

Non penso che sia necessario convertire il MIDI in WAV per riprodurlo in silverlight. Se Silverlight non è in grado di gestire i file MIDI in modo nativo, è possibile toccare l'API multimediale di Windows per riprodurre i file MIDI. – MusiGenesis

+0

Come faccio? L'ambiente di Silverlight mi impedisce di accedervi. Come posso aggiungere un riferimento com all'API multimediale di Windows? – vondip

0

Ci sono un certo numero di programmi che puoi acquistare (google "convert midi in WAV"), ma non ho mai trovato un codice .Net disponibile pubblicamente che faccia questo (penso che alcuni di questi programmi sono scritti in. Net, ma il codice sorgente non è disponibile).

Ho un amico online che sta lavorando su un convertitore commerciale da MIDI a WAV, ma non è in .Net e non sarà open source. Come ha detto Robert Harvey, questo non è affatto un compito semplice, in quanto implica fondamentalmente la scrittura del proprio sintetizzatore software (un compito dopo il mio cuore).