Ho fatto qualche passo avanti: ora ho questa main class:
che istanzia la classe midi: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(); }
LA domanda è: come creo e dove metto nella classe midi il costrutto per popolare la array di Transmitter transArray?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; } }
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.

Rispondi quotando