pub(crate) async fn midi_history_save( midi_files: Vec<MidiFile>, roots: Option<Vec<String>>, ) -> Result<MidiScanSnapshot, String>