/// <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();
 }