/**
   * Attemts to start playback. If playback already running this method has no any effect. Playback
   * startup is async operation: method initiates playback preparation and returns immediate -
   * playback may run later.
   */
  public void play() {
    if (state == PlayerState.PLAYING) return;
    PlayerThread th = currentPlayerThread.get();

    if (th == null) {
      th = new PlayerThread(this);
      if (currentPlayerThread.compareAndSet(null, th)) th.start();
    }
  }
Пример #2
0
  public void playSequenceFromJFugueString(String noteString, int instrument) {

    initialize();
    try {
      sequencer.open();
      synthesizer.open();
    } catch (MidiUnavailableException e) {
      e.printStackTrace();
    }

    noteString = "I[" + instrument + "] " + noteString;
    player = new Player(sequencer);
    Pattern pattern = new Pattern(noteString);
    PlayerThread thread = new PlayerThread(player, pattern);
    thread.start();
  }
Пример #3
0
 public ParallelRedoPlayer(
     boolean writable,
     boolean unloggedReplay,
     boolean ignoreReplayErrors,
     boolean skipDeleteOps,
     int numThreads,
     int queueCapacity) {
   super(writable, unloggedReplay, ignoreReplayErrors, skipDeleteOps);
   ZimbraLog.redolog.debug("Starting ParallelRedoPlayer");
   numThreads = Math.max(numThreads, 1);
   mPlayerThreads = new PlayerThread[numThreads];
   for (int i = 0; i < numThreads; i++) {
     String name = "RedoPlayer-" + Integer.toString(i);
     PlayerThread player = new PlayerThread(queueCapacity);
     mPlayerThreads[i] = player;
     player.setName(name);
     player.start();
   }
 }