public LocalChannelPlaySource(string path)
 {
     Path = path;
     Stream = Bass.BASS_SampleLoad(path, 0L, 0, 1, BASSFlag.BASS_DEFAULT);
     StreamFX = Stream;
     ChannelInfo = Bass.BASS_ChannelGetInfo(Stream);
     Tags = new TrackTags(Stream, SourceType);
 }
Esempio n. 2
0
        public LocalModPlaySource(string path)
        {
            Path = path;
            Stream = Bass.BASS_MusicLoad(path, 0, 0,
                BASSFlag.BASS_DEFAULT | BASSFlag.BASS_STREAM_DECODE|BASSFlag.BASS_MUSIC_DECODE, 0);
            StreamFX = BassFx.BASS_FX_TempoCreate(Stream, BASSFlag.BASS_FX_FREESOURCE | BASSFlag.BASS_MUSIC_FX);

            ChannelInfo = Bass.BASS_ChannelGetInfo(Stream);
            Tags = new TrackTags(Stream, SourceType);
        }
        public LocalStreamPlaySource(string path)
        {
            Path = path;
            Stream = Bass.BASS_StreamCreateFile(path, 0, 0,
                BASSFlag.BASS_SAMPLE_FLOAT | BASSFlag.BASS_STREAM_PRESCAN | BASSFlag.BASS_STREAM_DECODE);
            StreamFX = BassFx.BASS_FX_TempoCreate(Stream, BASSFlag.BASS_FX_FREESOURCE | BASSFlag.BASS_SAMPLE_FX);

            ChannelInfo = Bass.BASS_ChannelGetInfo(Stream);
            Tags = new TrackTags(Stream,SourceType);
        }
        public HttpInfinitePlaySource(string address, DownloadTypes downloadMode,
            IEventAggregator positionEventAggregator)
        {
            OnGetPosition += RefreshPositions;
            _positionEventAggregator = positionEventAggregator;
            _subscriptionToken = _positionEventAggregator.GetEvent<HttpPositionEvent>().Subscribe(GetReadPosition);
            _downloadType = downloadMode;
            _downloadProcURL = (_downloadType == DownloadTypes.NoDownload)
                ? null
                : new DOWNLOADPROC(DownloadProc);

            Path = address;

            DownloadStream = Bass.BASS_StreamCreateURL(Path, 0,
                BASSFlag.BASS_STREAM_AUTOFREE|BASSFlag.BASS_STREAM_STATUS |BASSFlag.BASS_SAMPLE_FLOAT, _downloadProcURL, IntPtr.Zero);

            BASSError error = Bass.BASS_ErrorGetCode();

            if (DownloadStream == 0)
                throw new ArgumentException("Parameter cannot be null", error.ToString());

            _syncProcMeta = new SYNCPROC(SyncMethodMeta);

            Bass.BASS_ChannelSetSync(DownloadStream, BASSSync.BASS_SYNC_WMA_META, 0, _syncProcMeta, IntPtr.Zero);
            Bass.BASS_ChannelSetSync(DownloadStream, BASSSync.BASS_SYNC_OGG_CHANGE, 0, _syncProcMeta, IntPtr.Zero);
            Bass.BASS_ChannelSetSync(DownloadStream, BASSSync.BASS_SYNC_META, 0, _syncProcMeta, IntPtr.Zero);
            Bass.BASS_ChannelSetSync(DownloadStream, BASSSync.BASS_SYNC_WMA_CHANGE, 0, _syncProcMeta, IntPtr.Zero);

            _previousTags = new List<Tag>();
            Tags = new TrackTags(DownloadStream, SourceType);
            Tags.GetIcyMetaTags(DownloadStream);
            ChannelInfo = Bass.BASS_ChannelGetInfo(DownloadStream);

            if (ProcessMusic())
            {
                _bufferFileStream = new FileStream("RadioBuffer", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                _DSPHandler = new DSPPROC(DSPProc);
                _streamProc = new STREAMPROC(StreamRead);
                DSP = Bass.BASS_ChannelSetDSP(DownloadStream, _DSPHandler, IntPtr.Zero, 0);
                Stream = Bass.BASS_StreamCreate(ChannelInfo.freq, ChannelInfo.chans,
                    BASSFlag.BASS_STREAM_DECODE|BASSFlag.BASS_SAMPLE_FLOAT, _streamProc, IntPtr.Zero);

                Bass.BASS_ChannelPlay(DownloadStream, false);
                Bass.BASS_ChannelSetAttribute(DownloadStream, BASSAttribute.BASS_ATTRIB_VOL, 0);
                StreamFX = BassFx.BASS_FX_TempoCreate(Stream, BASSFlag.BASS_FX_FREESOURCE | BASSFlag.BASS_SAMPLE_FX);
            }
            else
            {
                error = Bass.BASS_ErrorGetCode();
                throw new ArgumentException("Parameter cannot be null", error.ToString());
            }
        }
        public HttpFinitePlaySource(string address, IEventAggregator waveFormEventAggregator)
        {
            OnGetWaveForm += EndDownload;
            _waveFormEventAggregator = waveFormEventAggregator;
            _downloadProc = new DOWNLOADPROC(Download);
            Path = address;

            Stream = Bass.BASS_StreamCreateURL(Path, 0,
                BASSFlag.BASS_STREAM_DECODE|BASSFlag.BASS_SAMPLE_FLOAT|BASSFlag.BASS_STREAM_PRESCAN,
                _downloadProc, IntPtr.Zero);
            Tags = new TrackTags(Stream, SourceType);
            StreamFX = BassFx.BASS_FX_TempoCreate(Stream, BASSFlag.BASS_FX_FREESOURCE | BASSFlag.BASS_SAMPLE_FX);
            ChannelInfo = Bass.BASS_ChannelGetInfo(StreamFX);
            Console.WriteLine("Chans - {0}, Ctype - {1}, Flags - {2}, Freq - {3}", ChannelInfo.chans, ChannelInfo.ctype, ChannelInfo.flags, ChannelInfo.freq);
        }
        public MemoryStreamPlaySource(string path)
        {
            Path = path;

            FileStream fs = File.OpenRead(path);
            int length = (int)fs.Length;
            Buffer = new byte[length];
            fs.Read(Buffer, 0, length);
            fs.Close();

            _hGCFile = GCHandle.Alloc(Buffer, GCHandleType.Pinned);

            Stream = Bass.BASS_StreamCreateFile(_hGCFile.AddrOfPinnedObject(),
                0L, length, BASSFlag.BASS_SAMPLE_FLOAT| BASSFlag.BASS_STREAM_DECODE);
            StreamFX = BassFx.BASS_FX_TempoCreate(Stream, BASSFlag.BASS_FX_FREESOURCE|BASSFlag.BASS_SAMPLE_FX);

            ChannelInfo = Bass.BASS_ChannelGetInfo(StreamFX);
            Console.WriteLine("Chans - {0}, Ctype - {1}, Flags - {2}, Freq - {3}", ChannelInfo.chans, ChannelInfo.ctype , ChannelInfo.flags , ChannelInfo.freq);
            Tags = new TrackTags(Stream, SourceType);
        }
Esempio n. 7
0
 public Task <bool> WriteTags(Uri trackLocation, TrackTags tags)
 {
     throw new NotImplementedException();
 }