2016-07-18 2 views
2

J'essaie de remplacer la soundfont par défaut d'un fichier MIDI par ma propre soundfont; Cependant, la nouvelle soundfont joue sur l'ancienne plutôt que sur l'ancienne. Mon code:Problème de remplacement du soundfont en Java - l'ancienne soundfont reste toujours

Synthesizer synthesizer = MidiSystem.getSynthesizer(); 
synthesizer.open(); 
synthesizer.unloadAllInstruments(synthesizer.getDefaultSoundbank()); 
synthesizer.loadAllInstruments(MidiSystem.getSoundbank(new File("Airhorn.sf2"))); 

Sequencer sequencer = MidiSystem.getSequencer(); 
sequencer.open(); 
sequencer.getTransmitter().setReceiver(synthesizer.getReceiver()); 

InputStream inputStream = new BufferedInputStream(new FileInputStream(new File("Test.mid"))); 
sequencer.setSequence(inputStream); 
sequencer.start(); 
+0

Est-ce que "sur le dessus" signifie que les deux instruments sonnent? Et quelle implémentation Java est-ce? –

+0

Oui, les deux instruments sonnent. Ceci utilise l'implémentation MIDI Java par défaut donnée dans le JDK. – Anon10W1z

Répondre

0

Vous pouvez utiliser

MidiSystem.getSequencer(false) 

pour obtenir votre séquenceur et d'empêcher la connexion au périphérique par défaut. Travaillé par moi, JDK 8, Windows 10.