示例#1
0
        private bool GetAPETags(int stream)
        {
            tags = Bass.BASS_ChannelGetTagsAPE(stream);
            if (tags != null)
            {
                for (int i = 0; i < tags.Length; i++)
                {
                    frameId = tags[i].Split('=')[0];
                    value   = tags[i].Split('=')[1];
                    switch (frameId)
                    {
                    case "Title":
                        title = value;
                        break;

                    case "Artist":
                        artist = value;
                        break;

                    case "Album":
                        album = value;
                        break;

                    case "Comment":
                        comment = value;
                        break;

                    case "Year":
                        year = value;
                        break;

                    case "Genre":
                        genre = value;
                        break;
                    }
                }
                BASS_TAG_APE_BINARY[] temp = Bass.BASS_ChannelGetTagsAPEBinary(stream);
                return(true);
            }
            return(false);
        }
示例#2
0
        /// <summary>
        /// 获得APE音乐信息
        /// </summary>
        /// <param name="path">音乐路径</param>
        /// <param name="type">获得的信息类型</param>
        /// <returns></returns>
        public string GetAPEInfo(string path, GetInfoType type)
        {
            int    stream  = 0;
            string content = null;

            if (type != GetInfoType.FileType)
            {
                try
                {
                    stream = Bass.BASS_StreamCreateFile(path, 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT);
                    string[] tags = Bass.BASS_ChannelGetTagsAPE(stream);
                    if (tags != null)
                    {
                        switch (type)
                        {
                        case GetInfoType.Title:
                        {
                            foreach (string x in tags)
                            {
                                if (x.Contains("Title"))
                                {
                                    content = x.Remove(0, 6);
                                    break;
                                }
                                else
                                {
                                    content = null;
                                }
                            }        //标题
                            break;
                        }

                        case GetInfoType.Artist:
                        {
                            foreach (string x in tags)
                            {
                                if (x.Contains("Artist"))
                                {
                                    content = x.Remove(0, 7);
                                    break;
                                }
                                else
                                {
                                    content = null;
                                }
                            }        //艺术家
                            break;
                        }

                        case GetInfoType.Album:
                        {
                            foreach (string x in tags)
                            {
                                if (x.Contains("Album"))
                                {
                                    content = x.Remove(0, 6);
                                    break;
                                }
                                else
                                {
                                    content = null;
                                }
                            }        //专辑名
                            break;
                        }

                        case GetInfoType.Year:
                        {
                            foreach (string x in tags)
                            {
                                if (x.Contains("Year"))
                                {
                                    content = x.Remove(0, 5);
                                    break;
                                }
                                else
                                {
                                    content = null;
                                }
                            }        //年代
                            break;
                        }

                        case GetInfoType.Length:
                        {
                            if (Convert.ToInt32(Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream))) != -1)
                            {
                                content = Convert.ToString(Convert.ToInt32(Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream))));                                                                                                           //曲长
                            }
                            else
                            {
                                content = "文件损坏";
                                MessageBox.Show("异常:不支持的格式或文件已损坏。\n错误路径:" + path);
                            }
                            break;
                        }

                        default: break;
                        }
                    }
                }
                catch (System.AccessViolationException)
                {
                    MessageBox.Show("警告!内存溢出!程序将退出");
                    Application.Exit();
                }
            }
            if (type == GetInfoType.FileType)
            {
                content = Path.GetExtension(path);                              //格式
            }
            if (type == GetInfoType.Title && content == null)
            {
                content = Path.GetFileNameWithoutExtension(path);
            }
            return(content);
        }
示例#3
0
        /// <summary>
        /// 使用Bass获得音乐年代
        /// </summary>
        /// <param name="stream">Bass音乐流</param>
        /// <param name="extension">音乐格式(扩展名)</param>
        /// <returns>年代</returns>
        private string Bass_Year(int stream, string extension)
        {
            string content = null;

            switch (extension)
            {
            case ".mp3":
            case ".m4a":
            case ".flac":
            case ".aif":
            case ".aac":
            {
                string[] tags = Bass.BASS_ChannelGetTagsID3V2(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("TYER"))
                        {
                            content = x.Remove(0, 5);
                            break;
                        }
                    }
                }
                break;
            }

            case ".ogg":
            {
                string[] tags = Bass.BASS_ChannelGetTagsOGG(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("DATE"))
                        {
                            content = x.Remove(0, 5);
                            break;
                        }
                        else
                        {
                            content = null;
                        }
                    }
                }
                break;
            }

            case ".ape":
            {
                string[] tags = Bass.BASS_ChannelGetTagsAPE(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("Year"))
                        {
                            content = x.Remove(0, 5);
                            break;
                        }
                    }
                }
                break;
            }
            }
            return(content);
        }
示例#4
0
        /// <summary>
        /// 使用Bass获得音乐专辑名
        /// </summary>
        /// <param name="stream">Bass音乐流</param>
        /// <param name="extension">音乐格式(扩展名)</param>
        /// <returns>专辑名</returns>
        private string Bass_Album(int stream, string extension)
        {
            string content = null;

            switch (extension)
            {
            case ".mp3":
            case ".m4a":
            case ".flac":
            case ".aif":
            case ".aac":
            {
                string[] tags = Bass.BASS_ChannelGetTagsID3V2(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("TALB"))
                        {
                            content = x.Remove(0, 5);
                            break;
                        }
                    }
                }
                break;
            }

            case ".ogg":
            {
                string[] tags = Bass.BASS_ChannelGetTagsOGG(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("ALBUM"))
                        {
                            content = x.Remove(0, 6);
                            break;
                        }
                        else
                        {
                            content = null;
                        }
                    }
                }
                break;
            }

            case ".ape":
            {
                string[] tags = Bass.BASS_ChannelGetTagsAPE(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("Album"))
                        {
                            content = x.Split(new char[] { '=' })[1];
                            break;
                        }
                    }
                }
                break;
            }
            }
            return(content);
        }
示例#5
0
        /// <summary>
        /// 使用Bass获得歌曲艺术家
        /// </summary>
        /// <param name="stream">Bass音乐流</param>
        /// <param name="extension">音乐格式(扩展名)</param>
        /// <returns>艺术家</returns>
        private string Bass_Artist(string Path, int stream, string extension)
        {
            string content = null;

            switch (extension)
            {
            case ".mp3":
            case ".m4a":
            case ".flac":
            case ".aif":
            case ".aac":
            {
                string[] tags  = Bass.BASS_ChannelGetTagsID3V2(stream);
                string[] tags7 = Bass.BASS_ChannelGetTagsID3V1(stream);
                string[] tags8 = Bass.BASS_ChannelGetTagsArrayNullTermAnsi(stream, BASSTag.BASS_TAG_FLAC_CUE);
                string[] tags9 = Bass.BASS_ChannelGetTagsArrayNullTermAnsi(stream, BASSTag.BASS_TAG_FLAC_PICTURE);
                BASS_TAG_FLAC_PICTURE[] tags10 = Bass.BASS_ChannelGetTagsFLACPictures(stream);
                string[] tags2 = Bass.BASS_ChannelGetTagsMETA(stream);
                string[] tags3 = Bass.BASS_ChannelGetTagsBWF(stream);
                string[] tags4 = Bass.BASS_ChannelGetTagsICY(stream);
                string[] tags5 = Bass.BASS_ChannelGetTagsMF(stream);
                string[] tags6 = Bass.BASS_ChannelGetTagsRIFF(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("TPE"))
                        {
                            content = x.Remove(0, 5);
                            break;
                        }
                    }
                }
                break;
            }

            case ".ogg":
            {
                string[] tags = Bass.BASS_ChannelGetTagsOGG(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("ARTIST"))
                        {
                            content = x.Remove(0, 7);
                            break;
                        }
                        else
                        {
                            content = null;
                        }
                    }
                }
                break;
            }

            case ".ape":
            {
                string[] tags = Bass.BASS_ChannelGetTagsAPE(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("Artist"))
                        {
                            content = x.Split(new char[] { '=' })[1];
                            break;
                        }
                    }
                }
                break;
            }

            case ".dff":
            case ".dsf":
            {
                stream  = Bass.BASS_StreamCreateFile(Path, 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT);
                content = Bass.BASS_ChannelGetTagsDSDArtist(stream);
                break;
            }
            }
            return(content);
        }
示例#6
0
        /// <summary>
        /// 使用Bass获得音乐标题
        /// </summary>
        /// <param name="stream">Bass音乐流</param>
        /// <param name="extension">音乐格式(扩展名)</param>
        /// <returns>标题</returns>
        private string Bass_Title(string Path, int stream, string extension)
        {
            string content = null;

            switch (extension)
            {
            case ".mp3":
            case ".m4a":
            case ".flac":
            case ".aif":
            case ".aac":
            {
                string[] tags = Bass.BASS_ChannelGetTagsID3V2(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("TIT"))
                        {
                            content = x.Remove(0, 5);
                        }
                        break;
                    }
                }
                break;
            }

            case ".ogg":
            {
                string[] tags = Bass.BASS_ChannelGetTagsOGG(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("TITLE"))
                        {
                            content = x.Remove(0, 6);
                            break;
                        }
                        else
                        {
                            content = null;
                        }
                    }
                }
                break;
            }

            case ".ape":
            {
                string[] tags = Bass.BASS_ChannelGetTagsAPE(stream);
                if (tags != null)
                {
                    foreach (string x in tags)
                    {
                        if (x.Contains("Title"))
                        {
                            content = x.Remove(0, 6);
                            break;
                        }
                    }
                }
                break;
            }

            case ".dff":
            case ".dsf":
            {
                stream  = Bass.BASS_StreamCreateFile(Path, 0L, 0L, BASSFlag.BASS_SAMPLE_FLOAT);
                content = Bass.BASS_ChannelGetTagsDSDTitle(stream);
                break;
            }
            }

            if (content == null)
            {
                content = System.IO.Path.GetFileNameWithoutExtension(Path);
            }
            return(content);
        }