---世纪新锐文档区欢迎你的到来!交流经验 资源共享!如果你有网站 欢迎转载 更欢迎链接 谢谢你!

芯锐科技——明智之选 好伙伴!
    <--- 返回

FM语音合成算法

武汉力源电子股份有限公司市场部(430079) 孙树印

摘 要   针对TI公司的MSP53C39,介绍了FM语音合成算法的基本原理和FM数据文件格式,合成算法生成工具TI_FM的使用方法。

关键词   FM    合成算法    音符     节拍

    MSP53C39芯片是TI公司推出的掩膜型语音处理芯片,它除了具有语音播放的功能外,还可以播放专门的FM(Frequency Modulation)乐谱。FM乐谱是TI公司专有的语音合成算法(Synthesis),是用相对简单的格式来产生不同乐器音乐效果的技术。使用FM乐谱,MSP53C39可以模拟产生各种乐器的声音,如钢琴、黑管、长笛、小号等等。

广告:>>

1 FM的原理

    FM乐谱使用调制后的信号来模拟各种乐器的声音,改变信号的参数可模拟不同的乐器效果。FM的基本原理可用下式表达:

 

式中:V1m、V2m、ω1、ω2是载波的振幅和角频率;

    Ω3、Ω4是调制信号的角频率;
  
mf3、mf4是调频指数。

    改变调制信号的振幅可以改变音质;改变载波信号的振幅可以改变音量。调制信号和载波信号的频率比会影响到声音的特性,当载波频率为调制频率的整数倍时,发出的声音就有音乐一样的悦耳动听旋律。MSP53C39内部的程序固化了67种乐器的参数(详见第三节)。

    演奏每个音符的过程包括四个基本部分:上升、衰减、维持和恢复(见图1)。上升是一个音符的起始,衰减是对上升的撤消,维持是音符的持续,恢复是一个音符的结束。

2 TI公司FM乐谱文件数据格式

SSY_1.gif (1100 字节)

图1 演奏一个音符的过程

2.1 乐谱文件音符数据格式

    在FM格式文件中,数据字节是倒的(低位LSB在前,高位MSB在后)。TI公司定义的FM乐谱数据格式编写的音符/歌曲是按下面的形式组织的。

    RBYTE  CHANNEL   NOTE  DURATION  LOAD_BOTH_CHINNEL

其中:

  • RBYTE 保留字;
  • CHINNAL 通道号,值是1或2分别对应通道1和2;
  • NOTE 音符符号,即C、D、E、F、G、A、B七个音符,这里共定义了6个八度,见表1所示。

    任何音符的高半度与其相邻高音符的低半度是相同的,或者说任何音符的高半度与其相邻低音符的高半度也是相同的。比如DS和E的低半度相同,B的低半度和AS相同,所以符号表中未列出低半度的音符,而是均以高半度来表示。由于E和F、B和高八度的C之间都是相差半度,所以E和B没有高半度表示,而其它任两个相邻的音符之间都是相差一度。

    此外,还包括一个休止符REST(#63H),用来禁止发声和两个通道和拍。

  • DURATION 节拍,音符演奏的时间,如四分之一拍。分别用如下符号表示:
SIXTH 十六分之一拍 (#08H)
ETH 八分之一拍 (#10H)
QTR 四分之一拍 (#20H)
HALF 二分之一拍 (#40H)
WHOLE 全拍 (#80H)

表1 音符表

音 符

双低八度

低八度

正常

高八度

双高八度

三高八度

符号

真值

符号

真值

符号

真值

符号

真值

符号

真值

符号

真值

C

-

 

C0

9

C1

21

C2

33

C3

45

C4

57

高半度C

-

 

CS0

10

CS1

22

CS2

34

CS3

46

CS4

58

D

-

 

D0

11

D1

23

D2

35

D3

47

D4

59

高半度D

DSL

0

DS0

12

DS1

24

DS2

36

DS3

48

DS4

60

E

EL

1

E0

13

E1

25

E2

37

E3

49

E4

61

F

FL

2

F0

14

F1

26

F2

38

F3

50

F4

62

高半度F

FSL

3

FS0

15

FS1

27

FS2

39

FS3

51

-

 

G

GL

4

G0

16

G1

28

G2

40

G3

52

-

 

高半度G

GSL

5

GS0

17

GS1

29

GS2

41

GS3

53

-

 

A

A0

6

A1

18

A2

30

A3

42

A3

54

-

 

高半度A

AS0

7

AS1

19

AS2

31

AS3

43

A4

55

-

 

B

B0

8

B1

20

B2

32

B3

44

B4

56

-

 

    节拍还可以是以上各值的加法组合,但总和不能超过最大值#0FFH。如WHOLE+HALF+QTR(#80H+#40H+#20H=#0D0H)是有效的。

  • LOAD_BOTH_CHINNELS 是否同时加载两个通道,为0时两个通道同时发这一个音符,为1时仅一个通道发声。

例如:RBYTE 1 A2 QTR 1

表示仅在通道1产生A2(正常的A音符,即#30H)四分之一个节拍。

2.2 四个特殊命令

    除了一般的音符数据外,还有4个特殊的命令。

    (1)结束命令

    RBYTE  #FF

    结束命令告知处理器这是一首歌曲的结束,语音处理器的模式寄存器PCM和ENA1被禁止,然后关闭。一旦处理器发现这个命令就会忽略其余后面的音符,所以为了避免在结束时产生尖叫,应在两个通道的最后一个音符后加休止符来适当的延迟。

    (2)改变乐器命令

    RBYTE  #F0   NEW_TIMBRE  CHINNEL

    NEW_TIMBRE乐器名称,TI的FM格式中支持67种乐器。包括:PICCOLO(短笛),FLUTE(长笛),CLARINET(黑管)等。
    CHINNEL 通道号,加载乐器于某一通道。

    (3)改变速度命令

    RBYTE  #EA   NEW_TEMPO

    NEW_TEMPO 设定新的速度,取值范围是0~127。

    (4)重复命令

    RBYTE #D0
    RDATA LABEL

    使用重复命令前应先定义一个标号(LABEL),重复命令的功能是将从标号到当前的数据重复演奏一次。

3 MSP53C39支持的乐器

    MSP53C39内部集成了67种乐器的模式,每种乐器的定义通过13个参数来确定。包括:1个字节的频率比,6个字节的载波函数参数和6个字节的调制函数参数,例如:

    BYTE FR121,#38,#E0,#F8,#20,#FC,#00,#1F, #1C, #18, #23,#20,#20 ;喇叭
    BYTE FR421,#08,#18,#FC,#00,#D0,#F8,#05, #1F, #1D,#50,#16,#04 ;长笛
    BYTE FR121,#00,#F8,#FE,#00,#F0,#F0,#28, #20,#08,#37,#27,#1C ;电子琴
    BYTE FR121,#00,#FE,#FE,#00,#00,#00,#30, #20,#1F,#05,#05,#05 ;风琴

    以上是4种乐器的模式定义数据,这些数据是MSP53C39内部固化好的,用户无需再定义。

4 TI_FM使用说明

    如果直接按TI公司要求的FM格式编写一首歌曲是十分困难的,作者必须具有相当的音乐专业知识,并且对命令表也要非常熟悉。为了简化编写的步骤,TI公司有一个基于DOS专用于转换的程序TI_FM,可将用符号表编写的FM歌曲的文本文件(SOG文件)转换成汇编源文件(TFM文件),再通过MSP50C3×汇编程序汇编成二进制数据文件。

    TI_FM的使用方法是:
    TI_FM SONG.SOG
    输入文件:SONG.SOG
    输出文件:SONG.TFM

5 使用体会

    笔者曾使用MSP53C39对FM算法进行过评估,用PC机的并口给MSP53C39提供数据,这样在PC机上就能全部完成FM数据的生成和语音的评估,其连接示意图如图2所示。

首先在PC机上用编辑工具按FM文本格式要求编写一段乐谱文件(见附录1),使用TI_FM程序转换成TFM格式文件, 再用汇编程序汇编成二进制数据文件。在PC机上编写一个小程序,通过并口向MSP53C39发送数据,就能够听到悦耳的音乐。编写乐谱文件通常可以根据歌曲简谱,如果有MIDI的多乐器乐谱,使两个通道分别播放主乐器和配乐器的话,效果就会更好。

SSY_2.gif (1649 字节)

图2 PC机与MSP53C39连接示意图

    在编写FM歌曲符号表文件格式时应注意以下几点:

    (1)TEMPO用于定义速度;
    (2)TIMBRE_CH1 和TIMBRE_CH2 用于定义通道1、通道2使用的乐器;
    (3)CHANNEL1和CHANNEL2后是通道1、2中的音符和节拍:第一行是音符,第二行是节拍,所有音符和节拍都以空格分开,并且音符和节拍必须一一对应;
    (4)‘*’和‘;’后是解释或说明信息,如词/曲作者和歌词等;
    (5)在歌曲最后要有一个REST休止符以保证歌曲的正确结束。

附录1 FM格式源文件(S1.SOG)
********************************************
* 歌名 : Miss You Indeed
* 作词 : Xianyue Yang
* 作曲 : Hanying Li
* 速度 : D4/4

TEMPO 16 ;速度
TIMBRE_CH1 ELEC_PIANO ;通道1使用电子琴
TIMBRE_CH2 ELEC_BASS ;通道2使用电子低音提琴
CHANNEL1
E2 E2 G2 D2 E2 A1 G1 C2 A1 C2
QTR+ETH SIXTH SIXTH ETH QTR SIXTH SIXTH QTR+QTR+QTR ETH ETH
CHANNEL2
E2 E2 G2 D2 E2 A1 G1 C2 A1 C2
QTR+ETH SIXTH SIXTH ETH QTR SIXTH SIXTH QTR+QTR+QTR ETH ETH
CHANNEL1
D2 E2 G2 E2 D2 E2 B1 A1 G1
QTR+ETH SIXTH SIXTH ETH SIXTH SIXTH ETH ETH WHOLE
CHANNEL2
D2 E2 G2 E2 D2 E2 B1 A1 G1
QTR+ETH SIXTH SIXTH ETH SIXTH SIXTH ETH ETH WHOLE
CHANNEL1
   A1      A1     A1    G1     A1    C2    D2    A2     G2    A2    G2    D2      E2
   ETH    SIXTH  SIXTH  ETH   ETH   QTR   ETH    ETH   SIXTH SIXTH  ETH   ETH    HALF
CHANNEL2
   A1   A1     A1     G1   A1  C2    D2   A2   G2     A2      G2    D2   E2
   ETH SIXTH  SIXTH  ETH  ETH  QTR  ETH  ETH  SIXTH   SIXTH  ETH   ETH  HALF
CHANNEL1
   D2     D2    D2     E2      D2   C2   A1   G2  E2  D2   D2         REST
   ETH    QTR   SIXTH  SIXTH  ETH  ETH  ETH  ETH ETH ETH QTR+QTR+QTR WHOLE
CHANNEL2
   D2     D2    D2     E2    D2   C2   A1  G2  E2  D2  D2          REST
   ETH    QTR   SIXTH  SIXTH ETH ETH   ETH ETH ETH ETH QTR+QTR+QTR WHOLE
;歌曲结束
...................................

    另外PC机用于和MSP53C39的接口源程序C39_ SPK.ASM限于篇幅未能列出,如感兴趣者请与作者联系,E-mail:dvssy@p8s.com。

参 考 文 献

1 孙树印. 掩码型语音芯片MSP53C39原理及应用. 力源电子工程,1999(3)

2 方建淳编著. 语音合成技术与单片机综合系统. 北京:航空航天大学出版社

(收稿日期:2000-01-26)

 

 

21XR.COM 版权所有 联系我们