Anda di halaman 1dari 12

1.

Tujuan
● Setelah mempelajari modul ini peserta diharapkan dapat:
● Memanggil dan Memainkan File Suara.
● Memanggil dan Memainkan File MIDI Sequence.
● Mengetahui perbedaan antara file berekstensi midi dan (Aiff, Au, Wav)
● Mengetahui cara menggunakan class File dan URL untuk meload file suara

2. Latar Belakang
Pada sebuah permainan efek suara sangat dibutuhkan untuk membuat game yang kita
bangun lebih semakin hidup dan terasa nyata, hal ini juga yang membuat para pemain lebih
tertarik dengan game kita bangun, coba anda bayangkan apabila di dalam suatu permainan
tidak ada suara sama sekali, apa yang anda rasakan?. Efek suara sangat diperlukan oleh
game anda misalnya ketika objek anda mengalami tabrakan, ledakan bom, suara tembakan,
dll.

3. Percobaan
Percobaan 1: Membuat Class FileSuara

import java.awt.Graphics;
import java.io.*;
import javax.sound.sampled.*;
import javax.swing.*;

public class FileSuara extends JFrame {

AudioInputStream suara;
String eror1="Tidak Ada Eror";
String eror2="Tidak Ada Eror";
String eror3="Tidak Ada Eror";

FileSuara(){
try {
suara = AudioSystem.getAudioInputStream(new File("BOOM.wav"));
Clip klip =AudioSystem.getClip();
klip.open(suara);
klip.loop(0);
} catch (UnsupportedAudioFileException e) {

Distributed by Meruvian Education


eror1=e.toString();
} catch (IOException e) {
eror2=e.toString();
} catch (LineUnavailableException e) {
eror3=e.toString();
}
setTitle("Test File Suara");
setSize(250,200);
setVisible(true);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}

public void paint(Graphics g){


g.drawString("Eror 1 : "+eror1, 10, 50);
g.drawString("Eror 2 : "+eror2, 10, 100);
g.drawString("Eror 3 : "+eror3, 10, 150);
}

public static void main(String args[]){


new FileSuara();
}
}

Percobaan 2: Membuat Class URLSuara


import java.awt.Graphics;
import java.io.IOException;
import java.net.URL;
import javax.sound.sampled.*;
import javax.swing.*;

public class URLSuara extends JFrame {

AudioInputStream suara;
String eror1="Tidak Ada Eror";
String eror2="Tidak Ada Eror";
String eror3="Tidak Ada Eror";

URLSuara(){
URL url=this.getClass().getResource("BOOM.wav");
try {
suara = AudioSystem.getAudioInputStream(url);
Clip klip =AudioSystem.getClip();
klip.open(suara);
klip.loop(0);
} catch (UnsupportedAudioFileException e) {

Distributed by Meruvian Education


eror1=e.toString();
} catch (IOException e) {
eror2=e.toString();
} catch (LineUnavailableException e) {
eror3=e.toString();
}
setTitle("Test URL Suara");
setSize(250,200);
setVisible(true);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}

public void paint(Graphics g){


g.drawString("Eror 1 : "+eror1, 10, 50);
g.drawString("Eror 2 : "+eror2, 10, 100);
g.drawString("Eror 3 : "+eror3, 10, 150);
}

public static void main(String args[]){


new URLSuara();
}
}

Percobaan 3: Membuat Class Suara

import java.awt.Graphics;
import java.io.IOException;
import java.net.URL;
import javax.sound.sampled.*;
import javax.swing.JFrame;

public class Suara extends JFrame {

AudioInputStream suara;
String eror1="Tidak Ada Eror";
String eror2="Tidak Ada Eror";
String eror3="Tidak Ada Eror";

public URL getURL(String namaFile){


URL url=null;
try{
url=this.getClass().getResource(namaFile);
}catch(Exception e){}
return url;
}

Distributed by Meruvian Education


Suara(){
try {
suara = AudioSystem.getAudioInputStream(getURL("BOOM.wav"));
Clip klip =AudioSystem.getClip();
klip.open(suara);
klip.loop(0);
} catch (UnsupportedAudioFileException e) {
eror1=e.toString();
} catch (IOException e) {
eror2=e.toString();
} catch (LineUnavailableException e) {
eror3=e.toString();
}
setTitle("Test Suara");
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}

public void paint(Graphics g){


g.drawString(suara.getFormat().toString(), 10, 50);
g.drawString("Rate: " + (int)suara.getFormat().getSampleRate(), 10, 100);
g.drawString("Channels: " + suara.getFormat().getChannels(), 10, 150);
g.drawString("Encoded format: " + suara.getFormat().getEncoding().toString(),
10, 200);
g.drawString("Size: " + suara.getFormat().getSampleSizeInBits() + "-bit",
10,250);
g.drawString("Frame size: " + suara.getFormat().getFrameSize(), 10, 300);

g.drawString("Eror 1 : "+eror1, 10, 350);


g.drawString("Eror 2 : "+eror2, 10, 400);
g.drawString("Eror 3 : "+eror3, 10, 450);
}

public static void main(String args[]){


new Suara();
}
}

Distributed by Meruvian Education


Percobaan 4: Membuat Class URLMidi

import java.awt.Graphics;
import java.io.IOException;
import java.net.URL;
import javax.sound.midi.*;
import javax.swing.JFrame;

public class URLMidi extends JFrame {

Sequence suara;
Sequencer ambilSuara;

public URL getURL(String namaFile){


URL url=null;
try{
url=this.getClass().getResource(namaFile);
}catch(Exception e){}
return url;
}

URLMidi(){

try {
suara = MidiSystem.getSequence(getURL("CONTOH.mid"));
ambilSuara=MidiSystem.getSequencer();
ambilSuara.setSequence(suara);
ambilSuara.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
ambilSuara.open();
ambilSuara.start();
} catch (InvalidMidiDataException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MidiUnavailableException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

setTitle("Test URL MIDI");


setSize(300,200);
setVisible(true);
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
}

Distributed by Meruvian Education


public void paint(Graphics g){
g.drawString("Resolution : "+suara.getResolution(), 10, 50);
g.drawString("Tick length : " + suara.getTickLength(), 10, 100);
g.drawString("Tracks: " + suara.getTracks().length, 10, 150);
}

public static void main(String args[]){


new URLMidi();
}
}

Percobaan 5: Membuat Class OperasiSuara

import java.io.*;
import java.net.*;
import javax.sound.sampled.*;

public class OperasiSuara{

private AudioInputStream suara;


private Clip klip;
private String namaFile = "";
private boolean looping = false;
private int repeat = 0;

public OperasiSuara(){
try{
klip = AudioSystem.getClip();
}catch(LineUnavailableException e){System.out.println("Terjadi kesalahan pada
klip suara : "+e.toString());}
}

public OperasiSuara(String filesuara) {


this(); //memanggil default konstruktor pertama (tanpa
parameter);
load(filesuara);
}

public boolean load(String filesuara){


try{
setFilename(filesuara);
suara = AudioSystem.getAudioInputStream(getURL(namaFile));
klip.open(suara);
return true;
}catch(IOException e){

Distributed by Meruvian Education


return false;
}catch(UnsupportedAudioFileException e){
return false;
}catch(LineUnavailableException e){
return false;
}
}

public void setFilename(String nama_fail) {namaFile = nama_fail;}


public void setLooping(boolean ulang) {looping = ulang;}
public void setRepeat(int ulangi) {repeat= ulangi;}

public Clip getClip() { return klip;}


public int getRepeat() {return repeat;}
public boolean getLooping() {return looping;}
public String getNamaFile() {return namaFile;}
private URL getURL(String filename){
URL url = null;
try {
url = this.getClass().getResource(filename);
System.out.println(url);
}catch(Exception e){ System.out.println("error url : "+e.toString());}
return url;
}

public boolean isLoaded(){


return (boolean)(suara != null);
}

public void play(){


if (!isLoaded()) return;

klip.setFramePosition(0);

if(looping)
klip.loop(Clip.LOOP_CONTINUOUSLY);
else
klip.loop(repeat);
}

public void stop(){


klip.stop();
}
}

Distributed by Meruvian Education


Percobaan 6 : Membuat class OperasiMidi

import java.io.*;
import java.net.*;
import javax.sound.midi.*;

public class OperasiMidi{

private Sequence suara;


private Sequencer ambilSuara;
private String namaFile;
private boolean looping = false;
private int repeat = 0;

public OperasiMidi(){
try{
ambilSuara = MidiSystem.getSequencer();
}catch(MidiUnavailableException e){ }
}

public OperasiMidi(String fileMidi){


this(); //memanggil default konstruktor pertama (tanpa
parameter);
load(fileMidi);
}

public boolean load(String fileMidi){


try{
namaFile = fileMidi;
suara = MidiSystem.getSequence(getURL(namaFile));
ambilSuara.setSequence(suara);
ambilSuara.open();
return true;
}catch(InvalidMidiDataException e){
return false;
}catch(MidiUnavailableException e){
return false;
}catch(IOException e){
return false;
}
}
public void setLooping(boolean ulang) {looping =ulang;}
public void setRepeat(int ulangi) {repeat= ulangi;}

public Sequence getSuara() { return suara;}


public String getFilename() {return namaFile;}
public boolean getLooping() {return looping;}
public int getRepeat() {return repeat;}

Distributed by Meruvian Education


private URL getURL(String filename){
URL url = null;
try {
url = this.getClass().getResource(filename);
}catch(Exception e){ }
return url;
}

public boolean isLoaded(){


return (boolean)(ambilSuara.isOpen());
}

public void play(){


if(!ambilSuara.isOpen()) return;
if(looping){
ambilSuara.setLoopCount(Sequencer.LOOP_CONTINUOUSLY);
ambilSuara.start();
}else{
ambilSuara.setLoopCount(repeat);
ambilSuara.start();
}
}

public void stop(){


ambilSuara.stop();
}
}

Kunci Jawaban :
Percobaan 1

Distributed by Meruvian Education


Percobaan 2

Distributed by Meruvian Education


Percobaan 3

Distributed by Meruvian Education


Percobaan 4

Distributed by Meruvian Education

Anda mungkin juga menyukai