public static AudioFormat GetAudioFormat(SongData song) { AudioFormat format = new AudioFormat(); SongsDTA dta = GetSongsDTA(song); if (dta == null) { return(null); } bool notracks = dta.Song.Tracks.Sum(t => t.Tracks.Count) == 0; for (int i = 0; i < dta.Song.Vols.Count; i++) { AudioFormat.Mapping map = new AudioFormat.Mapping(); map.Balance = dta.Song.Pans[i]; map.Volume = dta.Song.Vols[i]; SongsDTA.SongTracks track = dta.Song.Tracks.SingleOrDefault(s => s.Tracks.Contains(i)); if (track != null) { map.Instrument = Platform.InstrumentFromString(track.Name); } else if (notracks && dta.Song.Cores[i] == 1) { map.Instrument = Instrument.Guitar; } format.Mappings.Add(map); } return(format); }
public static void SaveAudioFormat(AudioFormat data, FormatData destination, int id) { SongsDTA dta = new SongsDTA(); for (int i = 0; i < data.Channels; i++) { AudioFormat.Mapping map = data.Mappings[i]; dta.Song.Vols.Add(map.Volume); dta.Song.Pans.Add(map.Balance); dta.Song.Cores.Add(map.Instrument == Instrument.Guitar ? 1 : -1); string trackname = InstrumentToString(map.Instrument); SongsDTA.SongTracks track = dta.Song.Tracks.SingleOrDefault(t => t.Name == trackname); if (track != null) { track.Tracks.Add(i); } } destination.Song.Data.SetSubtree("HmxSongsDtb", dta.ToDTB()); }