/// <summary> /// シャッフルした再生リストap.PcmDataListForPlayを作成する /// </summary> public void CreateShuffledPlayList() { // 適当にシャッフルされた番号が入っている配列pcmDataIdxArrayを作成。 var pcmDataIdxArray = new int[PcmDataListForDisp.Count()]; for (int i = 0; i < pcmDataIdxArray.Length; ++i) { pcmDataIdxArray[i] = i; } var gen = new RNGCryptoServiceProvider(); int N = pcmDataIdxArray.Length; for (int i = 0; i < N * 100; ++i) { var a = GetRandomNumber(gen, N); var b = GetRandomNumber(gen, N); if (a == b) { // 入れ替え元と入れ替え先が同じ。あんまり意味ないのでスキップする。 continue; } // a番目とb番目を入れ替える var tmp = pcmDataIdxArray[a]; pcmDataIdxArray[a] = pcmDataIdxArray[b]; pcmDataIdxArray[b] = tmp; } // ap.PcmDataListForPlayを作成。 m_pcmDataListForPlay = new PcmDataList(); for (int i = 0; i < pcmDataIdxArray.Length; ++i) { var idx = pcmDataIdxArray[i]; // 再生順番号Ordinalを付け直す // GroupIdをバラバラの番号にする(1曲ずつ読み込む) var pcmData = new PcmData(); pcmData.CopyFrom(m_pcmDataListForDisp.At(idx)); pcmData.Ordinal = i; pcmData.GroupId = i; m_pcmDataListForPlay.Add(pcmData); } }
public void ClearPlayList() { PcmDataListForDisp.Clear(); PcmDataListForPlay.Clear(); wasapi.ClearPlayList(); }