Example #1
0
        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);
        }
Example #2
0
        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());
        }