const DataType type = SMFSource::safe_midi_file_extension (import_file_path) ? DataType::MIDI : DataType::AUDIO;
std::string filepath = (type == DataType::MIDI)
- ? sdir.midi_path().to_string() : sdir.sound_path().to_string();
+ ? sdir.midi_path() : sdir.sound_path();
filepath = Glib::build_filename (filepath,
get_non_existent_filename (hf, type, allow_replacing, filepath, basename, n, channels));
}
static bool
-create_mono_sources_for_writing (const string& origin,
- const vector<string>& new_paths,
+create_mono_sources_for_writing (const vector<string>& new_paths,
Session& sess, uint samplerate,
vector<boost::shared_ptr<Source> >& newfiles,
framepos_t timeline_position)
source = SourceFactory::createWritable (type, sess,
i->c_str(),
- origin,
false, // destructive
samplerate);
}
first = false;
}
- smfs->append_event_unlocked_beats(Evoral::Event<double>(0,
- (double)t / (double)source->ppqn(),
- size,
- buf));
+ smfs->append_event_unlocked_beats(
+ Evoral::Event<double>(0,
+ (double)t / (double)source->ppqn(),
+ size,
+ buf));
if (status.progress < 0.99) {
status.progress += 0.01;
}
} catch (...) {
- error << string_compose (_("MIDI file %1 was not readable (no reason available"), source->file_path()) << endmsg;
+ error << string_compose (_("MIDI file %1 was not readable (no reason available)"), source->file_path()) << endmsg;
}
if (buf) {
fatal << "THIS IS NOT IMPLEMENTED YET, IT SHOULD NEVER GET CALLED!!! DYING!" << endmsg;
status.cancel = !map_existing_mono_sources (new_paths, *this, frame_rate(), newfiles, this);
} else {
- status.cancel = !create_mono_sources_for_writing (*p, new_paths, *this, frame_rate(), newfiles, natural_position);
+ status.cancel = !create_mono_sources_for_writing (new_paths, *this, frame_rate(), newfiles, natural_position);
}
// copy on cancel/failure so that any files that were created will be removed below
boost::shared_ptr<FileSource> fs = boost::dynamic_pointer_cast<FileSource>(*x);
if (fs) {
- fs->mark_immutable ();
+ /* Only audio files should be marked as
+ immutable - we may need to rewrite MIDI
+ files at any time.
+ */
+ if (boost::dynamic_pointer_cast<AudioFileSource> (fs)) {
+ fs->mark_immutable ();
+ } else {
+ fs->mark_immutable_except_write ();
+ }
fs->mark_nonremovable ();
}