• Tidak ada hasil yang ditemukan

Aplikasi Pembelajaran Biola Bagi Pemula

N/A
N/A
Protected

Academic year: 2019

Membagikan "Aplikasi Pembelajaran Biola Bagi Pemula"

Copied!
15
0
0

Teks penuh

(1)

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;

}

(2)

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();

(3)

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());

(4)

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");

(5)

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); }

(6)

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));

(7)

}

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 = "";

(8)

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;

(9)
(10)

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;

(11)

}

//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);

} } }

(12)

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 + "'";

(13)

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);

(14)

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(); }

(15)

LAMPIRAN B: Kuesioner

KUESIONER PENILAIAN PENGGUNA APLIKASI PEMBELAJARAN

BIOLA BAGI PEMULA

Aspek Penggunaan Aplikasi

1. Kemudahan menggunakan aplikasi

2. Kemudahan memahami fungsi menu-menu yang ada

3. Pemahaman gambar yang ditunjukkan

4. Pemahaman istilah dalam aplikasi

No

Nama

Ttd

Aspek Penggunaan

Aplikasi

1

2

3

4

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

Referensi

Dokumen terkait

KRITERIA: DIMENSI Sangat Memuaskan (A) Memuaskan (B) Batas (C) Kurang Memuaskan (D) Di bawah standard (E) SKOR Ketepatan gambar -Gambar benar dan sesuai soal

DIMENSI Sangat Memuaska n (A) Memuaska n (B) Batas (C) Kurang Memuaska n (D) Di bawah standar d (E) SKO R ketepatan pembuatan aplikasi sederhana dengan Analisa

3 IKU telah dapat diukur secara obyektif a/b/c/d/e 4 IKU telah menggambarkan hasil a/b/c/d/e 5 IKU telah relevan dengan kondisi yang akan diukur a/b/c/d/e 6 IKU telah cukup

Kandungan lemak yang cukup akan sangat membantu tubuh dalam melarutkan vitamin A, D, E, K dan juga dapat membantu proses metabolisme tubuh agar berjalan dengan baik.. Satu gram

Copyright © el-Midad : Jurnal PGMI 2020 97 15 S N S 60 100 Sangat baik 16 P A 60 100 Sangat baik 17 E A 60 100 Sangat baik 18 P S B 60 70 Cukup JUMLAH 1490

GRADING SCHEME COMPETENCE KRITERIA 1: KETEPATAN PENJELASAN DIMENSI Sangat Memuaskan A Memuaskan B Batas C Kurang Memuaskan D Di bawah standard E SKOR

Kriteria Penilaian Kualitatif Rentang Nilai Kategori 81%-100% Sangat Baik 61%-80% Baik 41%-60% Cukup Baik 21%-40% Kurang Baik 0%-20% Sangat Kurang Indikator keberhasilan

Tabel desain tenun 2 Sumber: dokumentasi penulis, 2018 Keterangan motif atau corak pada desain 2 adalah: A : Corak kinanti B-C : Corak kluwung D : Corak udan liris E : Corak kinanti