前言:

由于之前发的exe版是使用exe4j将jar包转换成的,运行时仍需要jdk环境(1.6/1.8,32/64位),感觉很不方便,因此准备开发一个windows可以直接使用的版本。

经过一段时间的开发(踩坑),终于使用C语言(初步)完成了这个txt音乐播放器。

本次仍会将下载链接发布在下方,与之前不同的是,本次会将C语言源码连同exe文件一起发布,欢迎有需要的朋友下载,欢迎大佬继续进行优化。

免费下载链接:

https://github.com/BlackHoleSeventh/

积分下载链接(最开始是0积分免费,后来CSDN自己就把积分改了):

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音乐播放器还有很多需要完善的地方,关键的是播放快节奏音乐时音符切换导致的停顿很明显,不连贯。还请大家帮忙提提建议与修改方法,在此提前谢过大家了!

资源免费,代码免费;原创代码,欢迎分享,但是分享后请勿收费,谢谢!

txt音乐播放器PC版免费下载(包含C程序源码与exe文件)相关推荐

  1. 2023基于微信小程序的音乐播放器+后台管理系统(SSM+mysql)-JAVA.VUE毕业设计源码论文(论文+开题报告+运行)

    摘 要 随着信息化时代的到来,各种程序都趋向于智能化.系统化:微信音乐播放器小程序也不例外,目前国内的市场仍都使用人工管理,随着市场规模越来越大,信息量也越来越庞大,人工管理显然已无法应对时代的变化, ...

  2. iOS电商常见动画与布局、微信悬浮窗、音乐播放器、歌词解析、拖动视图等源码

    iOS精选源码 MXScroll 介绍 混合使用UIScrollView ios 电商demo(实现各种常见动画效果和页面布局) 一行代码集成微信悬浮窗 可拖动,大小的视图,可放置在屏幕边缘. 在使用 ...

  3. TXT音乐播放器与DirectSound与C++,开发笔记与EXE免费下载(一)

    一.前言 之前提到,使用C语言开发TXT音乐播放器.使用PlaySound方法播放wav文件时,无法同时播放多个wav文件:当开始播放下一个wav文件时,之前正在播放的wav文件就会停止,导致音乐播放 ...

  4. 基于jQuery仿QQ音乐播放器网页版代码

    基于jQuery仿QQ音乐播放器网页版代码是一款黑色样式风格的网页QQ音乐播放器样式代码.效果图如下: 在线预览    源码下载 实现的代码. html代码: <div class=" ...

  5. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51448597 项目源码(打赏5积分请点这边):http://download.csdn ...

  6. 计算机弹音乐百度,百度音乐播放器电脑版怎么制作歌曲歌词?

    现在很多朋友都在使用百度音乐播放器,那么在使用百度音乐播放器播放音乐的时候.音乐没有歌词应该怎么办呢?可以使用百度音乐播放器来制作歌词哦,但是很多人都不知道百度音乐播放器电脑版怎么制作歌曲歌词?下面小 ...

  7. 修复版动态视频壁纸微信小程序源码下载,支持多种类型流量主收益

    相信各位小伙伴应该也知道动态视频小程序吧 小编之前也发过几款壁纸小程序 不过最近有小伙伴反应说接口使用了一年左右好像失效了 ​ 编辑 功能基本和之前的差不多吧,内有 动态视频壁纸功能,静态壁纸功能,头 ...

  8. 推荐免费下载大型酒店管理系统源码

    推荐免费下载大型酒店管理系统源码 下载地址:http://www.hur.cn/tg/linkin.asp?linkid=194606 下载地址:[URL=http://www.hur.cn/tg/l ...

  9. 修复登录接口版最新知识付费小程序源码下载-独立后台版本

    ThinkPHP3.2+layui框架 运行环境:php≥5.6+mysql....域名需配置ssl后才可以通过https访问 后台安装 1.将源码上传至服务器 首先修改数据库文件 Applicati ...

  10. 修复版超强大微信小程序源码-内含几十款功能证件图片制作王者战力查询工具箱大全

    介绍: 这是一款特别强大的一款微信小程序源码,初步算了一下,该款小程序目前包含了几十个功能. 具体功能如以下: 游戏扫码登录: 王者战力查询: 改名生成(多种生成方式): 头像框制作(N款模板): 王 ...

最新文章

  1. 二条件if else语句可以用离散二分布概率函数实现
  2. mysql解决Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp
  3. 【Python算法】哈希存储、哈希表、散列表原理
  4. 数字图像处理:第十八章 彩色图象处理
  5. Spring Boot Test 进行JPA 测试保存数据到数据库
  6. 操作系统--进程管理1--单个CPU情况
  7. C++ 类中特殊成员变量(常量、静态、引用)的初始化方法
  8. n的m划分 整数拆分问题
  9. Redis实现消息队列(订阅/发布模式 、LPUSH+BRPOP)
  10. android ct扫描模拟,基于Android平台的CT图像可视化显示方法及实现
  11. ubuntu 16.04安装vscode(visual-studio-code)操作步骤
  12. 盛大进军语音识别领域:将开源哼唱搜索技术
  13. Windows利用WTS API获取锁屏状态
  14. 日更文章到底难不难?
  15. 后缀树 Suffix Tree
  16. 为什么大家都喜欢使用宝塔面板?
  17. Chrome 图片批量下载扩展—— zzllrr Imager(小乐图客)
  18. 聚焦分布式资本:中国首家区块链基金如何布局区块链
  19. [Android]Toolbar
  20. python并发测试脚本语言_python并发测试脚本

热门文章

  1. 《如何有效阅读一本书》:读再多书,不如先学会如何读书
  2. windows7经典开机音乐_那些经典的单机游戏背景音乐,带你找寻童年记忆
  3. 电子邮件服务器匿名转发功能吗,你为什么不能匿名发送电子邮件
  4. [已解决] idea插件下载不了
  5. jq正则过滤html style,Jqgrid利用正则匹配表达式正确移除html标签
  6. Oracle中Minus的使用
  7. 2020腾讯实习生招聘面试算法题
  8. 基于小程序的网上商城系统的设计与实现毕业设计论文,网上购物商城小程序毕业论文
  9. 用基带等效的方式仿真8-DPSK载波调制信号在AWGN信道下的误码率和误比特率,并与理论值相比较。
  10. tcl c语言笔试题,TCL 2019校园招聘备战-求职应聘指南(笔试真题面试经验).pdf