private async Task ProcesameLaSong(string songPath, Band band, Style style) { try { if (!songPath.ToLower().EndsWith(".mid")) { return; } try { var lelo = MidiFile.Read(songPath, null); } catch (Exception ex) { Log.Error(ex, $"Song {songPath} esta podrida"); return; } var originalMidiBase64encoded = FileSystemUtils.GetBase64encodedFile(songPath); originalMidiBase64encoded = MidiProcessing.NormalizeTicksPerQuarterNote(originalMidiBase64encoded); Song song = new Song() { Name = Path.GetFileName(songPath), Band = band, Style = style, OriginalMidiBase64Encoded = originalMidiBase64encoded, }; song = MidiProcessing.ComputeSongStats(song); song.TimeSignature = await SongRepository.GetTimeSignature(song.TimeSignature); song.NormalizeSong(); song = await SongRepository.AddSong(song); song.FindSongPatterns(); foreach (var oc in song.Versions[0].Occurrences) { var pattern = oc.Pattern; var patito = await SongRepository.GetPatternByStringAndTypeAsync(pattern.AsString, pattern.PatternTypeId); if (patito == null) { patito = SongRepository.AddPatternAsync(pattern); } oc.Pattern = patito; oc.PatternId = patito.Id; oc.SongVersionId = song.Versions[0].Id; } await SongRepository.UpdateSong(song); var outputPath = Path.Combine(@"C:\music\procesados", song.Name); var bytes = Convert.FromBase64String(song.ProcessedMidiBase64Encoded); System.IO.File.WriteAllBytes(outputPath, bytes); } catch (Exception sorete) { } }