小白也能学会,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

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。