Example #1
0
        public CachedSound(string audioFileName, TYPE_SOURCE type = TYPE_SOURCE.FILE_LOCAL)
        {
            this.Type = type;
            switch (type)
            {
            case TYPE_SOURCE.FILE_LOCAL:
                using (var audioFileReader = new AudioFileReader(audioFileName))
                {
                    // TODO: could add resampling in here if required
                    WaveFormat = audioFileReader.WaveFormat;
                    var     wholeFile  = new List <float>((int)(audioFileReader.Length / 4));
                    float[] readBuffer = new float[audioFileReader.WaveFormat.SampleRate * audioFileReader.WaveFormat.Channels];
                    int     samplesRead;
                    while ((samplesRead = audioFileReader.Read(readBuffer, 0, readBuffer.Length)) > 0)
                    {
                        wholeFile.AddRange(readBuffer.Take(samplesRead));
                    }
                    AudioData = wholeFile.ToArray();
                }
                break;

            case TYPE_SOURCE.FILE_MP3_ONLINE:
                using (Stream ms = new MemoryStream())
                {
                    using (Stream stream = WebRequest.Create(audioFileName)
                                           .GetResponse().GetResponseStream())
                    {
                        //byte[] buffer = new byte[32768];
                        //int read;
                        //while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
                        //{
                        //    ms.Write(buffer, 0, read);
                        //}
                        // TODO: could add resampling in here if required
                        WaveFormat = new WaveFormat();
                        var    wholeFile   = new List <byte>();
                        byte[] readBuffer  = new byte[32768];
                        int    samplesRead = 0;
                        while ((samplesRead = stream.Read(readBuffer, 0, readBuffer.Length)) > 0)
                        {
                            wholeFile.AddRange(readBuffer.Take(samplesRead));
                        }
                        AudioData_FILE_MP3_ONLINE = wholeFile.ToArray();
                    }
                }
                break;

            case TYPE_SOURCE.STREAM_CLOUD:
                break;
            }
        }
Example #2
0
        void test_play_file_cache(string url, TYPE_SOURCE type = TYPE_SOURCE.FILE_LOCAL)
        {
            // on startup:
            var zap = new CachedSound(url, type);

            //var boom = new CachedSound("boom.wav");

            // later in the app...
            AudioPlaybackEngine.Instance.PlaySound(zap);
            //AudioPlaybackEngine.Instance.PlaySound(boom);
            //AudioPlaybackEngine.Instance.PlaySound("crash.wav");

            // on shutdown
            //AudioPlaybackEngine.Instance.Dispose();
        }