Esempio n. 1
0
void JVlibForm::on_System_PauseMidi_button_toggled(bool checked)
{
  unsigned int current_tick;
  if (checked) {
      stopPlayer();
      if (seqTimer->isActive()) {
            disconnect(JVlibForm::seqTimer, SIGNAL(timeout()), this, SLOT(tickDisplay()));
            seqTimer->stop();
      }
        snd_seq_get_queue_status(seq, queue, status);
	current_tick = snd_seq_queue_status_get_tick_time(status);
        snd_seq_stop_queue(seq,queue,NULL);
        snd_seq_drain_output(seq);
	stop_sound();
	disconnect_port();
        System_PauseMidi_button->setText("Resume");
  }
  else {
	connect_port();
        snd_seq_continue_queue(seq, queue, NULL);
        snd_seq_drain_output(seq);
        snd_seq_get_queue_status(seq, queue, status);
	current_tick = snd_seq_queue_status_get_tick_time(status);
        System_PauseMidi_button->setText("Pause");
        connect(JVlibForm::seqTimer, SIGNAL(timeout()), this, SLOT(tickDisplay()));
	startPlayer(current_tick);
        seqTimer->start(100);
  }
}   // end on_System_PauseMidi_button_toggled
Esempio n. 2
0
static guint32
get_current_tick (void)
{
    snd_seq_queue_status_t *status;
    snd_seq_queue_status_alloca (&status);
    snd_seq_get_queue_status (seq, queue_id, status);
    return snd_seq_queue_status_get_tick_time (status);
}
Esempio n. 3
0
static unsigned int get_tick(void)
{
    snd_seq_queue_status_t * status;
    int result;

    snd_seq_queue_status_alloca(&status);
    
    result = snd_seq_get_queue_status(seq, seq_queue, status);
    if (result < 0) {
        fprintf(stderr, "ALSA snd_seq_get_queue_status err %d\n", result);
        return 0;
    }

    return (unsigned int) snd_seq_queue_status_get_tick_time(status);
}
Esempio n. 4
0
void JVlibForm::tickDisplay() {
    // set timestamp display
  snd_seq_get_queue_status(seq, queue, status);
  unsigned int current_tick = snd_seq_queue_status_get_tick_time(status);
  System_MIDI_progressBar->blockSignals(true);
  System_MIDI_progressBar->setValue(current_tick);
  System_MIDI_progressBar->blockSignals(false);
  // set time label
  double new_seconds = static_cast<double>(current_tick)/all_events.back().tick;
  new_seconds *= song_length_seconds;
  MIDI_time_display->setText(QString::number(static_cast<int>(new_seconds)/60).rightJustified(2,'0')+
      ":"+QString::number(static_cast<int>(new_seconds)%60).rightJustified(2,'0'));
  if (current_tick >= all_events.back().tick) {	// end of song
      sleep(1);
      System_PlayMidi_button->setChecked(false);
      return;
  }
  while (all_events[event_num].tick<current_tick)
    event_num++;
}   // end tickDisplay