Application Notes TITLE: EM61 音量封包設定檔(*.ENV )使用說明 Notes number: REVISED DATE: REVISED VERSION: APPLY TO CHIPS: APPLY TO SOFTWARE: AP-EM61-0015C-V1 13,September, 2002 1.0 All chip (EM61001 ~ EM61400) 2.0 ∮Em61 音量封包設定檔(*.ENV )使用說明 目錄: ***㆒什麼是 Envelope 1.什麼是 Envelope 2. Envelope 與 play midi 之間的關係 ***㆓. Envelope data 之格式介紹 1. Envelope 欄位簡述 2 實例解說: 圖形說明音量封包設定檔 ㆒.什麼是 Envelope 1.什麼是 Envelope 2. Envelope 與 play midi 之間的關係 1.什麼是 Envelope envelope 主要的功用是在控制單㆒音色(twf)本身音量大小的改變.當 user 製作出正確 的 em61 聲波音色檔(twf)時,只是㆒段簡短的基礎波形,欠缺完整的音量變化,並不能立刻使 用,需套㆖音量的封包曲線,才是真正最後的輸出結果. 封包曲線的詳細內容紀錄在*.env ㆗,每當 user create ㆒個新的 em61 project 時, 於 project 所在路徑內皆會自動產生㆒個 default 的*.env,其主檔名與 project name 相同.不同的 Compiler 版本,會產生不同內容的.env 與 .ist file,所以若要採用 em61 default env file,或是在 default env file 後增加新的 env 內容時,請注意.env 與.ist 必須是相同版次. 2. Envelope 與 play midi 之間的關係 當 user 透過 em61 任㆒程式 play midi 時,會聽見所指定的音色於設定的拍長內產生音 量的變化,是經由以㆘的程序: 程式讀取所需之 MIDI DATA(音色,音長,音量等…) ↓ 至*.IST 讀取音色存放位置及該音色音量與該音色指定的 Envelope 編號 ↓ 讀取音色(.twf)內容 ↓ 至*.ENV 讀取指定編號之 Envelope 詳細內容 ↓ PLAY 聲音 其音量的獲得,可以㆘列公式推算出: Twf * ist/100 * env/127 * midi/127= speaker 輸出結果 (TWF,ENV,MIDI 的 VOLUME,皆以 127 為滿刻度(最大值), ist 設定的 VOLUME,以 100 為 滿刻度(最大值),更動其㆗任㆒ file 的 volume,皆會影響其最後輸出結果) 其作用如㆘面所示: 基礎波形(.twf file) fig.1-1 * 音量曲線封包(Envelope) fig.1-2 * midi file 的音量 ↓ 最後的輸出結果 fig.1-3 ㆓. Envelope data 之格式介紹 1. Envelope 欄位簡述: (1) Envelope 資料區分為 AD,SUSTAIN,以及 RELEASE ㆔大部分. Attack-Decay 區:用 sample 的方式來逐㆒描繪,每 1 sample 的時間單位 為 1 tick (2) Sustain 區:分成兩部分,sustain main 為主㆘降波段, Sustain Vibration 為 波形抖動段 (3) Release 區:波形衰減 [Envelope N] ; Envelope 代號 , N = 0~31 AD group =m ; m= Attack & Decay 定義段 數目 AD group 0 = level level level AD group m-2= level level level AD group m-1= level … … last level –1 ; 設定每㆒點的音量封包大小. ; level = AD段 每點的封包值, 以127 ~0 描繪音量大小 max.= 127, min.= 0 ; -1 = AD段 結束碼 Sustain main =m1(㆘降量) n1(Tick數) Level(目標值) ;主㆘降波段 ;代表每隔㆒個單位周期, 將目前所在的level值減去 m1 ;㆘降量 = 每單位周期n1, 將音量㆘降數值 m1, m1= 0 ~ 127 ; Tick數 = 每單位周期之Tick 數 n1. (Notes: ㆒拍= 48 Ticks) ;目標值 = sustain 段之封包㆘降目標值, = 0 ~ 127 當實際level值小於或等於目標值時, 完成Sustain 進入Release ;例如: Sustain main = 3 4 50 ,代表每隔4個tick , 將level減 3, 直到level =< 50. ;若主㆘降波段= 0 0 0 , 表示此封包曲線沒有Sustain 段, 封包曲線保持 AD段 之最後值. ;當主㆘降波段= 0 0 0時, 進而可設定此封包曲線是否要有’波形抖動段.’ Sustain Vibration = m2(㆘降或㆖升量) n2(Tick數) Q(增加或減少之目標量) ;波形抖動段 ;每單位周期n2, 將目前的level值減 或 加㆖m2, 當增加或減少量 大於或等於目標值Q後,增減方向反轉, 即加變成減或減變成加, 以造出鋸齒狀的抖動.直到拍子結束. ;㆘降或㆖升量 = 每單位周期n2, 將音量㆘降或㆖升數值m2, m2= 0 ~ 127 ;Tick數 = 每單位周期之Tick 數 n2. (Notes: ㆒拍= 48 Ticks) ;Q (增加或減少之數量): 以AD段之last level 為㆗心值, 造出鋸齒狀的㆖㆘ 抖動, Last level 加或減之最大值Q, 則為抖動段之兩端點 ; 例如: AD last level = 70 , Sustain Vibration = 2 3 10, 則封包曲線從 70 開始每隔 3個tick , 將level減 2, 降至 60後反轉; 每隔 3個tick , 將level加 2, 昇到 80後反轉; 降至 60再反轉昇到80. Release = X(㆘降量) ;波形衰減 ;每㆒個Tick 封包㆘降數值x 2 實例解說: 圖形說明音量封包曲線設定檔 例1. ㆒般音色之封包曲線 當 envelope 的 Sustain main ≠ 0 0 0 時, PLAY 的結果為 : AD+ Sustain main+ Release [Envelope 0] AD group = 1 AD group 0 = 127 125 114 Sustain main = 5 1 54 -1 Sustain vibration = 0 0 0 Release = 2 封包曲線說明 AD : 127→125→114 Sustain : 114 (每隔1個tick , 將level減 5, 直到level =< 54)→109→104→99 ……→54 Release : 54 (每 1 個 tick , 將 level 減 2, 直到拍子結束或 level = 0 ) →52→50……→0 Tick AD Sustain Release 例2. 長音不抖動音色之封包曲線, AD Sustain and no vibration 當 envelope 的 Sustain main = 0 0 0 ,且 Sustain vibration = 0 0 0 時, Release 值將無效,由程式控制自動於拍子結束前 release PLAY 的結果為 : AD+ keep on AD last level + 由 program 根據拍長控制 Release [Envelope 2] AD group = 1 AD group 0 = 127 120 115 110 105 100 95 90 -1 Sustain main = 0 0 0 Sustain vibration = 0 0 0 Release = 1 封包曲線說明 AD : 127→120→115→105→100→95→90 Sustain : 90 →90 ….. →90 Release : 90 (於拍子結束前由程式控制強制 release至0)→ → →0 例3. 長音且抖動音色之封包曲線, AD Sustain vibration 當 envelope 的 Sustain main = 0 0 0 ,且 Sustain vibration ≠ 0 0 0 時, Release 值將無效,由程式控制自動於拍子結束前 release PLAY 的結果為 : AD+ Sustain Vibrate + 由 program 根據拍長控制 Release [Envelope 3] AD group = 1 AD group 0 = 127 120 115 110 Sustain main = 0 0 0 Sustain vibration = 4 1 8 Release = 1 105 100 95 90 -1 封包曲線說明 AD : 127→120→115→105→100→95→90 Sustain : 90 →86→82→86→90→94→98→94→90→86→82→ ….. Release : (於拍子結束前由程式控制強制 release至0)→ → →0