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