迪文科技论坛

 找回密码
 立即注册
搜索
查看: 587|回复: 0

【教学视频】0xF0音乐流音频数据播放

[复制链接]

94

主题

138

回帖

1266

积分

超级版主

Rank: 8Rank: 8

积分
1266
发表于 2023-6-13 21:25:24 | 显示全部楼层 |阅读模式
0xF0音乐流播放接口
一、WAV格式简介
WaveformAudio File FormatWAVE,又因为WAV后缀而被大众所知),它采用RIFFResourceInterchange File Format)文件格式结构,文件是由一个一个的chunk组成的,并且chunk之间可以嵌套。通常用来保存PCM格式的原始音频数据,所以通常被称为无损音频。其文件扩展名为WAV,是Wave Form的简写,也称为波形文件,可直接存储声音波形。

二、WAV格式结构
1.wav结构图
WAV文件以chunk为最小存储单位。一般由三个区块组成:
RIFFchunk
Formatchunk
Datachunk
此外,部分文件中还包含一些可选的区块,如FactchunkCuepoints chunkPlaylistchunkAssociateddata list chunk等。


2.wav文件格式表
  
字段
  
  
长度(bytes
  
  
端序
  
  
字段描述
  
  
chunk1
  
  
标识符
  Chunk  ID
  
  
4
  
  
  
  
第一个chunk的标识始终是"RIFF",表明该文件为有效的 RIFF 格式文档。
  
  
数据长度
  Chunk  Size
  
  
4
  
  
  
  
chunk的数据大小,包括chunkType。从下一个字段首地址开始到文件末尾的总字节数。该字段的数值加 8 为当前文件的实际长度。
  
  
格式类型
  Chunk  Type
  
  
4
  
  
  
  
对于Wave文件chunk的类型为"WAVE"
  
  
data
  
  
Chunk2
  
  
格式块标识
  Chunk  ID
  
  
4
  
  
  
  
Wave文件的第二个chunk标识为"fmt"
  
  
格式块长度
  Chunk  Size
  
  
4
  
  
  
  
chunk的数据大小,其数值取决于编码格式,可以是 16 18 2040 等。也有超过 40 字节的情况,如果不知道后面部分的含义,直接跳过即可,超过 16 字节部分为扩展块。
  
  
data
  
  
编码格式代码
  Format  Tag
  
  
2
  
  
  
  音频数据格式,0x0001表示PCM数据。常见的 WAV  文件使用 PCM  脉冲编码调制格式,该数值通常为 1
  
  
声道个数
  
Channels
  
  
2
  
  
  
  
声道数,单声道为 1,立体声或双声道为 2
  
  
采样频率
  Samples  Per Sec
  
  
4
  
  
  
  采样率,每秒采样次数。每个声道单位时间采样次数。常用的采样频率有8/11.025/12/16/22.05/24/32/44.1/48/64/88.2/96/176.4/192  kHZ
  
  
数据传输速率
  Avg Bytes  Per Sec
  
  
4
  
  
  
  
传输速率,每秒的字节数,每秒的音频数据大小。
  
公式:传输速率=声道数*采样率*每个采样点的比特数/8
  
  
数据块对齐单位
  Block  Align
  
  
2
  
  
  
  
每个时刻的音频数据块大小,告知播放软件一次性需处理多少字节。公式:数据块=声道数*每个采样点的比特数/8
  
  
采样位数
  Bits  Per Sample
  
  
2
  
  
  
  
存储每个采样值所用的二进制数位数。常见的位数有 4812162432。值越大,对声音的还原度越高。
  
  
Chunk3
  
  
格式块标识
  Chunk  ID
  
  
4
  
  
  
  
Wave文件的第三个chunk的标识为"data"
  
  
格式块长度
  Chunk  Size
  
  
4
  
  
  
  
chunk的数据大小。
  
  
data
  
  
PCM数据
  
data
  
  
Chunk Size
  
  
  
  
PCM数据。
  

从上表可以看出:
(1) Wave文件最外层是一个标识为“RIFF”的类型块chunk1
(2) chunk1data部分嵌套了2chunk,即chunk2chunk3
(3) chunk2的标识为“fmt”,在它的data部分存储音频的一些相关属性;
(4) chunk3的标识为“data”,在它的data部分存储具体的音频PCM数据。

3.wav数据图
To wav软件转换的单声道wav文件,用Ultra Edit打开。
为方便描述,Wav字段以1-14编号说明,对应wav格式表“字段描述”的14个属性。
10x52 49 46 464字节,ASCII字符“RIFF”,这部分是固定格式,表明这是一个WAVE文件头。
20xE8 B9 00 004字节,小端存储,转为大端字节序0x00 00 B9 E8,十进制为:47592
表示chunk1的数据大小为47592字节,指“红框2”后面的字节数据总数,起始不包括“红框2”,该字段的数据值加 8 为当前文件的实际长度,这个8也就是“12”的8字节。47592+8=47600,右键查看文件属性,和文件大小一致。
30x57 41 56 454字节,ASCII字符“WAVE”,固定格式。
40x66 6D 74 204字节,ASCII字符“fmt”, fmt”不够4个字符,所以右边补空格,标识符。
50x10 00 00 004字节,小端存储,转为大端字节序0x00 00 00 10,十进制为:16
表示chunk2的数据大小为16字节,即偏移量从14H~23Hwav格式表可知,Format TagChannelsSamples Per SecAvg Bytes Per SecBlock AlignBits Per Sample总共16字节(chunk2 date的那6个属性,6/7/8/9/10/11标号内容)。
60x01 002字节,小端存储,转为大端字节序0x00 01,十进制为:1,表示该数据以PCM方式进行编码。
常见音频编码格式:
  
格式编码
  
  
格式名称
  
  
fmt 块长度
  
  
fact
  
  
0x01
  
  
PCM /非压缩格式
  
  
16
  
  
  
  
0x02
  
  
Microsoft ADPCM
  
  
18
  
  
  
  
0x03
  
  
IEEE float
  
  
18
  
  
  
  
0x06
  
  
ITU G.711 a-law
  
  
18
  
  
  
  
0x07
  
  
ITU G.711 μ-law
  
  
18
  
  
  
  
0x031
  
  
GSM 6.10
  
  
20
  
  
  
  
0x040
  
  
ITU G.721 ADPCM
  
  
  
  
  
  
0xFFFE
  
  
见子格式块中的编码格式
  
  
40
  
  
  

70x01 00 1字节,小端存储,转为大端字节序0x00 01,十进制为:1表示该文件是单声道文件。单声道为 1,立体声或双声道为 2
80x00 7D 00 004字节,小端存储,转为大端字节序0x00 00 7D 00,十进制为:3200,表示采样频率为32000Hz,采样率(每秒样本数),表示每个通道的播放速度。
90x00 FA00 004字节,小端存储,转为大端字节序0x00 00 FA 00,十进制为:64000,表示波形音频数据传输速率64000
公式:声道数*采样率*每个采样点的比特数/8=传输速率
1*32000*16/8=64000
100x02 002字节,小端存储,转为大端字节序0x00 02,十进制为:2表示块对齐单位,说明该播放软件一次需要处理多个2字节大小的数据。
公式:声道数*每个采样点的比特数/8=数据块
1*16/8=2
110x10 002字节,小端存储,转为大端字节序0x00 10,十进制为:16存储每个采样值所用的二进制数位数。常见的位数有 4812162432。值越大,对声音的还原度越高。
120x64 61 74 614字节,ASCII字符“data”,标识符。
130xC4 B9 00 004字节,小端存储,转为大端字节序0x00 00 B9 C4,十进制为:47556,音频数据部分47556字节,44+47556=47600和文件大小一致。
(14)音频PCM数据
PCM数据存储格式。

三、DGUS
1.wav转换
立体声wav文件转换为单声道wav文件。

如例程的立体声wav文件格式:

采样率:44100Hz
   道:立体声
位深度:16
   式:波形音频16位整数。

转换后的单声道wav文件格式:

采样率:32000Hz
  道:单声道
位深度:16
   式:波形音频16位整数。
单声道为左声道或者右声道语音,满足上述格式要求的文件均可使用。

2.复制wav音频数据到22文件初始化
设定DGUSVP变量起始地址为0x8000,工程DWIN_SET文件夹复制一个空的22文件,将wav数据复制到22文件0x10000起始地址。DGUS屏为MSB模式,wavwae文件为LSB模式,复制数据时,数据部分第一个字节不复制,使数据高低字节整体错开。

3.22文件下载到DGUS
在线或SD卡下载。

4.指令播放
  
0xF0
  
音乐流播放接口
W
4
D7:写入0x5A 启动一次音乐播放处理,CPU  操作完清零。
  
D6:播放模式,0x00=停止(清空缓冲区),0x01=暂停(不清空缓冲区),0x02=播放。
  
D5:D4:未定义,写0x00
  
D3:D2:保存音乐数据的变量存储器地址,偶数。
  
D1:D0:需要播放的音乐数据字长度,最大8KWords,偶数;数据为16bit  整数格式。
每次发送8KWords数据,8KWords8*1024即变量地址间隔0x20001千字节(KB=1024字节(B)。
5AA5 0B 82 00F0 5A02 0000 8000 2000
5AA5 0B 82 00F0 5A02 0000 A000 2000
5AA5 0B 82 00F0 5A02 0000 C000 2000

5AA5 0B 82 00F0 5A02 0000 8000 2000
含义:0x5AA5:帧头;
0x0B:数据长度,0x82开始,不含0x0B字节;
0x82:写指令;
0x00F0:音乐流接口地址;
0x5A02写入0x5A 启动一次音乐播放处理,CPU 操作完清零。0x02=播放。
0x0000未定义,写0x00
0x8000保存音乐数据的变量存储器地址,偶数。
0x2000需要播放的音乐数据字长度,最大8KWords,偶数;音频数据为16bit 整数格式。

5.注意事项
1)有效语音数据与全部语音数据
0x200010进制为819247556/81925.81,即6条指令写完全部数据。播放时,前2条指令16Kwords数据即可播放完有效音频,后面部分为噪音和无效数据,与语音发音和结束时间有关。
2)播放是沙沙噪声
DGUS是MSB模式,wav、wae是LSB模式,音频数据第一个字节去掉,数据高低字节整体错开。
322文件放到桌面编辑,在DWIN_SET下编辑,软件生成新文件会覆盖掉。在线下载默认工程DWIN_SET路径,选择编辑后的22文件。
4)Towav工具转换的wavwae文件数据都可以播放,其他软件转换的左声道、右声道文件也支持,注意输出32000Hz采样率,不是44100Hz。

6.DEMO说明
DEMO480*480分辨率。
大于480*480分辨率可直接下载调试,小于480*480分辨率只会显示屏分辨率大小,超出部分不显示。
附件包含:Towav单声道转换工具,单声道、立体声语音文件。

7.bilibili教学视频

友情链接:
触控按键语音、音乐播放:
http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=4898

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-4-27 17:03 , Processed in 0.093228 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表