小白也能学会,60行代码打造一款音乐播放器
对于小伙伴们来说,在日常的学习和工作中,很多人都喜欢边听音乐边工作,音乐能够给自己的身心带来放松,让自己能够更加投入到学习和工作中去。
面对形形的音乐软件,小编自己动手,用60行代码就制作了一款简易的音乐播放器,一起来看看吧。
为了让大家对播放器有一个更加直观和全面的了解,也为了充分调动大家的积极性。 ,我们先来展示一下播放器的运行效果。
视频加载中…
视频中,大家可以看到,只需要点击“获取本地歌曲”按钮,然后选择本地的音乐文件夹,所有的音乐名称就会展示在右侧的音乐栏中。
大家可以通过上下滑动音乐栏来查看所有的音乐,然后根据左侧的四个按键的提示,就可以选择音乐进行播放,或者暂停等操作。
通过视频进行软件使用的讲解后,接下来,我们就对于程序进行解析,看一下如何利用60行代码就可以制作这样的一个播放器。
对于程序的讲解,主要分为以下的三个步骤:
- 播放器界面的构造
- 获取本地的音乐,并展示在界面中
- 对音乐的播放,停止等操作
02.播放器界面的构造
对于播放器界面的构造,程序利用的是tkinter进行制作,部分程序如下图所示。
程序中,规定软件的界面大小为700×500,同时为界面设置了背景图,对于各个按钮控件相对于界面的位置,则是通过place函数来进行设置。
二维码的的展示,则是通过依托于tkinter库中的Label控件进行展示。界面的样式如下图所示。
界面中,黄色的部分是为了后续音乐文件的展示,左侧的四个按键则是起到了对于音乐的控制。
03.获取本地的音乐,并展示在界面中
对于本地文件的获取,可以通过tkinter库中的askdirectory函数,来选择本地的文件夹,利用os库中的listdir函数列出文件夹下所有的音乐。并利用tkinter库的Listbox控件将音乐展示在界面中,程序如下图所示。
程序中,通过for循环将音乐的名字插入到Listbox对象中,然后展示在界面中,如下图所示。
可以看到,通过选择本地的音乐文件夹,在界面中展示出了所有的歌曲名字 。
04.对音乐的播放,停止等操作
对于音乐的播放,利用的pygame库来实现,对于歌曲的操作,包括了播放、暂停,继续以及停止,通过pygame库,几行代码即可实现,程序如下图所示。
在歌曲的播放过程中,在音乐栏的最上方,会显示出当前播放的是哪一首音乐,如下图所示。
以上就是小编今天为大家分享的趣味案例,利用简单的几十行代码就可以制作一个简单的音乐播放器,大家可以动手操练起来!
需要本软件的可以在后台私信小编:“01”即可领取。
单片机学习之十几行代码完成MP3播放器DIY
今天开始给大家分享干货啦!!
MP3播放器,很多年以前可是很流行的,而且价格不菲,现在一个智能手机不近打败了MP3,连数码相机,单反相机也几乎全部干掉了,这就是趋势,跟不上趋势终将被淘汰。
我们这里演示MP3主要是前面项目里面正好用到了这个模块,而且对于新手来也容易上手,学习这个例子呢,其实你可能会感叹,产品开发原来也不难嘛!!事实也确实如此,开发产品其实就是把现有的技术拿来组装,要不怎么说工程师呢,其实就是干货的,农民工差不多,都是搬砖的,呵呵,扯远了。但是要真正开发出一款好产品,不仅仅是简单组合,而是要组合的恰到好处,即好看,又可靠,这才是合格产品设计师,往大了说才是合格的架构师。
言归正传,我们今天的例子是基于ARM的,说到ARM可能大家首先想到的是ST公司的STM32系列,确实现在单片机领域STM32占领了32位单片机领域的大半边天,但是TM32太贵了,这里给大家推荐一个兆易创新的GD32F130,国产的芯片性价比更高,稳定性也不错。这次MP3播放器也是给予这个芯片演示的。
MP3播放器的功能比较简单,就是在主循环里面,循环播放SD卡里面预存的8个MP3歌曲,所以流程图太简单,就不上了,直接上代码了,总共十几行代码。
int main(void)
{
int song=0;//定义当前播放的歌曲
rcu_config();//配置模块时钟
gpio_config();//GPIO初始化
gd_eval_ledinit(LED1);//LED指示灯初始化
systick_config();//系统时钟初始化
uartInit();//串口初始化,通过串口给MP3模块发指令
delay_1ms(1000); //延时1000ms,主要是等待MP3模块上电初始化完成,否则的话发指令会不响应
SendDataN((uint8_t *)(Command1[0]),6);//设置音量大小
delay_1ms(100); //延时100毫秒
SendDataN((uint8_t *)(songs[song++]),7); //播放第一首歌曲,同时song指向下一首要播放的歌曲
while (1)//主循环
{
delay_1ms(1000*60); //延时1分钟,一首歌曲播放一分钟后切换到下一首
SendDataN((uint8_t *)(songs[song++]),7); //发送播放歌曲指令,同时song指向下一首要播放的歌曲
if(song>7)song=0;//歌曲总共有8首,播放到最后一首后,回到第一首循环播放
}
}
最后上效果视频:
视频加载中…
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。