Membuat Program Pemutar Musik Dengan Mudah Memakai JFugue


Pada tulisan MIDI: Bermain piano dengan Java, saya memakai Java Sound API untuk memutar musik di Java.   Terlihat bahwa dibutuhkan kode program yang cukup panjang untuk memutar sebuah nada (termasuk diantaranya perhitungan frekuensi).   Sebagai alternatif untuk membuat kode program yang lebih singkat, terdapat library JFugue (www.jfugue.org/download.html).   Dengan JFugue, saya dapat memainkan nada dalam bentuk String.   Hal ini mirip seperti di Turbo Basic dulu, tetapi tentu saja dengan syntax String yang jauh lebih lengkap.

Setelah men-download JFugue, saya perlu menambahkan JAR tersebut ke proyek NetBeans saya.   Caranya adalah dengan men-klik kanan nama proyek, memilih Properties, Libraries, Compile, kemudian men-klik tombol Add JAR/Folder.   Setelah itu saya men-browse lokasi penyimpanan file JAR JFugue yang telah di-download sebelumnya.

Berikut ini adalah contoh kode program yang memakai JFugue:

import org.jfugue.Player;

public class Main {

  public void start() {
    Player player = new Player();
    player.play("C D E F G A B C6 R C6 B A G F E D C");
  }

  public static void main(String[] args) {
    new Main().start();
  }

}

Dengan hanya 2 baris perintah yang mudah dipahami, deretan nada akan dimainkan saat program dijalankan. C, D, E, F, G, A, dan B masing-masing mewakili not (note) musik. R dipakai untuk mewakili jeda (rest). Oktaf (octave) diwakili oleh angka 0 hingga 10. Secara default, octave untuk note adalah 5, sehingga C6 pada kode program di atas menyebabkan naik 1 octave.

JFugue juga memungkinkan untuk memutar chord (beberapa nada yang dimainkan pada waktu bersamaan) dengan mudah, seperti pada contoh berikut ini:

import org.jfugue.Player;

public class Main {

  public void start() {
    Player player = new Player();
    player.play("Ch+Eh+Gh C5maj D5maj7 D5maj11 Cmaj7 Cmaj11 Cdim7");
  }

  public static void main(String[] args) {
    new Main().start();
  }

}

Pada contoh di atas, Ch+Eh+Gh adalah chord C-major.   Sebagai alternatifnya, saya dapat menggunakan Cmaj yang lebih singkat. Secara default, chords dimainkan pada octave 3.   C5maj akan memutar chord C-major pada oktave 5.   JFugue juga memiliki nama untuk chords lainnya seperti maj, min, aug, dim, dom7, maj7, dsb (informasi dapat dilihat pada dokumentasinya).

Untuk mengatur durasi, saya dapat menambahkan karakter w (durasi penuh), h (durasi setengah), q (untuk durasi 1/4), i (untuk durasi 1/8), s (untuk durasi 1/16), t (untuk durasi 1/32), x (untuk durasi 1/64), dan o (untuk durasi 1/128).   Berikut ini adalah contoh pemutaran nada yang dilengkapi durasi:

import org.jfugue.Player;

public class Main {

  public void start() {
    Player player = new Player();
    player.play("C D E F Gh Eq C");
  }

  public static void main(String[] args) {
    new Main().start();
  }

}

Untuk berganti alat musik, gunakan I di-ikuti dengan nama instrumen sesuai dengan spesifikasi MIDI.   Alat musik default yang dipakai adalah piano.   Sebagai contoh, saya akan mengubah kode program di atas agar dimainkan dengan alat musik seruling:

import org.jfugue.Player;

public class Main {

  public void start() {
    Player player = new Player();
    player.play("I[Flute] C D E F Gh Eq C");
  }

  public static void main(String[] args) {
    new Main().start();
  }

}

Beberapa hal menarik,  misalnya saya memakai instrument suara tembakan,  seperti yang terlihat pada contoh kode program berikut ini:

import org.jfugue.Player;

public class Main {

  public void start() {
    Player player = new Player();
    player.play("I[Gunshot] Cs Cs Cs Gs Gs Gs Cw");
  }

  public static void main(String[] args) {
    new Main().start();
  }
}

Dan tentunya masih ada banyak lagi fasilitas JFugue yang dapat dibaca di dokumentasi resminya.

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: