if (midiDevice.getMaxReceivers()==AudioSystem.NOT_SPECIFIED) { valueReceiver = "Not specified"; } else { valueReceiver = new Integer(midiDevice.getMaxReceivers());
public static List<MidiTransmitDevWrap> findMatchingTransmitters(List<MidiDevWrap> devs, MidiDevMatchPattern pattern, Logger logger) { List<MidiTransmitDevWrap> results = new ArrayList<MidiTransmitDevWrap>(); for (MidiDevWrap mdw : devs) { int maxTmit = mdw.myDevice.getMaxTransmitters(); int maxRecv = mdw.myDevice.getMaxReceivers(); theLogger.info("mdw {} reported maxTransmitters={}, maxReceivers={}", mdw, maxTmit, maxRecv); // -1 == unknown/unlimited? // 0 == definitely none if (maxTmit != 0) { try { // Is it important to ensureDevOpen() before doing this fetch? Transmitter tmit = mdw.myDevice.getTransmitter(); if (tmit != null) { MidiTransmitDevWrap tdw = new MidiTransmitDevWrap(tmit, mdw); results.add(tdw); logger.info("Made transmit-devWrap OK: {}", tdw); } else { logger.info("No tranmitter found for {}", mdw); } } catch (Throwable t) { logger.warn("Problem looking up transmitter for: {}", mdw, t); } } } return results; } }
public static MidiDevice findMidiDevice(String[] deviceNames, boolean receive, boolean transmit) { if (midiDeviceInfos == null) { System.out.println("Loading device info.."); midiDeviceInfos = MidiSystem.getMidiDeviceInfo(); } try { for (int i = 0; i < midiDeviceInfos.length; i++) { MidiDevice device = MidiSystem.getMidiDevice(midiDeviceInfos[i]); boolean canReceive = device.getMaxReceivers() != 0; boolean canTransmit = device.getMaxTransmitters() != 0; int matches = 0; for (String name : deviceNames) { if (midiDeviceInfos[i].getName().toLowerCase().contains(name.toLowerCase()) || midiDeviceInfos[i].getDescription().toLowerCase().contains(name.toLowerCase())) { matches++; } } if (matches == deviceNames.length && receive == canReceive && transmit == canTransmit) { return device; } } } catch (MidiUnavailableException e) { System.out.printf("MIDI not available: %s\n", e); } return null; }
/** * Tries to detect a valid outbound communication channel, based on a known device signature * (see {@link net.thecodersbreakfast.lp4j.midi.MidiDeviceConfiguration#DEVICE_SIGNATURE}). * * @return A valid outbound communication channel, or {@code null} if non was found. * @throws MidiUnavailableException if the requested device is not available due to resource restrictions */ public static MidiDevice autodetectOutputDevice() throws MidiUnavailableException { MidiDevice.Info[] midiDeviceInfo = MidiSystem.getMidiDeviceInfo(); for (MidiDevice.Info info : midiDeviceInfo) { if (info.getDescription().contains(DEVICE_SIGNATURE) || info.getName().contains(DEVICE_SIGNATURE)) { MidiDevice device = MidiSystem.getMidiDevice(info); if (device.getMaxReceivers() == -1) { return device; } } } return null; }
/** * Logs MIDI system info (e.g. MIDI devices). */ public void logMidiSystemInfo() { getDevices().forEach(device -> logger.info( "Device: name={}, class={}, description={}, vendor={}, version={}, microsecondPosition={}, " + "maxTransmitters={}, maxReceivers={}", device.getDeviceInfo().getName(), device.getClass().getSimpleName(), device.getDeviceInfo().getDescription(), device.getDeviceInfo().getVendor(), device.getDeviceInfo().getVersion(), device.getMicrosecondPosition(), device.getMaxTransmitters(), device.getMaxReceivers())); }
public MidiReceiverDevWrap findLaunchpadOutRcvr() throws Throwable { MidiDevMatchPattern devPattern = new MidiDevMatchPattern(); List<MidiDevWrap> devWrapsAll = MidiDevWrap.findMatchingDevs(devPattern, getLogger()); MidiReceiverDevWrap lpadDevWrap = null; for (MidiDevWrap devWrapCand : devWrapsAll) { MidiDevice devCand = devWrapCand.myDevice; if (devWrapCand.myDevInfo.getName().toLowerCase().contains("launchpad")) { getLogger().info("Found launchpad dev: {}, opening it", devWrapCand); // devWrapCand.ensureDevOpen(); // MaxReceivers == -1 -> unknown, unlimited, or what? if (devCand.getMaxReceivers() != 0) { Receiver lpadRecvrCand = devCand.getReceiver(); if (lpadRecvrCand != null) { getLogger().info("%%%%%%%%%%%%%%%%%% Found launchpad dev receiver: {}", lpadRecvrCand); lpadDevWrap = new MidiReceiverDevWrap(lpadRecvrCand, devWrapCand); break; } } else { getLogger().info("Device contains no receivers - should I close it? {}", devCand); } } } return lpadDevWrap; } static int theDramaticColors[] = {12, 13, 15, 29, 63, 62, 28, 60};
public static Receiver getReceiver(MidiDevice current) { if (current.getMaxReceivers() != 0) { try { if (!current.isOpen()) { current.open(); } } catch (MidiUnavailableException e) { return null; } try { return current.getReceiver(); } catch (MidiUnavailableException e) { current.close(); } } return null; }
System.out.println("Max Receivers:" + inDevice.getMaxReceivers()); System.out.println("Max Transmitters:" + inDevice.getMaxTransmitters()); if ((outDevice == null) && (current.getMaxReceivers() != 0)) System.out.println("Max Receivers:" + inDevice.getMaxReceivers()); System.out.println("Max Transmitters:" + inDevice.getMaxTransmitters()); if ((outDevice == null) && (current.getMaxReceivers() != 0)) System.out.println("Max Receivers:" + inDevice.getMaxReceivers()); System.out.println("Max Transmitters:" + inDevice.getMaxTransmitters());
try{ MidiDevice d = MidiSystem.getMidiDevice(infos[i]); if(d.getMaxReceivers()!=0 && getReceiver){ System.out.println(infos[i].getName()); System.out.println(d.getMaxReceivers()); return d;
if (midiDevice.getMaxReceivers()==AudioSystem.NOT_SPECIFIED) { valueReceiver = "Not specified"; } else { valueReceiver = new Integer(midiDevice.getMaxReceivers());
for (MidiDevice.Info mdi: MidiSystem.getMidiDeviceInfo()) { MidiDevice dev = MidiSystem.getMidiDevice(mdi); if (dev.getMaxReceivers() != 0) { String lcName = StringUtils.defaultString(mdi.getName())