Exemplo n.º 1
0
        void LoadSong()
        {
            songsComboBox.SelectedIndexChanged -= SongsComboBox_SelectedIndexChanged;

            var index = (int)songNumerical.Value;

            SDAT.INFO.SequenceInfo song = sdat.INFOBlock.SequenceInfos.Entries[index];
            if (song != null)
            {
                string label = GetLabelForSong(index);
                Text = "NDS Music Studio - " + label;
                songsComboBox.SelectedIndex = songsComboBox.Items.IndexOf(label);
            }
            else
            {
                Text = "NDS Music Studio";
                songsComboBox.SelectedIndex = -1;
            }
            bool playing = SongPlayer.Instance.State == PlayerState.Playing; // Play new song if one is already playing
            bool paused  = SongPlayer.Instance.State == PlayerState.Paused;

            Stop();
            try
            {
                if (!paused)
                {
                    SongPlayer.Instance.Pause();
                }
                SongPlayer.Instance.SetSong(sdat, index);
                if (!paused)
                {
                    SongPlayer.Instance.Stop();
                }
                trackInfo.DeleteData();
                if (playing)
                {
                    Play();
                }
                else
                {
                    pauseButton.Text = "Pause";
                }
            }
            catch (Exception ex)
            {
                FlexibleMessageBox.Show(ex.Message, string.Format("Error Loading Song {0}", songNumerical.Value));
            }

            songsComboBox.SelectedIndexChanged += SongsComboBox_SelectedIndexChanged;
        }
Exemplo n.º 2
0
        public void SetSong(SDAT sdat, int song)
        {
            Stop();

            SDAT.INFO.SequenceInfo seqInfo = sdat.INFOBlock.SequenceInfos.Entries[song];
            sseq = new SSEQ(sdat.FATBlock.Entries[seqInfo.FileId].Data);
            SDAT.INFO.BankInfo bankInfo = sdat.INFOBlock.BankInfos.Entries[seqInfo.Bank];
            sbnk = new SBNK(sdat.FATBlock.Entries[bankInfo.FileId].Data);
            for (int i = 0; i < 4; i++)
            {
                if (bankInfo.SWARs[i] != 0xFFFF)
                {
                    sbnk.SWARs[i] = new SWAR(sdat.FATBlock.Entries[sdat.INFOBlock.WaveArchiveInfos.Entries[bankInfo.SWARs[i]].FileId].Data);
                }
            }
            Volume = seqInfo.Volume;
        }