Hi, This is some notes about exception in SoftSynthesizer class.
1) SoftSynthesizer throws IllegalStateException from a number of methods when it is not open. Old synthesizer implementation does not throw such exception, so the behavior may cause compatibility problems in some applications (for example JSInfo from jsresources.org - it calls getChannels() to discover how many channels a synthesizer supports). Although IllegalStateException is not required to be declared in "throws" list of a method, it should be explicitly described in spec (see Receiver.send for example). The methods which throw IllegalStateException: getChannels(); getVoiceStatus(); loadInstrument(Instrument instrument); unloadInstrument(Instrument instrument); remapInstrument(Instrument from, Instrument to); getAvailableInstruments(); getLoadedInstruments(); loadAllInstruments(Soundbank soundbank); unloadAllInstruments(Soundbank soundbank); loadInstruments(Soundbank soundbank, Patch[] patchList); unloadInstruments(Soundbank soundbank, Patch[] patchList); getMicrosecondPosition(); getReceivers(); also the exception can be thrown by loadSamples (called from loadAllInstruments(Soundbank soundbank) and loadInstrument(Instrument instrument); this are the cases when loadAllInstruments/loadInstrument should return "false" - see 2) ), from ModelByteBuffer class methods and from SoftMidiAudioFileReader.getAudioInputStream(Sequence seq) (called from other SoftMidiAudioFileReader methods) 2) a number of methods (instrument loading/unloading) should throw IllegalArgumentException if the instrument (or sounbank) is unsupported (in our case instrument is not instance of ModelInstrument). "false" (for methods which returns boolean) means that instrument is supported, but could not be loaded by some reason. The methods are: loadInstrument(Instrument instrument); unloadInstrument(Instrument instrument); remapInstrument(Instrument from, Instrument to); loadAllInstruments(Soundbank soundbank); unloadAllInstruments(Soundbank soundbank); loadInstruments(Soundbank soundbank, Patch[] patchList); unloadInstruments(Soundbank soundbank, Patch[] patchList); Regards Alex _______________________________________________ audio-engine-dev mailing list [email protected] http://mail.openjdk.java.net/mailman/listinfo/audio-engine-dev
