Не имея каких-либо MIDI-устройств на моем рабочем ПК или даже любом другом Mac, я сомневаюсь, что смогу проверить это должным образом, но ...
Класс MidiSystem, кажется, использует com.sun.media.sound.JDK13Services.getProviders(Class providerClass)
, чтобы найти список устройств в системе. Документация API для этого класса гласит, что список воссоздается при последовательном вызове за пределами cachingPeriod
, что может быть удобно установлено путем вызова setCachingPeriod(int seconds)
.
Если повезет, вы можете просто вызвать это один раз в начале вашего приложения и установить его на 5 секунд или около того, и это будет волшебным образом работать. Однако в документах также указано «Этот метод предназначен только для тестирования», поэтому я не совсем уверен, насколько эффективным будет этот подход.
Надеюсь, этого достаточно, чтобы вы начали, а я тем временем продолжу ковыряться в поисках более чистого способа сделать это.