c#实现XM文件播放/转码

这个脑洞也是很久以前就有的了。今天总算把坑填了。

XM文件就是各种注册机啊修改器啊里面的音乐,出奇的魔性啊,dididi~biubiubiu~很好听嘛………

pg

工具可以实现XM到MP3的格式转换,顺便加了播放功能。

基于bassmod的类库实现,这个类库好像很厉害,暴风之类的都使用的这个库。

http://www.un4seen.com/ 

这个帮助文档可是看晕了我……….

实现方法是先用里面的Bass.BASS_MusicLoad()这个方法创建一个流,然后操作,照着说明打就可以了;

枚举参数:

  1. 播放的话直接 BASSFlag.BASS_DEFAULT
  2. 转码要先解码 BASSFlag.BASS_MUSIC_DECODE
  3. 要获取XM文件的一些信息,比如歌曲长度,要先扫描 BASSFlag.BASS_MUSIC_PRESCAN

转码不要忘了加lame.exe 虽然文档里有但,我实力小聋瞎

http://lame.sourceforge.net/

如下代码可以实现播放功能~

private void PlayMusic(string Path_playmusic,int ct)
        {
            Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);

            //if (Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero))
            //{
            int Stream_playmusic = Bass.BASS_MusicLoad(Path_playmusic, 0L, 0, BASSFlag.BASS_DEFAULT, 0);
            if (ct == 1)
            {
                try
                {
                    dataGridView1.Rows[index_play].Cells[2].Value = "停止";
                }
                catch (Exception ex)
                {

                    MessageBox.Show(ex.Message);
                }
                Bass.BASS_Free();
                Bass.BASS_StreamFree(Stream_playmusic);
                
                return;
            }
            if (Stream_playmusic!=0)
                {
                    Bass.BASS_ChannelPlay(Stream_playmusic,false);
                }
                else
                {
                    MessageBox.Show(Bass.BASS_ErrorGetCode().ToString());
                }
            
                
            //}
        }

 

 

 

然后是源码和一些好听的音乐

XMplayer Music

另外我网易云歌单收录了一些

http://music.163.com/#/m/playlist?id=35507933&userid=30457340

发表评论