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

本文介绍了一款使用C语言开发的txt音乐播放器,解决了C-Free环境下PlaySound方法的链接库问题,并讨论了播放多个音乐文件时的挑战与解决方案。

前言:

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

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

 

内容概要:本文围绕考虑隐私保护的分布式联邦学习在电力负荷预测中的应用展开研究,并提供了完整的Python代码实现。该方法采用联邦学习的分布式架构,允许多个数据持有方在不共享原始敏感数据的前提下协同训练高精度的负荷预测模型,有效解决了数据孤岛用户隐私泄露之间的矛盾。研究详细阐述了联邦学习的核心机制,包括本地模型训练、加密参数上传、全局模型聚合等关键流程,并基于真实电力负荷数据进行了实验验证,结果表明该方法在保障数据隐私安全的同时,仍能保持优异的预测性能模型泛化能力。; 适合人群:具备一定机器学习基础和电力系统背景的研究人员,以及从事负荷预测、数据隐私保护、联邦学习算法开发的研究生和技术人员。; 使用场景及目标:①应用于居民区、工业园区等多主体参的电力负荷预测场景,解决跨机构数据协作中的隐私合规问题;②为构建安全可信的智能电网数据共享分析平台提供关键技术支撑;③推动联邦学习在能源互联网、需求响应、虚拟电厂等领域的工程化落地。; 阅读建议:建议读者结合所提供的Python代码进行动手实践,深入理解联邦学习的通信协议、梯度聚合机制隐私保护策略,可在复现实验的基础上尝试引入差分隐私、同态加密等增强手段,或优化模型结构以提升预测效率精度。
内容概要:本文提出了一种基于压缩感知中密钥控制测量矩阵的新型图像压缩加密混合算法,深度融合压缩感知理论现代密码学机制,实现图像在高效压缩的同时完成高强度的安全加密。该算法通过引入密钥动态生成或调控测量矩阵,确保仅有持有正确密钥的授权方能够准确重构原始图像,从而显著提升系统的抗攻击能力和保密性。文中系统阐述了算法的设计原理、密钥控制机制、测量矩阵构造方法以及信号重构流程,并基于Matlab平台进行了完整的代码实现仿真实验,验证了该算法在压缩效率、重构图像质量(如PSNR、SSIM指标)以及抵抗常见攻击(如噪声、剪切、统计分析)等方面的优异性能。; 适合人群:具备信号处理、信息安全或数字图像处理基础知识,正在从事相关领域研究的研究生、科研人员及工程技术开发者。; 使用场景及目标:①适用于军事通信、医疗影像安全传输、云端敏感图像存储等需兼顾压缩效率数据安全的场景;②为探索压缩感知信息安全交叉领域的研究人员提供可复现的算法设计范例仿真代码参考;③推动图像数据在传输存储过程中实现高效性安全性的有机统一。; 阅读建议:建议读者结合提供的Matlab代码深入理解算法实现细节,重点分析密钥控制测量矩阵的生成逻辑及其对重构性能的影响,同时可在不同类型的图像数据集上进行测试,以全面评估算法的鲁棒性泛化能力。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值