| BasicMidiPlayer.java |
1 package fi.jyu.mit.Music;
2
3 import java.util.List;
4
5
6 /**
7 * BasicSoundSystem tarjoaa rajapinnan yksinkertaiselle MIDI-äänentoistolle Java-ohjelmissa
8 * niin komentoriviltä kuin graafisilta sovelluksilta.
9 * <h2>Yleistä</h2>
10 * <p>
11 * Rajapinta tarjoaa seuraavat funktiot äänentoistoon:
12 * </p>
13 * <ul>
14 * <li>play monen nuotin toistoon (esim. play("cccc")</li>
15 * <li>playSingleNote yhden nuotin toistoon</li>
16 * <li>rest taukoja varten</li>
17 * <li>setTempo tempon säätelyyn BPM:n (engl. beats per minute eli iskuja minuutissa, oletus 120)</li>
18 * </ul>
19 * <p>
20 * Yksinkertaiseen äänentoistoon soveltuu parhaiten SoundSystem. BufferedSoundSystem puskuroi saamansa datan
21 * ja toistaa sen asynkronisesti eri säikeessä kun taas ConcurrentSoundSystem toistaa ääntä reaaliaikaisesti
22 * sitä mukaa mitä annetaan.
23 * </p><p>
24 * Lisäksi ConcurrentSoundSystem tarjoaa mahdollisuuden kytkeä toiston suoraan standardisyätteeseen, eli
25 * käyttäjä voi tehdä pianon (tai muun soittimen).
26 * </p>
27 * @see BufferedMidiPlayer
28 * @see MidiPlayer
29 * @see ThreadedMidiPlayer
30 */
31 public interface BasicMidiPlayer {
32
33 public void play(String sequence);
34
35 public void play(String sequence, double length);
36
37 public void play(String sequence, double noteLength, int octave);
38
39 public void play(final String sequence, final double length, final int octave, final int velocity);
40
41 public void playSingleNote(String note);
42
43 public void playSingleNote(String note, double length);
44
45 public void playSingleNote(String note, double length, int octave);
46
47 public void playSingleNote(String note, double length, int octave, int velocity);
48
49 public void play(final List<Note> notes);
50
51 // public void rest();
52
53 // public void rest(double duration);
54
55 public void setTempo(int bpm);
56 }
57