Ho fatto qualche passo avanti: ora ho questa main class:

codice:
package JmidiSync;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import javax.sound.midi.MidiDevice;
import javax.sound.midi.Transmitter;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JTextField;

/**
 *
 * @author Franz
 */
public class JMidiSync implements MouseMotionListener, ActionListener {

    public static MidiHandler midi;
    public static JFrame front;
    public static JPanel skin;
    public static JTextField bpm;
    public static JSlider slideTime;
    public static JComboBox one, two, three, four;
    
    public static MidiDevice[] devArray;
    public Transmitter[] transArray;
    public static String[] devices, transmitters;
    
    /**
     * @param args the command line arguments
     */
    
    public static void main(String[] args) {
        midi = new MidiHandler();
        new JMidiSync();
    }

    public JMidiSync() {
        devArray = midi.getDevices();
        //transArray = midi.getTransmitters();
        
        devices = new String[midi.getDevicesNumber()];
        //transmitters = new String[midi.getTransmittersNumber()];

        for(int i = 0; i < devArray.length; i++) {
            devices[i] = devArray[i].getDeviceInfo().toString();
        }
        
        /*for(int i = 0; i < transArray.length; i++) {
            transmitters[i] = transArray[i].toString();
        }*/
        
        designGui();
    }

    public void designGui() {
        front = new JFrame("JMidiSync");
        front.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        skin = new JPanel();
        skin.setSize(220, 300);
        skin.setBounds(0, 0, 220, 300);
        skin.setBackground(Color.DARK_GRAY);
        skin.setLayout(null);

        bpm = new JTextField();
        bpm.setSize(200, 30);
        bpm.setBounds(10, 10, 200, 30);
        bpm.setEditable(false);
        bpm.setText("120");
        bpm.setHorizontalAlignment(JTextField.CENTER);
        skin.add(bpm);

        slideTime = new JSlider(JSlider.HORIZONTAL, 0, 240, 120);
        slideTime.setSize(200, 30);
        slideTime.setBounds(10, 50, 200, 30);
        slideTime.addMouseMotionListener(this);
        skin.add(slideTime);

        one = new JComboBox(devices);
        one.setSize(200, 30);
        one.setBounds(10, 90, 200, 30);
        one.addActionListener(this);
        skin.add(one);

        two = new JComboBox(devices);
        two.setSize(200, 30);
        two.setBounds(10, 130, 200, 30);
        skin.add(two);

        three = new JComboBox(devices);
        three.setSize(200, 30);
        three.setBounds(10, 170, 200, 30);
        skin.add(three);

        four = new JComboBox(devices);
        four.setSize(200, 30);
        four.setBounds(10, 210, 200, 30);
        skin.add(four);

        front.add(skin);
        front.setSize(220, 300);
        front.setVisible(true);
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        Object obj = e.getComponent();

        if (obj == slideTime) {
            bpm.setText(String.valueOf(slideTime.getValue()));
        }
    }

    @Override
    public void mouseMoved(MouseEvent e) {
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object obj = e.getSource();        
    }
che istanzia la classe midi:

codice:
package JmidiSync;

import java.util.List;
import javax.sound.midi.*;

public class MidiHandler {

    public MidiDevice[] devArray;
    public Transmitter[] transArray;
    public static MidiDevice device;
    public static MidiDevice.Info[] infos;
    
    public MidiHandler() {
        
        infos = MidiSystem.getMidiDeviceInfo();
        
        devArray = new MidiDevice[infos.length];

        for (int i = 0; i < infos.length; i++) {
            try {
                device = MidiSystem.getMidiDevice(infos[i]);
                //does the device have any transmitters?
                //if it does, add it to the device list
                System.out.println(infos[i]);

                devArray[i] = device;

                //get all transmitters
                List<Transmitter> transmitters = device.getTransmitters();
                //and for each transmitter

                for (int j = 0; j < transmitters.size(); j++) {
                    //create a new receiver
                    transmitters.get(j).setReceiver(
                            //using my own MidiInputReceiver
                            new MidiInputReceiver(device.getDeviceInfo().toString()));
                }

                Transmitter trans = device.getTransmitter();
                
                trans.setReceiver(new MidiInputReceiver(device.getDeviceInfo().toString()));

                //open each device
                //device.open();
                //if code gets this far without throwing an exception
                //print a success message
                //System.out.println(device.getDeviceInfo() + " Was Opened");
                
            } catch (MidiUnavailableException e) {
            }
        }
    }
    
    public MidiDevice[] getDevices() {
        return devArray;
    }
    
    public int getDevicesNumber() {
        return devArray.length;
    }

    public Transmitter[] getTransmitters() {
        return transArray;
    }

    public int getTransmittersNumber() {
        return transArray.length;
    }

}
LA domanda è: come creo e dove metto nella classe midi il costrutto per popolare la array di Transmitter transArray?

Fino al MidiDevice[] ci sono arrivato: in cima al for loop devArray[i] = device;
Come devo fare per transArray?
Calcolato che poi istanziato in main class devo trasformare la array transArray in una array di stringhe per popolare i combo box.