// SLOTS void JVlibForm::on_System_OpenMidi_button_clicked() { disconnect_port(); // close_seq(); System_PlayMidi_button->setChecked(false); System_PlayMidi_button->setEnabled(false); System_PauseMidi_button->setEnabled(false); SysFilePlaying->clear(); System_MIDI_Transpose->setValue(0); System_MIDI_KeySig->clear(); MIDI_length_display->setText("00:00"); QString fn = QFileDialog::getOpenFileName(this,"Open MIDI File",MIDI_dir,"Midi files (*.mid, *.MID);;Any (*.*)"); if (fn.isEmpty()) return; strcpy(playfile, fn.toAscii().data()); SysFilePlaying->setText(fn); init_seq(); if (!queue) queue = snd_seq_alloc_named_queue(seq, "midi_play"); check_snd("create queue", queue); connect_port(); all_events.clear(); if (!parseFile(playfile)) { QMessageBox::critical(this, "MIDI Player", QString("Error parsing input file")); return; } // parseFile System_MIDI_progressBar->setRange(0,all_events.back().tick); System_MIDI_progressBar->setTickInterval(song_length_seconds<240? all_events.back().tick/song_length_seconds*10 : all_events.back().tick/song_length_seconds*30); System_MIDI_progressBar->setTickPosition(QSlider::TicksAbove); MIDI_length_display->setText(QString::number(static_cast<int>(song_length_seconds/60)).rightJustified(2,'0') + ":" + QString::number(static_cast<int>(song_length_seconds)%60).rightJustified(2,'0')); System_PlayMidi_button->setEnabled(true); System_MIDI_Transpose->setEnabled(true); } // end on_System_OpenMidi_button_clicked
void MidiQueue::init(snd_seq_t* sequencer, const std::string& name) { if (_id == kInvalidId) { _sequencer = sequencer; _id = snd_seq_alloc_named_queue(sequencer, name.c_str()); } else { std::cerr << "Queue is already initialized\n"; } }
// create a queue and return its id int my_queue(snd_seq_t *handle) { return snd_seq_alloc_named_queue(handle, "Game Drumkit queue"); }