-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBand.java
More file actions
57 lines (55 loc) · 1.73 KB
/
Band.java
File metadata and controls
57 lines (55 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import javax.sound.midi.*;
import java.util.*;
/**
* Implements a "band" application with a piano keyboard that
* can play different musical instruments, either locally or
* over the network.
*/
public class Band {
public static void main (String[] args) {
// Create the local MIDI receiver
Receiver localReceiver;
try {
localReceiver = MidiSystem.getReceiver();
} catch (MidiUnavailableException mue) {
mue.printStackTrace();
return;
}
// Create the JFrame that constitutes the Band program
JFrame frame = new JFrame("Band");
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ControlPanel controlPanel = new ControlPanel(localReceiver);
Piano piano = new Piano(localReceiver);
frame.setLayout(new BorderLayout());
frame.add(piano, BorderLayout.CENTER);
frame.add(controlPanel, BorderLayout.SOUTH);
// Add a listener to radio button that selects the local vs. remote receiver.
controlPanel.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e) {
if (controlPanel.isRemote()) {
try {
// Construct a new receiver given the currently entered IP.
NetworkReceiver networkReceiver = new NetworkReceiver();
networkReceiver.setAddress(controlPanel.getIPAddress());
controlPanel.setReceiver(networkReceiver);
piano.setReceiver(networkReceiver);
} catch (IOException ioe) {
ioe.printStackTrace();
}
} else {
// Use the local MIDI receiver instead.
controlPanel.setReceiver(localReceiver);
piano.setReceiver(localReceiver);
}
}
});
frame.pack();
frame.setVisible(true);
piano.requestFocus();
}
}