Пример #1
0
        void Reassign(int h)
        {
            Channel = h;

            _handle = Bass.ChannelSetDSP(Channel, OnDsp, Priority: _priority);

            if (Channel != 0)
            {
                Resolution = Bass.ChannelGetInfo(Channel).Resolution;
            }

            if (_handle != 0)
            {
                IsAssigned = true;
            }
        }
Пример #2
0
        /// <summary>
        /// Applies the DSP on a Channel.
        /// </summary>
        /// <param name="Channel">Channel to apply the DSP on.</param>
        /// <param name="Priority">Priority of the DSP in the DSP chain.</param>
        public void ApplyOn(int Channel, int Priority = 0)
        {
            this.Channel = Channel;

            _priority = Priority;

            _handle = Bass.ChannelSetDSP(Channel, OnDsp, Priority: _priority);

            Resolution = Bass.ChannelGetInfo(Channel).Resolution;

            Bass.ChannelSetSync(Channel, SyncFlags.Free, 0, (a, b, c, d) => Dispose());

            if (_handle != 0)
            {
                IsAssigned = true;
            }
            else
            {
                throw new InvalidOperationException("DSP Assignment Failed");
            }
        }
Пример #3
0
        /// <summary>
        /// Reads tags from a <paramref name="Channel"/>.
        /// </summary>
        public static TagReader Read(int Channel)
        {
            var result = new TagReader();
            var info   = Bass.ChannelGetInfo(Channel);

            switch (info.ChannelType)
            {
            case ChannelType.MP1:
            case ChannelType.MP2:
            case ChannelType.MP3:
                if (result.ReadID3v2(Channel))
                {
                }

                else if (result.ReadID3v1(Channel))
                {
                }

                else if (result.ReadApe(Channel))
                {
                }

                else if (result.ReadBWF(Channel))
                {
                }
                break;

            case ChannelType.OGG:
                if (result.ReadOgg(Channel))
                {
                }

                else if (result.ReadApe(Channel))
                {
                }
                break;

            case ChannelType.MP4:
            case ChannelType.AAC:
                if (result.ReadMp4(Channel))
                {
                }

                else if (result.ReadID3v2(Channel))
                {
                }

                else if (result.ReadApe(Channel))
                {
                }

                else if (result.ReadOgg(Channel))
                {
                }
                break;

            case ChannelType.Wave:
            case ChannelType.WavePCM:
            case ChannelType.WaveFloat:
                if (result.ReadRiffInfo(Channel))
                {
                }

                else if (result.ReadBWF(Channel))
                {
                }

                else if (result.ReadID3v2(Channel))
                {
                }
                break;

            case ChannelType.DSD:
                result.Title  = Marshal.PtrToStringAnsi(Bass.ChannelGetTags(Channel, TagType.DSDTitle));
                result.Artist = Marshal.PtrToStringAnsi(Bass.ChannelGetTags(Channel, TagType.DSDArtist));
                break;

            case ChannelType.MOD:
                result.Title   = Marshal.PtrToStringAnsi(Bass.ChannelGetTags(Channel, TagType.MusicName));
                result.Artist  = Marshal.PtrToStringAnsi(Bass.ChannelGetTags(Channel, TagType.MusicAuth));
                result.Comment = Marshal.PtrToStringAnsi(Bass.ChannelGetTags(Channel, TagType.MusicMessage));
                break;

            default:
                if (result.ReadApe(Channel))
                {
                }

                else if (result.ReadOgg(Channel))
                {
                }

                else if (result.ReadID3v2(Channel))
                {
                }

                else if (result.ReadID3v1(Channel))
                {
                }
                break;
            }

            if (string.IsNullOrWhiteSpace(result.Lyrics))
            {
                var ptr = Bass.ChannelGetTags(Channel, TagType.Lyrics3v2);

                if (ptr != IntPtr.Zero)
                {
                    result.Lyrics = Marshal.PtrToStringAnsi(ptr);
                }
            }

            return(result);
        }
Пример #4
0
        /// <summary>
        /// Creates a new instance of <see cref="WaveFormat"/> from a <paramref name="Channel"/>.
        /// </summary>
        public static WaveFormat FromChannel(int Channel)
        {
            var info = Bass.ChannelGetInfo(Channel);

            return(FromParams(info.Frequency, info.Channels, info.Resolution));
        }