MSP53C39 FM語音合成演算法

admin @ 2014-03-26 , reply:0

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樂譜文件數據格式

圖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的多樂器樂譜,使兩個通道分別播放主樂器和配樂器的話,效果就會更好。

圖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 方建淳編著. 語音合成技術與單片機綜合系統. 北京:航空航天大學出版社




[admin via 研發互助社區 ] MSP53C39 FM語音合成演算法已經有378次圍觀

http://www.cocdig.com/docs/show-post-45155.html