prepare GUI for auditioning midi files
This commit is contained in:
parent
8aa6585702
commit
acaf46c27d
@ -279,6 +279,38 @@ SoundFileBox::setup_labels (const string& filename)
|
||||
|
||||
string error_msg;
|
||||
|
||||
if (SMFSource::safe_midi_file_extension (path)) {
|
||||
|
||||
boost::shared_ptr<SMFSource> ms =
|
||||
boost::dynamic_pointer_cast<SMFSource> (
|
||||
SourceFactory::createExternal (DataType::MIDI, *_session,
|
||||
path, 0, Source::Flag (0), false));
|
||||
|
||||
preview_label.set_markup (_("<b>Midi File Information</b>"));
|
||||
|
||||
format_text.set_text ("MIDI");
|
||||
samplerate_value.set_text ("-");
|
||||
tags_entry.get_buffer()->set_text ("");
|
||||
timecode_clock.set (0);
|
||||
tags_entry.set_sensitive (false);
|
||||
|
||||
if (ms) {
|
||||
channels_value.set_text (to_string(ms->num_tracks(), std::dec));
|
||||
length_clock.set (ms->length(ms->timeline_position()));
|
||||
} else {
|
||||
channels_value.set_text ("");
|
||||
length_clock.set (0);
|
||||
}
|
||||
|
||||
if (_session && ms) {
|
||||
play_btn.set_sensitive (true);
|
||||
} else {
|
||||
play_btn.set_sensitive (false);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(!AudioFileSource::get_soundfile_info (filename, sf_info, error_msg)) {
|
||||
|
||||
preview_label.set_markup (_("<b>Sound File Information</b>"));
|
||||
@ -363,11 +395,6 @@ SoundFileBox::audition ()
|
||||
return;
|
||||
}
|
||||
|
||||
if (SMFSource::safe_midi_file_extension (path)) {
|
||||
error << _("Auditioning of MIDI files is not yet supported") << endmsg;
|
||||
return;
|
||||
}
|
||||
|
||||
_session->cancel_audition();
|
||||
|
||||
if (!Glib::file_test (path, Glib::FILE_TEST_EXISTS)) {
|
||||
@ -376,6 +403,28 @@ SoundFileBox::audition ()
|
||||
}
|
||||
|
||||
boost::shared_ptr<Region> r;
|
||||
|
||||
if (SMFSource::safe_midi_file_extension (path)) {
|
||||
|
||||
boost::shared_ptr<SMFSource> ms =
|
||||
boost::dynamic_pointer_cast<SMFSource> (
|
||||
SourceFactory::createExternal (DataType::MIDI, *_session,
|
||||
path, 0, Source::Flag (0), false));
|
||||
|
||||
string rname = region_name_from_path (ms->path(), false);
|
||||
|
||||
PropertyList plist;
|
||||
|
||||
plist.add (ARDOUR::Properties::start, 0);
|
||||
plist.add (ARDOUR::Properties::length, ms->length(ms->timeline_position()));
|
||||
plist.add (ARDOUR::Properties::name, rname);
|
||||
plist.add (ARDOUR::Properties::layer, 0);
|
||||
|
||||
r = boost::dynamic_pointer_cast<MidiRegion> (RegionFactory::create (boost::dynamic_pointer_cast<Source>(ms), plist, false));
|
||||
assert(r);
|
||||
|
||||
} else {
|
||||
|
||||
SourceList srclist;
|
||||
boost::shared_ptr<AudioFileSource> afs;
|
||||
bool old_sbp = AudioSource::get_build_peakfiles ();
|
||||
@ -421,6 +470,7 @@ SoundFileBox::audition ()
|
||||
plist.add (ARDOUR::Properties::layer, 0);
|
||||
|
||||
r = boost::dynamic_pointer_cast<AudioRegion> (RegionFactory::create (srclist, plist, false));
|
||||
}
|
||||
|
||||
_session->audition_region(r);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user