Beispiel #1
0
        void LoadSong(object sender, EventArgs e)
        {
            APlaylist    mainPlaylist = ROM.Instance.Game.Playlists[0];
            List <ASong> songs        = mainPlaylist.Songs.ToList();
            ASong        song         = songs.SingleOrDefault(s => s.Index == songNumerical.Value);

            if (song != null)
            {
                Text = "GBA Music Studio - " + song.Name;
                songsComboBox.SelectedIndex = songs.IndexOf(song) + 1; // + 1 for the Playlist index
            }
            else
            {
                Text = "GBA Music Studio";
                songsComboBox.SelectedIndex = 0;
            }
            bool playing = SongPlayer.Instance.State == PlayerState.Playing; // Play new song if one is already playing
            bool paused  = SongPlayer.Instance.State == PlayerState.Paused;

            Stop(null, null);
            try
            {
                // Pause which stops the thread inside from processing during loading, which would increase the stream latency
                if (!paused)
                {
                    SongPlayer.Instance.Pause();
                }
                var loadedSong = ROM.Instance.SongTables[(int)tableNumerical.Value][(int)songNumerical.Value];
                SongPlayer.Instance.SetSong(loadedSong);
                // Then "un pause" it, setting it to the stopped state
                if (!paused)
                {
                    SongPlayer.Instance.Stop();
                }
                UpdateTrackInfo(playing);
                MIDIKeyboard.Instance.Start();
            }
            catch (Exception ex)
            {
                FlexibleMessageBox.Show(ex.Message, "Error Loading Song " + songNumerical.Value);
                return;
            }
        }
Beispiel #2
0
        void LoadSong(object sender, EventArgs e)
        {
            APlaylist    mainPlaylist = ROM.Instance.Game.Playlists[0];
            List <ASong> songs        = mainPlaylist.Songs.ToList();
            ASong        song         = songs.SingleOrDefault(s => s.Index == songNumerical.Value);

            if (song != null)
            {
                Text = "GBA Music Studio - " + song.Name;
                songsComboBox.SelectedIndex = songs.IndexOf(song) + 1; // + 1 for the Playlist index
            }
            else
            {
                Text = "GBA Music Studio";
                songsComboBox.SelectedIndex = 0;
            }
            bool playing = SongPlayer.State == PlayerState.Playing; // Play new song if one is already playing

            Stop(null, null);
            SongPlayer.SetSong(ROM.Instance.SongTables[(int)tableNumerical.Value][(int)songNumerical.Value]);
            UpdateTrackInfo(playing);

            MIDIKeyboard.Start();
        }