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; }
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; }