Bir kavanoza bir kaynak olarak bir midi soundbank aldım bir süre önce yaptım ve ses bankasında bulunan enstrüman isimlerini almak için kullanır bir keyboard application10 yaptım. Bu, güneş java 6 ile windows 7 ve güneş java 6 kullanarak Windows 7 kullanan makinelerde iyi çalışıyor gibi görünüyor. Ancak, bu java aynı sürümünü kullanarak windows xp kullanarak makinelerde çalışmıyor gibi görünüyor. Oluyor gibi görünen şey, getInstrumentName()
yöntemi çağrıldığında cihaz dizisinin yüklenmemiş olmasıdır. Alet dizisi DefaultControl
sınıfının yapıcısına yerleştirilir (ikinci kod örneği). Birisi, neden böyle olacağını anlamak için bana yardımcı olabilir mi ve neden makine bağımlısı gibi görünüyor? midi klavye tüm platformlarda çalışmıyor
data.setControls(new DefaultControls());
data.setKeyboard(new KeyboardPanel(data.getPressed()));
data.getKeyboard().setInstrumentName(data.getControls().getInstrumentName());
alıyorum ve bunun gibi SoundBank yüklemek: Bu isim yüklenmesi denir yöntemdir
this.synth=MidiSystem.getSynthesizer();
synth.open();
synth.loadAllInstruments(
MidiSystem.getSoundbank(
getClass().getResourceAsStream("soundbank.gm")));
this.instrument=synth.getAvailableInstruments();
this.channels=synth.getChannels();
şudur:
public String getInstrumentName(){
return instrument[selected_instrument].getName();
}
İstisnalar var mı? Olası JDK hatası mı? http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4444193 – monojohnny
Atılan dizgeden istisna dışında bir dizi dizini. Onun tuhaf çünkü sadece bir hata atılmış ve ses bankası başarıyla yüklendi eğer isim çağrılırdı. –
Bu, başvuru yapacağınız hata ile ilgili olabilir. –