LAMPIRAN A: Kode Program
1.
KoneksiDatabase.java
package violin;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class KoneksiDatabase {
Connection koneksiDatabase = null;
public Connection getKoneksiDatabase() {
try {
Class.forName("com.mysql.jdbc.Driver");
// System.out.println("Class Driver Ditemukan ");
koneksiDatabase =
DriverManager.getConnection("jdbc:mysql://localhost:3306/belajar_biola",
"root", "");
// System.out.println("Driver Manager Ditemukan ");
} catch (SQLException ex) {
System.out.println("Driver Manager Tidak Ditemukan " +
ex.toString());
} catch (ClassNotFoundException ex) {
System.out.println("Class Driver Tidak Ditemukan : " +
ex.toString());
}
return koneksiDatabase;
}
1.
Violin.java
package violin;
import java.awt.*; import java.awt.event.*;
import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.*;
import java.io.File; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList;
import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip;
public class Violin extends JFrame implements ActionListener {
private JComboBox comboKunci;
private JButton buttonMainkanMusik = new JButton("PLAY"); private int x = 315;
private int y = 120; private int x1 ; private int y1 ;
//deklarasi global, agar suara bisa stop dan start Clip clip = null;
JPanel panelKanan = new JPanel() {
@Override
protected void paintComponent(Graphics g) { super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Image gambarBiola =
Toolkit.getDefaultToolkit().getImage("src/gambar/biola.jpg"); g2.drawImage(gambarBiola, 0, 0, this); g2.finalize();
JPanel panelKiri = new JPanel() {
@Override
public void paintComponents(Graphics g) { super.paintComponents(g);
} };
JPanel panelTengah = new JPanel() { @Override
protected void paintComponent(Graphics g) { super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
Image gambarBiola =
Toolkit.getDefaultToolkit().getImage("src/gambar/vio3.jpg"); g2.drawImage(gambarBiola, 1, 0, this); g2.finalize();
} };
ArrayList<String> nada = new ArrayList<String>(); ArrayList<Integer> angka = new ArrayList<Integer>(); ArrayList<Integer> kode_jari = new ArrayList<Integer>(); ArrayList<JButton> buttonNada = new ArrayList<JButton>(); ArrayList<String> stringNada = new ArrayList<String>();
//menghindari error jika menghapus button sementara button belum ada //jika button sudah ada, button dihapus di panelTengah
int status_panel_kiri = 0;
//id kunci yang sudah di split setelah dapat dari database String[] id_kunci = null;
JButton buttonKeterangan, buttonAbout;
public Violin() {
ImageIcon ico = new ImageIcon("src/gambar/biola.jpg"); setIconImage(ico.getImage());
setSize(1360, 720); setResizable(false); setVisible(true);
buttonMainkanMusik.setBackground(Color.pink); buttonMainkanMusik.setForeground(Color.black);
buttonMainkanMusik.setFont(new Font("Segoe Script", Font.BOLD, 16));
panelKanan.setLayout(new GridLayout(2, 0)); panelKanan.setBackground(Color.pink);
String[] strKunci = {"--Pilih Tangga Nada--", "A", "B", "C", "D", "E", "F", "G"};
comboKunci = new JComboBox(strKunci); comboKunci.setBackground(Color.pink);
comboKunci.setFont(new Font("Segoe Script", Font.BOLD, 16)); comboKunci.setForeground(Color.black);
comboKunci.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
String nadaDasar = comboKunci.getSelectedItem().toString(); if (e.getStateChange() == 1 && comboKunci.getSelectedIndex() != 0) {
bersihkan_panel(panelKanan);
String kumpulanKunci =
ambil_kunci_dari_database(nadaDasar);
tombol_manager(kumpulanKunci); }
} });
buttonKeterangan = new JButton("Keterangan");
buttonKeterangan.setFont(new Font("Segoe Script", Font.BOLD, 16)); buttonKeterangan.addActionListener(this);
buttonAbout = new JButton("About");
buttonAbout.setPreferredSize(new Dimension(200, 40)); buttonAbout.setBackground(Color.pink);
buttonAbout.setFont(new Font("Segoe Script", Font.BOLD, 16)); buttonAbout.addActionListener(this);
panelKiri.setBackground(Color.pink);
ImageIcon gbr3 = new ImageIcon("src/gambar/mozart.jpg"); JLabel LabelGambar3 = new JLabel(gbr3);
panelKiri.add(buttonKeterangan); panelKiri.add(buttonAbout); panelKiri.add(LabelGambar3);
panelTengah.add(comboKunci);
buttonMainkanMusik.addActionListener(this); panelTengah.add(buttonMainkanMusik);
panelTengah.setLayout(new GridLayout(20, 100)); //panelTengah.setBackground(Color.PINK);
GridLayout myLayout = new GridLayout(1, 2); setLayout(myLayout);
add(panelKiri); add(panelTengah); add(panelKanan); }
public void tombol_manager(String nada_dasar) {
//bersihkan button dinamis dari panelTengah if (status_panel_kiri > 0) {
for (int i = 0; i < id_kunci.length; i++) { panelTengah.remove(buttonNada.get(i)); // JOptionPane.showMessageDialog(null, j); }
status_panel_kiri++;
panelTengah.revalidate(); panelTengah.repaint(); buttonNada.clear();
id_kunci = nada_dasar.split("_");
for (int i = 0; i < id_kunci.length; i++) {
ArrayList<String> nadaJariSenar = new ArrayList<String>(); nadaJariSenar.clear();
nadaJariSenar =
ambil_nada_jari_senar_berdasarkan_id_kunci(Integer.parseInt(id_kunci[i]));
String nada = "Nada " + nadaJariSenar.get(0);
String jari = "";
if (nadaJariSenar.get(1).equals("0")) { jari = " Open String";
} else if (nadaJariSenar.get(1).equals("1")) { jari = " Jari Telunjuk";
} else if (nadaJariSenar.get(1).equals("2")) { jari = " Jari Tengah";
} else if (nadaJariSenar.get(1).equals("3")) { jari = " Jari Manis";
}
String senar = " Senar " + nadaJariSenar.get(2);
JButton button = new JButton(nada + jari + senar);// + urutan);
buttonNada.add(button);
button.setBackground(Color.pink); button.setForeground(Color.black);
button.setFont(new Font("Segoe Script", Font.BOLD, 16));
buttonNada.get(i).addActionListener(this); panelTengah.add(buttonNada.get(i));
}
public static void bersihkan_panel(JPanel f) { f.paint(f.getGraphics());
f.revalidate(); }
public void mainkan_musik(String nadaDasar) {
String kumpulanKunci = ambil_kunci_dari_database(nadaDasar); String[] kunci = kumpulanKunci.split("_");
ArrayList<String> nadaJariSenar = new ArrayList<String>(); nadaJariSenar.clear();
for (int i = 0; i < kunci.length; i++) { String kodeNada = "";
nadaJariSenar =
ambil_nada_jari_senar_berdasarkan_id_kunci(Integer.parseInt(kunci[i])); int kodeJari = Integer.parseInt(nadaJariSenar.get(1));
kodeNada = nadaJariSenar.get(0) + "_" + nadaJariSenar.get(2); int urutan = i + 1;
if (urutan > 7) {
urutan = urutan - 7; }
nada_manager(kodeNada, kodeJari); System.out.println(kodeNada); }
}
public void nada_manager(String nada, int kode_jari) {
// System.out.println("Nada Manager :" + angka + nada + kode_jari);
String soundName = null; String warna = "";
Graphics graphicsPanelKanan = panelKanan.getGraphics(); if (clip != null) {
clip.stop(); }
if (nada.equals("G_G")) {
soundName = "src/suara/G_G.wav"; x = 235;
y = 75; x1 = 235; y1 = 80;
} else if (nada.equals("Ab_G")) { soundName = "src/suara/Ab_G.wav"; x = 235;
y = 120;
} else if (nada.equals("A_G")) { soundName = "src/suara/A_G.wav"; x = 235;
y = 165;
} else if (nada.equals("Bb_G")) { soundName = "src/suara/Bb_G.wav"; x = 235;
y = 210;
} else if (nada.equals("B_G")) { soundName = "src/suara/B_G.wav"; x = 233;
y = 255;
} else if (nada.equals("C_G")) { soundName = "src/suara/C_G.wav"; x = 232;
y = 300;
} else if (nada.equals("C#_G")) { soundName = "src/suara/C#_G.wav"; x = 232;
y = 345;
x = 271; y = 210;
} else if (nada.equals("C#_A")) { soundName = "src/suara/C#_A.wav"; x = 271;
y = 255;
} else if (nada.equals("D_A")) { soundName = "src/suara/D_A.wav"; x = 271;
y = 300;
} else if (nada.equals("D#_A")) { soundName = "src/suara/D#_A.wav"; x = 271;
y = 300;
} else if (nada.equals("E_E")) { soundName = "src/suara/E_E.wav"; x = 288;
y = 75;
} else if (nada.equals("F_E")) { soundName = "src/suara/F_E.wav"; x = 288;
y = 120;
} else if (nada.equals("F#_E")) { soundName = "src/suara/F#_E.wav"; x = 288;
y = 165;
} else if (nada.equals("G_E")) { soundName = "src/suara/G_E.wav"; x = 288;
y = 210;
} else if (nada.equals("G#_E")) { soundName = "src/suara/G#_E.wav"; x = 288;
y = 255;
} else if (nada.equals("A_E")) { soundName = "src/suara/A_E.wav"; x = 288;
}
//untunk mengatur warna berdasarkan kode jari if (kode_jari == 0) {
graphicsPanelKanan.setColor(Color.BLUE); } else if (kode_jari == 1) {
graphicsPanelKanan.setColor(Color.RED); } else if (kode_jari == 2) {
graphicsPanelKanan.setColor(Color.YELLOW); } else if (kode_jari == 3) {
graphicsPanelKanan.setColor(Color.GREEN); }
//lingkaran jari
graphicsPanelKanan.fillOval(x, y, 25, 25); graphicsPanelKanan.setFont(
new Font("default", Font.BOLD, 30));
//mainkan suara try {
AudioInputStream audioInputStream =
AudioSystem.getAudioInputStream(new File(soundName).getAbsoluteFile()); clip = AudioSystem.getClip();
clip.open(audioInputStream); clip.start();
} catch (Exception ex) {
System.out.println("ERROR : " + ex.toString()); } finally {
try {
//waktu delay suara Thread.sleep(1500);
} catch (InterruptedException ex) {
Logger.getLogger(Violin.class.getName()).log(Level.SEVERE, null, ex);
} } }
String kunci = "";
KoneksiDatabase koneksiDatabase = new KoneksiDatabase();
java.sql.Connection koneksiTabelKunci =
koneksiDatabase.getKoneksiDatabase();
try {
String sql = "SELECT * FROM tabel_kunci WHERE nada_dasar = '" + nada + "'";
Statement statement = koneksiTabelKunci.createStatement(); ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
kunci = resultSet.getString("id_nada").toString(); }
resultSet.close(); statement.close(); } catch (SQLException ex) {
System.out.println("Statement Tampil Nada Error : " + ex.toString());
}
System.out.println("Kunci dari database : " + kunci); return kunci;
}
public ArrayList ambil_nada_jari_senar_berdasarkan_id_kunci(int id_nada) {
String nada = null, jari = null, senar = null;
ArrayList<String> nadaJariSenar = new ArrayList<String>();
KoneksiDatabase koneksiDatabase = new KoneksiDatabase();
java.sql.Connection koneksiTabelKunci =
koneksiDatabase.getKoneksiDatabase();
try {
String sql = "SELECT * FROM tabel_nada WHERE id_nada= '" + id_nada + "'";
if (resultSet.next()) {
nada = resultSet.getString("nada").toString(); jari = String.valueOf(resultSet.getInt("jari")); senar = resultSet.getString("senar").toString(); }
nadaJariSenar.add(nada); nadaJariSenar.add(jari); nadaJariSenar.add(senar);
resultSet.close(); statement.close(); } catch (SQLException ex) {
System.out.println("Statement Tampil Nada Error : " + ex.toString());
}
return nadaJariSenar; }
@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == buttonKeterangan) { new violin2();
} else if (event.getSource() == buttonAbout) { new violin3();
} else if (event.getSource() == buttonMainkanMusik) {
if (comboKunci.getSelectedIndex() != 0) {
bersihkan_panel(panelKanan);
mainkan_musik(comboKunci.getSelectedItem().toString()); }
} else {
for (int i = 0; i < buttonNada.size(); i++) { if (event.getSource() == buttonNada.get(i)) { bersihkan_panel(panelKanan);
String nada = nadaJariSenar[1].trim(); int jari = 0;
if
(nadaJariSenar[3].toLowerCase().trim().equals("string")) { jari = 0;
} else if
(nadaJariSenar[3].toLowerCase().trim().equals("telunjuk")) { jari = 1;
} else if
(nadaJariSenar[3].toLowerCase().trim().equals("tengah")) { jari = 2;
} else if
(nadaJariSenar[3].toLowerCase().trim().equals("manis")) { jari = 3;
}
String senar = nadaJariSenar[5].trim();
System.out.println(nadaJariSenar[1]); System.out.println(nadaJariSenar[3]); System.out.println(nadaJariSenar[5]);
nada_manager(nada + "_" + senar, jari); }
} } }
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() { new Violin(); }