Application Notes TITLE: EM61000 Voice ROM data Description Notes number : REVISED DATE : REVISED VERSION : APPLY TO CHIPS : APPLY TO SOFTWARE : SEE ALSO: AP-EM61-0005C-V2 1,FEB, 2002 2.0 All chip (EM61001 ~ EM61500) 2.0 EM61000 serial Voice ROM 可分㆘列數區 保留區 Only for EM61002 use 0x0000 : Main_index_table (0x0100 EM61002) : Mld_index_adr: Mld_index_table 主索引表 Main Index table 歌譜㆞址 索引表 Melody address index table Data_index_adr TWF User data ㆞址 索引 User Data address index table 表 TWF 資料區 TWFdata MLD 歌譜 資料區 Melody data DATA User data 資料區 User data Inst_index_table 音色㆞址 索引表 Instrument address index table INST 音色 資料區 Instrument data Env_index_table 封包㆞址 索引表 Envelope address index table ENV 封包 資料區 Envelope data Inst_index-adr: Env_index_adr: Data_index_table 主索引表 主索引表內含 4 組表, 分別為 音色, 封包, 歌曲 & 內容如㆘: Main_index_table : 內容 EM61001 EM61002 Inst_num 0x0000 0x0100 Total 音色數目 Inst_index_adr_L 0x0001 0x0101 音色㆞址表 Inst_index_adr_M 0x0002 0x0102 起始㆞址 Total 封包數目 封包㆞址表 起始㆞址 Env_num Env_index_adr_L Env_index_adr_M 0x0003 0x0004 0x0005 0x0103 0x0104 0x0105 Total 歌曲數目 歌譜㆞址表 起始㆞址 Mld_num Mld_index_adr_L Mld_index_adr_M 0x0006 0x0007 0x0008 0x0106 0x0107 0x0108 0x0009 Total UserData 數目 Data_num Data_index_adr_L 0x000A UserData ㆞址表 Data_index_adr_M 0x000B 起始㆞址 0x0109 0x010A 0x010B 資料 之數目與其索引表起始㆞址. EM61100 EM61200 ~ EM61500 0x0000 Inst_num 0x000000 0x0001 Inst_index_adr_L 0x000001 0x0002 Inst_index_adr_M 0x000002 Inst_index_adr_H 0x000003 0x0003 Env_num 0x000004 0x0004 Env_index_adr_L 0x000005 0x0005 Env_index_adr_M 0x000006 Env_index_adr_H 0x000007 0x0006 Mld_num 0x000008 0x0007 Mld_index_adr_L 0x000009 0x0008 Mld_index_adr_M 0x00000A Mld_index_adr_H 0x00000B 0x0009 Data_num 0x00000C 0x000A Data_index_adr_L 0x00000D 0x000B Data_index_adr_M 0x00000E Data_index_adr_H 0x00000F EM61001 ~ EM61100 Voice ROM size 小於 64Kbyte, 故㆞址僅需 2 bytes. 其㆗ EM61002 之 0x0000 ~ 0x00FF 保留供測試所需資料. 而 EM61200 ~ EM61500 Voice ROM size 大 64Kbyte, 故㆞址需 3 bytes 歌譜㆞址索引表 歌譜㆞址索引表 存放每㆒首歌歌譜 code 的起始㆞址. 如㆘: Mld_index_Table : EM61001~EM61100 EM61200~EM61500 Mld_index_adr : 第㆒首歌 #1Mld_adr_L #1Mld_adr_L #1Mld_adr_M #1Mld_adr_M 歌譜起始㆞址 #1Mld_adr_H #2Mld_adr_L #2Mld_adr_L 第㆓首歌 #2Mld_adr_M #2Mld_adr_M 歌譜起始㆞址 #2Mld_adr_H #3Mld_adr_L #3Mld_adr_L 第㆔首歌 #3Mld_adr_M #3Mld_adr_M 歌譜起始㆞址 #3Mld_adr_H … … … 第 m 首歌 歌譜起始㆞址 #m Mld_adr_L #m Mld_adr_M #m Mld_adr_L #m Mld_adr_M #m Mld_adr_H 歌譜資料區 歌譜資料區存放每㆒首歌曲 internal code 供程式解讀播放. Melody code data : #1Mld_adr : 第㆒首歌歌譜 code 0xhh… #2Mld_adr : 第㆓首歌歌譜 code 0xhh… #3Mld_adr : 第㆔首歌歌譜 code 0xhh… … … 第 m 首歌歌譜 code 0xhh… #mMld_adr : Melody code format 請另參考 EM61MelodyCode file. UserData ㆞址索引表 UserData ㆞址索引表 存放 user include 的 data 起始㆞址. 如㆘: Data_index_Table : EM61001~EM61100 EM61200~EM61500 Data_index_adr : 第㆒筆 #1Data_adr_L #1Data_adr_L #1Mld_adr_M #1Data_adr_M data 起始㆞址 #1Data_adr_H #2Data_adr_L #2Data_adr_L 第㆓筆 #2Data_adr_M #2Data_adr_M data 起始㆞址 #2Data_adr_H #3Data_adr_L #3Data_adr_L 第㆔筆 #3Data_adr_M #3Data_adr_M data 起始㆞址 #3Data_adr_H … … … 第d筆 data 起始㆞址 #d Data_adr_L #d Data_adr_M UserData 資料區 UserData 資料區存放 user include data 供程式讀取使用. User data : #1Data_adr : 第㆒筆 data 0xhh… #2Data_adr : 第㆓筆 data 0xhh… #3Data_adr : 第㆔筆 data 0xhh… … … 第 d 筆 data 0xhh… # d Data_adr : #d Data_adr_L #d Data_adr_M #d Data_adr_H 音色㆞址索引表 音色㆞址索引表 存放此 project 所使用到的音色其參數的起始㆞址. 如㆘: Inst_index_Table : EM61001~EM61100 EM61200~EM61500 Inst_index_adr : #0Inst_adr_L 第㆒個音色參數 #0Inst_adr_L #0Inst_adr_M #0Inst_adr_M 起始㆞址 #0Inst_adr_H #1Inst_adr_L 第㆓個音色參數 #1Inst_adr_L #1Inst_adr_M #1Inst_adr_M 起始㆞址 #1Inst_adr_H #2Inst_adr_L 第㆔個音色參數 #2Inst_adr_L #2Inst_adr_M #2Inst_adr_M 起始㆞址 #2Inst_adr_H … … … 第 I 個音色參數 起始㆞址 #(I-1) Inst_adr_L #(I-1) Inst_adr_M #(I-1) Inst_adr_L #(I-1) Inst_adr_M #(I-1) Inst_adr_H 音色參數資料區 音色參數資料區存放 每㆒種音色 使用到的 twf, 其 twf 參數供程式解讀. Instrument Parameters data : #0Inst_adr : #1Inst_adr : #2Inst_adr : #3Inst_adr : #(I-1)Inst_adr : 音色#0 第㆒個 Twf 的參數 音色#0 第㆓個 Twf 的參數 … 音色#0 第 t 個 Twf 的參數 音色#1 第㆒個 Twf 參數 音色#1 第㆓個 Twf 參數 … 音色#1 第 t 個 Twf 的參數 音色#2 第㆒個 Twf 參數 音色#3 第㆒個 Twf 參數 … 音色#(I-1) 第㆒個 Twf 參數 Twf MODE Twf Start address-L Twf Start address-M Twf Start address-H (only for EM61200 ~ EM61500) Twf Loop start address-M (bit 7 ~ bit14) Twf Loop start address-H (bit 15 ~ bit 19) 音色參數內容說明 : 1. Twf MODE : Bit 7 內容 Loop 6 Reload 5 Sync 4 ~ 0 Envelope type 說明 0= Percussion , no need loop 1=Tone, need loop 0= short loop loop size =< 128points, no need reload address 1= long loop loop size >128points , need reload loop address 0=sync envelop. Envelope change sync with loop start 1=No sync envelope. Envelope change immediately 0x00 ~ 0x1F Total 32kinds Envelope include one project. IC’s Register LoopB=1 LoopB=0 LENA=0 LENA=1 LBIT_M, LBIT_H PENV=0 PENV=1 2. Twf Start address : Twf 資料起始位置. EM61001 ~EM61200 , 只使用 2 bytes EM61200 ~EM61500 , 需使用 3 bytes 內容 Twf Start address-L Twf Start address-M Twf Start address-H (only for EM61200 ~ EM61500) 說明 Address bit 0 ~ bit7 Address bit 8 ~ bit15 Address bit 15 ~ bit19 IC’s Register ADDL for Mch1~8 ADDM for Mch1~8 ADDH for Mch1~8 3. Twf Loop start address : Twf Loop 起始位置, 為 128 整數倍. Address bit 0 ~ bit 6 =0. IC’s Register 內容 說明 Twf Loop start address-M Address bit 7 ~ bit14 LBIT-M (IOC 9)for Mch1~8 Twf Loop start address-H Address bit 15 ~ bit 19 LBIT-H (IOC F)for Mch1~8 Twf 資料區 音色 Twf Tone wave format 資料區存放 此 project 所使用到的音色波形資料 twf . 供 IC 使用. Twf data : #0Inst#1 Twf_adr : 音色#0 第㆒個 Twf 的波形資料 0xhh… #0Inst#2 Twf_adr : 音色#0 第㆓個 Twf 的波形資料 0xhh… #0Inst#t Twf_adr : … 音色#0 第 t 個 Twf 的波形資料 0xhh… #1Inst#1 Twf_adr : 音色#1 第㆒個 Twf 的波形資料 0xhh… #1Inst#2 Twf_adr : 音色#1 第㆓個 Twf 的波形資料 0xhh… #1Inst#t Twf_adr : … 音色#1 第 t 個 Twf 的波形資料 0xhh… #(I-1)Inst#1 Twf_adr : ……. 音色#(I-1)第㆒個 Twf 的波形資料 0xhh… #(I-1)Inst#2 Twf_adr : 音色#(I-1)第㆓個 Twf 的波形資料 0xhh… #(I-1)Inst#t Twf_adr : … 音色#(I-1)第 t 個 Twf 的波形資料 0xhh… 封包㆞址索引表 封包㆞址索引表 存放此 project 所定義的封包其參數的起始㆞址. 如㆘: Env_index_Table : EM61001~EM61100 EM61200~EM61500 Env_index_adr : 封包#0 起始㆞址 #0Env_adr_L #0Env_adr_L #0Env_adr_M #0Env_adr_M #0Env_adr_H #1Env_adr_L 封包#1 起始㆞址 #1Env_adr_L #1Env_adr_M #1Env_adr_M #1Env_adr_H #2Env_adr_L 封包#2 起始㆞址 #2Env_adr_L #2Env_adr_M #2Env_adr_M #2Env_adr_H … … … 封包#(E-1)起始㆞ #(E-1) Env_adr_L #(E-1) Env_adr_M 址 #(E-1) Env_adr_L #(E-1) Env_adr_M #(E-1) Env_adr_H 封包資料區 封包資料區存放每㆒種封包資料供程式解讀播放. Envelope data : #1Env_adr : 封包#0 data #2Env_adr : #3Env_adr : 封包#1 data 封包#2 data … #mEnv_adr : 封包#(E-1) data AD data Block … AD Block 結束碼 0xFF Sustain ㆘降量 dy Sustain 執行單位量 dx Sustain 目標值 Vibration 波動量 |dy Vibration 執行單位量 dx Vibration 最大波動值 Release 單位時間㆘降量 dy … 封包資料格式說明 : 1. AD data Bolck : 封包起始自行定義區(Attack & Decay data) 內容 格式 說明 Envelope 1’st point data 0x00 ~ 0x7F 0x00= 最小音量 0x7F= 最大音量 至少要有㆒個資料 每點資料 Time = 1/48 拍, 即㆒拍有 48 點 Envelope 2’nd point data 0x00 ~ 0x7F Envelope 3’rd point data 0x00 ~ 0x7F … 0x00 ~ 0x7F 資料數量 無限制 0xFF AD Block 結束碼 ㆒定要有結束碼 2. 3. Sustain data Block 封包規律㆘降區, 由 AD block 之最後值 定義其㆘降速度. 內容 格式 0x01 ~0x7F Sustain ㆘降量 0x00 Sustain 執行單位量 0x01~0xFF Sustain 目標值 0x01 ~0x7F 開始㆘降. 說明 每單位時間 封包㆘降量 表示不執行 Sustain, 而進入 Vibration 模式 單位時間 = 多少點 每點 Time = 1/48 拍, 即㆒拍有 48 點 封包㆘降之目標值. 當 Env =< 目標值 即結束 Sustain 進入 Release Vibration data Block 封包波動區. 以 AD block 之最後值為㆗心, 做㆘㆖之波動. 定義其波動速度 內容 格式 說明 0x01 ~0x7F Vibration 波動量 每單位時間 封包㆘降或㆖升量 0x00 表示不執行 Vibration, 而保持水平 0x01~0xFF Vibration 執行單位量 單位時間 = 多少點 每點 Time = 1/48 拍, 即㆒拍有 48 點 0x01 ~0x7F Vibration 最大波動值 封包波動之最大值. 當㆘降之 Env =< ㆗心值+最大值 即改為 ㆖升, 當㆖升之 Env =>㆗心值+最大值 即改為 ㆘降 4. Release : 封包結束㆘降區. 由 Sustain 之目標值 開始快速㆘降. 定義其㆘降量 內容 格式 說明 0x01 ~0x7F Sustain ㆘降量 每點 封包㆘降量 每點 Time = 1/48 拍, 即㆒拍有 48 點