public class MooTrackTitle extends JPanel {
+ private Track track;
private MetaMessage trackNameMessage;
- private String trackName = "";
private ShortMessage programChangeMessage;
- private int programChange = 0, channel = 0;
+
private JTextField title;
private MooInstrumentList instruments;
private JComboBox channelBox;
private JCheckBox mute;
private JCheckBox solo;
- private Track track;
- private int trackNum;
+
+ private String trackName = "";
+ private int channel = 0;
/**
* Creates the title bar.
*/
- public MooTrackTitle (Track aTrack, int aTrackNum) {
+ public MooTrackTitle (Track aTrack) {
setDoubleBuffered(true);
track = aTrack;
- this.trackNum = aTrackNum;
- // Finds track name and program change
+ // Finds track name, program change and channel.
MidiMessage msg;
+ int status;
for (int i = 0; i < track.size(); i++) {
msg = track.get(i).getMessage();
- if (msg.getStatus() == 255) {
+ status = msg.getStatus();
+ if (status == MetaMessage.META) {
if (((MetaMessage)msg).getType() == 3) {
trackNameMessage = (MetaMessage)msg;
trackName = new String(trackNameMessage.getData());
}
- } else if (msg.getStatus() == 192) {
+ } else if (status >= 192 && status <= 207) {
programChangeMessage = (ShortMessage)msg;
- programChange = programChangeMessage.getData1();
+ channel = status - 192;
}
}
- MidiEvent event;
- for (int i = 0; i < track.size(); i++) {
- event = track.get(i);
- if (event instanceof MooNote) channel = ((MooNote)event).getChannel();
- }
-
// Creates and places components.
setLayout(new GridLayout(4,1));
setBorder(BorderFactory.createLineBorder(Color.black));
setPreferredSize(new Dimension(MooTrackView.VIEW_WIDTH,70));
- title = new JTextField(trackName); // JTextField(String text, int columns)
+ title = new JTextField(trackName);
title.setFont(Moosique.getGUI().FONT);
title.addFocusListener(new TitleFocusListener());
add(title);
-
- JPanel checkboxes = new JPanel();
- checkboxes.setLayout(new GridLayout(1,3));
+ instruments = new MooInstrumentList(channel);
+ // instruments = new MooInstrumentList(channel, programChangeMessage);
+ add(instruments);
channelBox = new JComboBox();
channelBox.setFont(Moosique.getGUI().FONT);
for (int i = 1; i <= 16; i++)
channelBox.addItem(new Integer(i));
- for (int j = 0; j < track.size(); j++) {
- MidiEvent me = track.get(j);
- if (me instanceof MooNote){
- MooNote mn = (MooNote)me;
- channelBox.setSelectedIndex(mn.getChannel());
- break;
- }
- }
-
- instruments = new MooInstrumentList(channelBox.getSelectedIndex());
-
- instruments = new MooInstrumentList(channelBox.getSelectedIndex());
+ channelBox.setSelectedIndex(channel);
channelBox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mn.setChannel(chan);
}
}}});
- channelBox.setSelectedIndex(channel);
-
- add(instruments);
add(channelBox);
+ JPanel checkboxes = new JPanel();
+ checkboxes.setLayout(new GridLayout(1,3));
+
mute = new JCheckBox("Mute");
- mute.setSelected(Moosique.getSequencer().getTrackMute(trackNum));
+ mute.setSelected(Moosique.getChannel(channel).getMute());
mute.setFont(Moosique.getGUI().FONT);
mute.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
boolean selected = mute.isSelected();
if (selected){
solo.setSelected(false);
- Moosique.getSequencer().setTrackSolo(trackNum, false);
+ Moosique.getChannel(channel).setSolo(false);
}
- Moosique.getSequencer().setTrackMute(trackNum, selected);
+ Moosique.getChannel(channel).setMute(selected);
}});
checkboxes.add(mute);
solo = new JCheckBox("Solo");
- solo.setSelected(Moosique.getSequencer().getTrackSolo(trackNum));
+ solo.setSelected(Moosique.getChannel(channel).getSolo());
solo.setFont(Moosique.getGUI().FONT);
solo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
boolean selected = solo.isSelected();
if (selected){
mute.setSelected(false);
- Moosique.getSequencer().setTrackMute(trackNum, false);
+ Moosique.getChannel(channel).setMute(false);
}
- Moosique.getSequencer().setTrackSolo(trackNum, selected);
+ Moosique.getChannel(channel).setSolo(selected);
}});
checkboxes.add(solo);
add(checkboxes);