txt音樂播放器PC版免費下載(包含C程序源碼與exe文件)

前言:

由於之前發的exe版是使用exe4j將jar包轉換成的,運行時仍需要jdk環境(1.6/1.8,32/64位),感覺很不方便,因此準備開發一個windows可以直接使用的版本。

經過一段時間的開發(踩坑),終於使用C語言(初步)完成了這個txt音樂播放器。

 

本次仍會將下載鏈接發佈在下方,與之前不同的是,本次會將C語言源碼連同exe文件一起發佈,歡迎有需要的朋友下載,歡迎大佬繼續進行優化。

免費下載鏈接:

https://download.csdn.net/download/BHSZZY/12435440

技術要點(踩過的坑):

在開發過程中遇到的坑總結如下:

1.C-Free使用PlaySound找不到方法與連接庫的問題

本人用C-Free開發時,爲了播放音樂,用到了PlaySound方法;按照網上的說明添加了相關語句:

#include <mmsystem.h>
pragma comment (lib , "winmm.lib")

結果在使用 PlaySound(url, NULL, SND_FILENAME | SND_ASYNC | SND_NOWAIT); 方法時,報錯:

[Error] C:\txtmusic\tm.c:174: undefined reference to `PlaySoundA@12'

百度發現,需要手動添加鏈接庫,但是都是VC、VS中的添加方法,好不容易找到C-Free的添加方法了,如下(構建-構建選項-連接):

結果添加之後,還是報錯:

[Error] E:\C-Free5\mingw\bin\ld.exe: cannot find -lE:\C-Free5\mingw\lib\libwinmm.a

繼續百度,發現上方錯誤信息中多了一個"-l",是C-Free編譯時自己給添加了個參數,就導致找不到這個鏈接庫了;(cannot find -lE:\ ,E盤之前的-l,大佬沒寫明白,我還找了半天

解決方法呢?大佬說在Linker(CUI)裏面的 -l(Libs) 去掉-l後就能通過編譯(好像是C-Free設置菜單附近);但是我愣是沒找到(現在也沒找到)

那咋辦?難道得手動輸命令編譯?

還好又找到一個大佬的文章,說配置參數就行了:

還是老地方,在下方參數寫上"-lwinmm"就行了;不用加pragma comment (lib , "winmm.lib"),你加了C-Free也識別不了;也不用添加連接(沒找到在哪裏設置去掉-l)

這個參數的意思是,由於我需要的是winmm.lib的連接庫,但是在C-Free中用的是libwinmm.a,其實基本是一個東西,只是C-Free中用lib+winmm+.a這個文件,發現這兩個文件的中間命名相同就行了(都是winmm);然後編譯時,增加參數“-lwinmm”,就可以把這個文件編譯到程序中了(個人感覺相當於jar包),其中"-l"指lib,"winmm"指連接庫。如果需要其它連接庫也按照格式添加參數即可。

 

2.PlaySound播放多個音樂的問題

終於能使用PlaySound方法播放音樂了,然而又遇到一個問題,PlaySound只能一次播放一個音樂,如果再次調用該方法播放其它音樂,上一個音樂就會被中斷。

聯繫到本人的txt音樂播放器,如果播放每個音符間隔時間長的音樂的話,還湊付能聽;如果播放時間間隔短的、節奏快的音樂,聽起來就磕磕絆絆的,很不連貫 。

通過各種百度,發現並沒有參數能解決這個問題,異步參數SND_ASYNC也不行(本來就得加,不加還會完整播完一個音符再播下一個音符,更難受)。(還有人說加SND_NOWAIT,加了和沒加一樣,感覺就沒有這個參數)

在此先吐槽一句,這也太菜了!本人寫java版的就沒遇到這個問題!

好吧,看看有沒有其它方法。

有人說可以開多線程、多進程、多對象來讓PlaySound同時播放多個音樂,但是研究了半天,感覺不太行,不符合要求(好吧,也許是沒看懂);而且多對象,如果可以的話我也想啊,但是C語言怎麼給PlaySound創建對象?還是多個?也許C++可以?

有人說可以先將多個wav混音成一個,然後用PlaySound方法播放;在此感覺大佬666,然而本人並不會代碼混音,還得確定混音開始時間結束時間、插入空白間隔;根據txt簡譜的不同,每次執行都要現場混音,總覺得耗時也是個問題,而且不方便;

還有人說可以用MciSendString()方法播放音樂,再次研究了半天,測試了幾波,發現還是不行,聽起來就像跳音播放一樣,總會漏幾個音沒有播(總是有節奏快的音樂的,跳着播可還行)

繼續百度,難道C語言就這兩個播放音樂的方法嗎?

嗯……還真沒找見其餘方法,這個問題目前還沒有解決。

PS:在某些情況下,運行本軟件播放節奏快的音樂時,還能湊付聽;在某些情況下就基本不能聽了,有些亂。代碼和參數都沒動,很奇怪。

 

3.總結

還是之前用exe4j將jar包轉成的txt音樂播放器.exe感覺好用一點,音樂播放也連貫;這個C語言開發的txt音樂播放器還有很多需要完善的地方,關鍵的是播放快節奏音樂時音符切換導致的停頓很明顯,不連貫。還請大家幫忙提提建議與修改方法,在此提前謝過大家了!

資源免費,代碼免費;原創代碼,歡迎分享,但是分享後請勿收費,謝謝!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章