ETC EM61-0015C-V1

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