程序对歌词提供了完整的支持,支持标准的lrc文件规范。[XX:XX]&[XX:XX.XXX],可以多个时间tag共用一句歌词。
程序处理歌词的方法是,根据mp3文件的文件名(短/或长文件名)去寻找lrc后缀的文件。注意:文件名采用前段匹配的方式,即只要歌词文件前面 的和音乐文件匹配即可。如:细说往事.mp3 和 细说往事-南方二重唱.lrc是可以对应起来的。另外对于文件名中的大小写是区分的,如 may it be.mp3 和May it be.lrc是对应不起来的。
[ti: Bohemian Rhapsody (Mercury)]
[arueen]
[al:A Night At The Opera (c)1975]
[00:01]Is this the real life
[00:04]Is this just fantasy
[00:07]Caught in a landslide
[00:10]No escape from reality
[00:15]Open your eyes
[00:18]Look up to the skies and see
[00:25]I'm just a poor boy, I need no sympathy
[00:31]Because I'm easy come, easy go,
[00:35]little high, little low,
[00:38]Anyway the wind blows, doesn't really matter to me,
[00:48]- to me -,
[00:55]Mama, just killed a man,
[01:01]Put a gun against his head,
[01:05]Pulled my trigger, now he's dead,
[01:09]Mama, life had just begun,
[01:15]But now I've gone and thrown it all away
[01:22]Mama, ooo,
[01:29]Didn't mean to make you cry
[01:32]If I'm not back again this time tomorrow
[01:37]Carry on, carry on, as if nothing really matters
[01:54]Too late, my time has come,
[02:01]Sends shivers down my spine,
[02:04]Body's aching all the time,
[02:08]Goodbye everybody - I've got to go
[02:14]Gotta leave you all behind and face the truth
[02:21]Mama, ooo
[02:28]I don't want to die,
[02:31]I sometimes wish I'd never been born at all
[03:05]I see a little silhouetto of a man,
[03:08]Scaramouche, scaramouche will you do the Fandango
[03:11]Thunderbolt and lightning - very very frightening me
[03:16]Galileo, Galileo,
[03:17]Galileo, Galileo
[03:19]Galileo figaro - Magnifico
[03:22]I'm just a poor boy and nobody loves me
[03:25]He's just a poor boy from a poor family
[03:29]Spare him his life from this monstrosity
[03:33]Easy come easy go -, will you let me go
[03:36]Bismillah! No -, we will not let you go - let him go
[03:40]Bismillah! We will not let you go - let him go
[03:43]Bismillah! We will not let you go - let me go
[03:46]Will not let you go - let me go
[03:48]Will not let you go - let me go
[03:50]No, no, no, no, no, no, no
[03:53]Mama mia, mama mia, mama mia let me go
[03:56]Beelzebub has a devil put aside for me, for me
[04:03]for me -
[04:14]So you think you can stone me and spit in my eye
[04:20]So you think you can love me and leave me to die
[04:25]Oh Baby - Can't do this to me baby -
[04:32]Just gotta get out - just gotta get right outta here
[05:10]Nothing really matters,
[05:14]Anyone can see,
[05:18]Nothing really matters -, nothing really matters to me
回复:DIY STM32之MP3素材整理
回复:DIY STM32之MP3素材整理
于成功了!经过两个多月的业余时间的努力,我自己制作的MP3
随身听终于完成了。a方案是tmega8+vs1011,典型的单片机+解码芯片
由于自己有一个256MB的SD卡,所以我的
MP3是插SD卡的,这样省了不少成本,反正我的数码相机又不
是经常使用,闲着也是闲着。大概成本算下来,自己做这样一个M
P3大概才要120左右,不过最大的乐趣还是来自DIY的乐趣^-^
采用的方案是单片机+DSP解码芯片,音质非常好,绝对比普通的MP3
要好。
mega8 mp3 player
vs1003手册上说可以解码吗mp3 wma和midi格式的音乐。
试验发现播放wma音乐可以像播放mp3那样播放,只要把wma文件数据送给vs1003就可直接播放。
刚开始在从正在播放的wma音乐转入下一首音乐会出现不能播放的问题。
wma格式不像mp3格式那样容易播放,因此不能播放的原因是其不能正确结束当前播放的数据帧。
后来查datasheet发现可以通过设置SCI_MODE的SM_OUTOFWAV位来结束wma的播放。
由于我的程序没有判断当前播放的音乐是什么类型音乐的程序。所以我有找了个变通的方法,
就是复位。
我用的是软件复位,通过设置SCI_MODE的SM_RESET位来实现。
即在播放每一首歌前复位一下vs1003就可解决wma歌曲的切换。
按手册上的要求复位前最好向VS1003填充2048个0 且这些数据要根据DREQ引脚的请求送给芯片。
另外复位后还要延时约1.35ms芯片才能恢复到先前的工作频率。
接下来就可以发送你的mp3或wma数据了。
不过这种方法只能整首的播放wma音乐,不能快进。如要快进VLSI网站上有示例代码。
现在我的mp3可以播放mp3和wma两种格式的音乐了,至于midi有空再研究。
不知阿永第三版的mp3板是否支持wma,如果没有可以考虑把它加上去,不复杂的,只要按我上面的方法就可。
今天早上我又把vs1003的midi功能做出来了。
不过在播放midi之前要把SMF1格式的midi转成SMF0格式的midi文件。
在应用手册上的网址http://www.gnmidi.com/下载转换程序GN1:0转换。
将转换后的文件拷到sd卡中按播放mp3及wma的方式播放即可。
但要注意在从正在播放的midi曲子跳出来,在复位前就不要填充2048个零了
如果填充了将会花很长时间才能进入下一首歌的播放,因为midi需要的数据量很小。
同样如果按暂停键,你也会等一段时间让vs1003把内部已有的数据处理完。
播放出来的音乐没有在电脑上播放的效果好,类似于手机上的midi音乐。
我做的播放器的图片(在通用板上手工焊的)
另外一个问题:
当midi正常播放至结束时,不能按照判断数据是否送完为标准来判断歌曲是否放完。
在播放mp3和wma格式时用这种方法,由于损失的时间很短所以听不出来。
而在放midi时,虽然你的数据送完了,但是由于vs1003内还有2048字节的数据还没解码完。
所以这时跳到下一首歌必然引起一段音乐无法播放完。
因此在送完所有数据后还要填充2048个数据,我用的是2048个零,才能恰好使midi音乐播放完,其实在播放mp3和wma时也要做同样的处理才对。
上传一下我写的程序
里面包含了SD卡的驱动,完整的FAT16操作程序,及VS1003的程序。
整个程序花了我半个月时间。
其中SD卡驱动只包含了初始化,读一扇区,写一扇区的功能。
FAT16部分
本来是针对我的毕业设计做的,现在顺便做了个mp3,所以其中有好多函数是不须要的。
但是有需要做文件系统的可以参考一下。
这部分含有,创建文件,删除文件,创建目录,删除目录,重命名,打开文件,写文件,显示目录内容等。另外为了配合mp3的操作多添加了几个函数。
但是写文件部分做的不完善。不支持长文件名的创建。
在主程序中放置了播放mp3的操作,同时注释掉了一些关于文件系统的函数。
如果把mp3的播放函数去掉,把原来的文件系统函数加上,可以直接使用。
显示用串口调试工具显示,播放mp3时会显示文件名的短文件名项,初始化的时候会显示初始化信息。
在用作fat16操作时可以像普通dos 操作一样。
比如显示根目录内容可以输入dir \
具体信息可通过输入help查看帮助。
关于这个mp3的原理图我就不画了
总共几个脚我用文字描述一下。
SD卡的cs接m32的SS引脚
其它的MISO MOSI SCK就不用说了
VS1003的
XCS接 PB0
XRESET接 PB1
DREQ接 PB2
XDCS接 PB3
其它几根SPI数据线按标准接
PLAY/STOP键接 PD5
PREV键接 PD4
NEXT键接 PD3
V- 接 PD2
V+ 接 PD6
如须更改可在程序中修改
VS1003的电源是这样接的,3.3V接IO电源,模拟电源用3.3串接一个1N4007,核电源在1N4007后接一个快恢复管1N5819。其它的按VS1003手册给的接法就行了。
如果要手工在通用板上焊VS1003的话,建议先给VS1003各个脚上好锡,然后焊好四周的8个脚用作固定,可以用电阻引脚之类的东西。然后用 细的漆包线,可以从小变压器上拆,把头上的漆用刀子刮掉上上锡。接着用普通的烙铁,记住烙铁不能沾锡,仔细焊上然后把线引到附近固定后接到你要的地方就行 了。
VS1003有很多电源脚内部是连在一起的,如果想偷懒的话可以只焊一根,或者只焊重要的脚就可以了,我上面做的mp3就是这样做的,工作没问题。不然48个脚要我焊焊上一天呢。
发布一个带完整歌词显示的mp3(基于本站的mp3板)_个人业余玩AVR暂告一段落
硬件环境:
是网站的mp3板,还是去年卖的缺陷板,当时是这个板第一次做板,但是有点小错误。当时我仔细看了看问题不大就购了一块。虽然贴了个标签说不可以用作mp3用途,但是我还是做了。
这个板的问题就是ch375的接线搞成5v版本的了,还有ch375的晶振离芯片太远,并且离数据线太近,这会导致ch375工作不稳 定。后来我通过改变晶振端的电容来稳定起工作。还有就是AVCC没有接VCC,还有个小毛病是232的RXD中少串了个电阻,直接接会导致无法isp下 载。
板子回来东西也是过了很久一个一个焊上去的,3310是从ppa2001那转让来的(在此表示感谢,他顺便还送了我很多PCB板)。最近从armok这里弄了些零件才算弄完整了。
软件平台:
AVRSTudio4.13 + WinAVR20070525
到了公司用起了source insight才觉得AVRSTudio的编辑器太滥了,所以我是用source insight编辑代码,直接命令行敲命令make,用avrdude + jtagice下载代码
功能描述:
程序包含两部分bootloader+application
bootloader是前一阵子在坛子里搜到的stk500的bootloader,我对它作了修改,以和我的程序匹配。
bootloader需要配置成2Kbytes的,可以复位按住start/puse,或者在主程序中按VOL+建,另外复位后10秒如果没有操作则自动进入bootloader
application部分完成的就是mp3的播放功能:
5个按键,功能上我只对start/pause作了修改,这个按键是用作模式选择的,可以选择单曲重复,全曲重复,随几播放(shuffle)
mp3文件可以存放在任意目录,但是总的文件夹数目受到限制(目前代码限制136个)。也可以采用以前的惯用方法,把文件放在特定目录下,这个需要修改程序fat.h文件中的一个宏定义FIX_DIRECTORY。
歌词文件可以存放在歌曲所在的目录和一个默认目录下,代码中是\\lrc 即根目录下的lrc文件夹下。
程序对歌词提供了完整的支持,支持标准的lrc文件规范。[XX:XX]&[XX:XX.XXX],可以多个时间tag共用一句歌词。
程序处理歌词的方法是,根据mp3文件的文件名(短/或长文件名)去寻找lrc后缀的文件。注意:文件名采用前段匹配的方式,即只要歌词文件前面 的和音乐文件匹配即可。如:细说往事.mp3 和 细说往事-南方二重唱.lrc是可以对应起来的。另外对于文件名中的大小写是区分的,如 may it be.mp3 和May it be.lrc是对应不起来的。
找到歌词文件后程序会对其解析,然后对所有数据进行排序。将结果存到ram或eeprom中。程序中使用静态单向链表来描述各个时间 tag,真正的歌词数据则放到一个数组里。目前这数组在内部ram中试640字节,eeprom中有1500字节。程序优先使用ram如果ram放步下则 会存到eeprom中。eeprom剩下的空间用于存放文件夹的信息,用于支持文件的任意存放。
由于部分歌词会存放到eeprom中,eeprom的操作很慢,所以歌词推荐那种使用多个tag公用一个歌词的形式,[xx:xx][yy:yy]XXXX 。当然不是这种也支持了。像这种歌词:
[ti: Bohemian Rhapsody (Mercury)]
[ar
[al:A Night At The Opera (c)1975]
[00:01]Is this the real life
[00:04]Is this just fantasy
[00:07]Caught in a landslide
[00:10]No escape from reality
[00:15]Open your eyes
[00:18]Look up to the skies and see
[00:25]I'm just a poor boy, I need no sympathy
[00:31]Because I'm easy come, easy go,
[00:35]little high, little low,
[00:38]Anyway the wind blows, doesn't really matter to me,
[00:48]- to me -,
[00:55]Mama, just killed a man,
[01:01]Put a gun against his head,
[01:05]Pulled my trigger, now he's dead,
[01:09]Mama, life had just begun,
[01:15]But now I've gone and thrown it all away
[01:22]Mama, ooo,
[01:29]Didn't mean to make you cry
[01:32]If I'm not back again this time tomorrow
[01:37]Carry on, carry on, as if nothing really matters
[01:54]Too late, my time has come,
[02:01]Sends shivers down my spine,
[02:04]Body's aching all the time,
[02:08]Goodbye everybody - I've got to go
[02:14]Gotta leave you all behind and face the truth
[02:21]Mama, ooo
[02:28]I don't want to die,
[02:31]I sometimes wish I'd never been born at all
[03:05]I see a little silhouetto of a man,
[03:08]Scaramouche, scaramouche will you do the Fandango
[03:11]Thunderbolt and lightning - very very frightening me
[03:16]Galileo, Galileo,
[03:17]Galileo, Galileo
[03:19]Galileo figaro - Magnifico
[03:22]I'm just a poor boy and nobody loves me
[03:25]He's just a poor boy from a poor family
[03:29]Spare him his life from this monstrosity
[03:33]Easy come easy go -, will you let me go
[03:36]Bismillah! No -, we will not let you go - let him go
[03:40]Bismillah! We will not let you go - let him go
[03:43]Bismillah! We will not let you go - let me go
[03:46]Will not let you go - let me go
[03:48]Will not let you go - let me go
[03:50]No, no, no, no, no, no, no
[03:53]Mama mia, mama mia, mama mia let me go
[03:56]Beelzebub has a devil put aside for me, for me
[04:03]for me -
[04:14]So you think you can stone me and spit in my eye
[04:20]So you think you can love me and leave me to die
[04:25]Oh Baby - Can't do this to me baby -
[04:32]Just gotta get out - just gotta get right outta here
[05:10]Nothing really matters,
[05:14]Anyone can see,
[05:18]Nothing really matters -, nothing really matters to me
[05:40]Any way the wind blows...
这样程序至少要花10秒钟才能把多余的数据存到eeprom中
像这种:
[ti:细说往事]
[ar:南方二重唱]
[al:细说往事]
[by:炫网资讯 Liuxuan.com]
[00:00.00]细说往事 - 南方二重唱
[00:09.56]词/曲:李子恒
[00:12.24]
[02:55.60][00:14.89]蓝蓝的天
[02:58.17][00:17.31]往事一缕轻烟飘过你的眼廉
[03:05.12][00:23.89]沉默的眼
[03:07.19][00:25.75]请回答我还爱不爱我的从前
[03:13.56][00:32.82]我的从前
[03:16.06][00:35.03]有你陪伴的梦和一张疼爱的脸
[03:22.80][00:41.49]如今细说往事
[03:25.05][00:43.95]往事如烟
[03:26.61][00:45.65]我是否还算是你的誓言
[03:30.60][00:49.97]
[04:09.91][02:04.40][00:50.93]白云翩翩
[04:11.78][02:06.32][00:52.83]心事一面银幕飘过你的窗前
[04:18.63][02:13.12][00:59.79]寂寞的窗
[04:20.53][02:15.07][01:01.45]请开启我被岁月紧锁的思念
[04:27.54][02:22.02][01:08.45]我的思念
[04:29.58][02:24.00][01:10.63]有你牵挂的心和一首叫做誓言
[04:36.30][02:30.59][01:16.91]如今细说往事
[04:38.48][02:32.97][01:19.50]往事如烟
[04:40.13][02:34.51][01:21.09]我是否还算是你的从前
[04:46.16][02:39.20][01:26.58]
[03:34.05][01:28.01]往事从头
[03:35.59][01:30.17]轻轻细说梦的演变
[03:42.30][01:36.95]多年以后
[03:44.56][01:39.04]是否还有爱的容颜
[03:51.42][01:45.93]往事从头
[03:53.52][01:47.97]轻轻细说沧海桑田
[04:00.20][01:54.65]是否能够
[04:02.40][01:56.87]回到从前再走一遍
[04:08.67][02:02.68]
就比较好了,用不着eeprom了。
程序不仅在LCD上显示信息在串口也会show一些,
说说字库文件:
总共有四个文件:st12.sys,st16.sys,gbk2uni.sys,uni2gbk。其中st12/16是12*12 和16*16点阵字库。其余两个为gbk和unicode互转的文件。
其中st16和gbk2uin.sys没有用到,但是我程序中没有去掉,如果想去调请在程序中改,在LCD_GBK.c文件的初始化中改。
字库是GBK字库,不是GB2312,所以支持很多汉字,总共两万多个,所以再生僻的都可以正常显示,如下面的繁体:
[ti:失恋阵线联盟]
[ar:草蜢]
[al:]
[by:ZJM]
[00:00]失戀陣線聯盟
[00:10]演唱:草蜢
[00:14]
[01:43][00:16]她總是只留下電話號碼
[01:47][00:19]從不肯讓我送她回家
[01:50][00:23]聽說你也曾經愛上過她
[01:54][00:26]曾經也同樣無法自拔
[01:57][00:30]你說你學不會假裝瀟洒
[02:01][00:34]卻教我別太早放棄她
[02:05][00:37]把過去全說成一段神話
[02:08][00:41]然後笑彼此一樣的傻
[02:12][00:45]我們這麼在乎她卻被她全不抹煞
[02:16][00:48]越疼她越傷心永遠得不到回答
[02:19][00:52]到底她怎麼想應該繼續猜測嗎
[02:23][00:56]還是說好全忘了吧
[02:27][00:59]找一個承認失戀的方法
[02:30][01:03]讓心情好好的放個假
[02:34][01:06]當你我不小心又想起她
[02:45][02:41][02:37][01:10]就在記憶裡畫一個"X"
[01:14](Music)
RE:DIY STM32之MP3素材整理
想问一下,字库是存在哪里?eeprom中还是SD Card中?那几个字库得有多大?
回复:DIY STM32之MP3素材整理
RE:DIY STM32之MP3素材整理
RE:DIY STM32之MP3素材整理
支持
要是用STM32做的话建议加上USB读写SD卡功能
呵呵
回复:DIY STM32之MP3素材整理
RE:DIY STM32之MP3素材整理
回复:DIY STM32之MP3素材整理
既然有素材,那DIY MP3的实质性工作什么时候开始?
回复:DIY STM32之MP3素材整理
RE:DIY STM32之MP3素材整理
回复:DIY STM32之MP3素材整理