V tomto krátkém článku si ukážeme, jak je možné napsat v Javě třídu, která by nám obstarávala funkce metronomu. Metronom je přístroj, který rovnoměrně odklepává rytmus. Na stupnici metronomu můžeme nastavovat většinou hodnoty 40 až 210. Tyto hodnoty značí počet úderů za minutu.
V našem metronomu můžeme sice odklépávat (přehrávat) i hodnoty přesahující standartní hodnoty, ale při vytvoření objektu se vypíše upozornění, že je hodnota mimo standart.
K "cvakání" našeho metronomu by bylo zřejmě nejvhodnější přehrávat nějaký midi zvuk, ale já jsem si zvolil metodu, kdy si mohu přehrávat zvkukový soubor formátu wav (midi jsem nezvolil, protože mi ALSA midi nepřehává..).
Takto by již mohla vypadat celá třída Metronom:
public class Metronom extends Thread {
private String cesta;
private int udery;
private int pauza;
public Metronom(String cesta, int udery) {
this.udery = udery;
this.cesta = cesta;
uderyTest();
vypocetUderu();
}
public Metronom(int udery) {
this.udery = udery;
this.cesta = "zvuk.wav";
uderyTest();
vypocetUderu();
}
private void uderyTest() {
if(udery < 40 || udery > 210)
System.err.append("Nestandartni rychlost metronou..");
}
private void vypocetUderu() {
this.pauza = 60000/udery;
}
public void run() {
AePlayWave play = new AePlayWave(cesta);
while(true) {
try {
play.run();
Thread.sleep(pauza);
} catch (InterruptedException ex) {
System.err.println(ex);
}
}
}
}
Třída dědí Thread - samotné přehrávání zvuku běží v samostatném vlákně. Obsahuje 2 konstruktory. Jeden vychází z toho, že bude přehrávat soubor zvuk.wav ze stejného umístění. Druhý konstruktor má možnost přiřazení cesty k vlastnímu zvukovému souboru.
Zvuk metronomu, který jsem použil já, můžete stahnout zde - zvuk.wav
K přehrávání používám třídu AePlayWave. Tu si každý může stahnout z www.anyexample.com.
