Aplikasi Pembelajaran Biola Bagi Pemula
LAMPIRAN A: Kode Program
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; } } 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()); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Aplikasi Pembelajaran Biola"); 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.setPreferredSize(new Dimension(200, 40)); buttonKeterangan.setBackground(Color.pink); 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 = ""; //saat diklik maka gambar jari akan dibersihkan 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; } else if (nada.equals("D_D")) { soundName = "src/suara/D_D.wav"; x = 253;
y = 75; } else if (nada.equals("Eb_D")) { soundName = "src/suara/Eb_D.wav"; x = 253; y = 120; } else if (nada.equals("E_D")) { soundName = "src/suara/E_D.wav"; x = 253; y = 165; } else if (nada.equals("F_D")) { soundName = "src/suara/F_D.wav"; x = 253; y = 210; } else if (nada.equals("F#_D")) { soundName = "src/suara/F#_D.wav"; x = 253; y = 255; } else if (nada.equals("G_D")) { soundName = "src/suara/G_D.wav"; x = 253; y = 300; } else if (nada.equals("G#_D")) { soundName = "src/suara/G#_D.wav"; x = 253; y = 345; } else if (nada.equals("A_A")) { soundName = "src/suara/A_A.wav"; x = 271; y = 75; } else if (nada.equals("Bb_A")) { soundName = "src/suara/Bb_A.wav"; x = 271; y = 120; } else if (nada.equals("B_A")) { soundName = "src/suara/B_A.wav"; x = 271; y = 165; } else if (nada.equals("C_A")) { soundName = "src/suara/C_A.wav"; 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; y = 300;} //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); } } } public String ambil_kunci_dari_database(String nada) {
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 + "'"; Statement statement = koneksiTabelKunci.createStatement(); ResultSet resultSet = statement.executeQuery(sql); 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 teks = buttonNada.get(i).getText().toString(); String[] nadaJariSenar = teks.split(" ");
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(); } }); } }