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