欲爬文時總是只能看到搜尋結果的第一頁, 所以問題有重複的話請多包涵
---
從接觸電腦以來用的就是SB Live, 也都沒(不會)做什麼音樂, MIDI的東西都是從SF Manager裡面看的 bank有128個. 不過最近逛到一個介紹MIDI規格的網站 MIDI Technical Fanatic's Brainwashing Center 指出bank select可定到14bit, 開始想到以前作SF的兩位長輩, 鼓組擺放位置的意義.
手上沒有SF的規格書, 純猜測. SF只有128個bank, 意指SB Live只吃bank select的coarse部分, 除了ch10(9)會將fine的部分對應至coarse, coarse則對應至program, program對應到note. 用Vienna看好像也是這樣...我想起bennetng大的其中一篇文章"Creative SoundFont Bugs", 提到pitch變化的時候出來的會是program變化的情形, 或許可以用剛才的推論來說明這個現象可能不是bug而是規格上的限制
SF的bank猜測
版主: DearHoney
Re: SF的bank猜測
sf2 檔的規格是 128 個 program, 每個 program 有 128 個 bank, 以 bank select MSB 選擇, 所以每個單一 sf2 檔最大可以容納 16384 種音色 (不包括鼓), 所以這是 sf2 檔本身規格的問題, 不是 bug, 這個限制, 無論用任何 driver, 都是無法突破的, 除非把 sf2 檔的規格升級至可以容納 2097152 (不包括鼓) 種音色... 即 128 Program*128 Bank Select MSB *128 Bank Select LSB
至於 "pitch變化的時候出來的會是program (其實是 key number) 變化的情形"和 bank select 無關, 那個令 pitch 變化的參數是 RPN, sb 吃的是 RPN MSB/LSB 和 NRPN MSB/LSB, 和 Data Entry MSB/LSB, 所以是通吃, 以前我用 win98 的 Liveware 3.0 和 win2000 的 Liveware 2000 都不會有"pitch變化的時候出來的會是 key number 變化的情形"的問題, 我錄的 ogg 檔, 沒有問題的其實就是用舊版 driver 錄的, 所以這很明顯是新 driver 的問題
用編曲軟體可以很容易看出來
http://bennetng.kc-studio.com/RPN.png
留意左面的紅框, Applause (拍手聲) 右面打橫的四枝棒就是原來四種不同聲調的拍手聲, 下面打直的紅色棒就是用來控制音調的 RPN 參數... 出錯的示範檔會出現像車聲 (Car-Pass) 和尖叫 (Screaming)是因為 driver 誤把 RPN 參數轉換成 key number, 至於右邊 Event List 裡則列出了整個 midi 檔用了什麼參數, 包含 MSB 和 LSB 的 RPN 和 Data Entry 參數
順帶一提, 用 kx driver (建議 3538h 或更舊) 的話也不會有這個 bug 的
至於 "pitch變化的時候出來的會是program (其實是 key number) 變化的情形"和 bank select 無關, 那個令 pitch 變化的參數是 RPN, sb 吃的是 RPN MSB/LSB 和 NRPN MSB/LSB, 和 Data Entry MSB/LSB, 所以是通吃, 以前我用 win98 的 Liveware 3.0 和 win2000 的 Liveware 2000 都不會有"pitch變化的時候出來的會是 key number 變化的情形"的問題, 我錄的 ogg 檔, 沒有問題的其實就是用舊版 driver 錄的, 所以這很明顯是新 driver 的問題
用編曲軟體可以很容易看出來
http://bennetng.kc-studio.com/RPN.png
留意左面的紅框, Applause (拍手聲) 右面打橫的四枝棒就是原來四種不同聲調的拍手聲, 下面打直的紅色棒就是用來控制音調的 RPN 參數... 出錯的示範檔會出現像車聲 (Car-Pass) 和尖叫 (Screaming)是因為 driver 誤把 RPN 參數轉換成 key number, 至於右邊 Event List 裡則列出了整個 midi 檔用了什麼參數, 包含 MSB 和 LSB 的 RPN 和 Data Entry 參數
順帶一提, 用 kx driver (建議 3538h 或更舊) 的話也不會有這個 bug 的
其實如果想在 vienna 改動 sf2 檔令 GS 的雙鼓組 midi 可以正常播放的話, 是不可能的, 唯一的方法是修改 midi 檔, 因為 GS 是用 sysx 選擇雙鼓組的, XG 才是用 bank select MSB 127 (16256)選擇 , 我把 GS 鼓組放在 bank select MSB 125 (16000) 是方便我自己使用 GS 雙鼓組而已, 這是引起你誤會的主因吧?
放多一首 XG midi 給你參考, 用了 XG 雙鼓組和 XG SFX Kit, 總共三個鼓組的, 但 Creative 不吃 bank select LSB 和 XG 的修改音色參數, 所以和 S-YXG50 比起上來完全不同
http://bennetng.kc-studio.com/oxycute.zip
SBLive + AnotherXG v2.1 + Creative 522 (A2 value) driver 錄製
...用 kx 聽的話, 又會面目全非
放多一首 XG midi 給你參考, 用了 XG 雙鼓組和 XG SFX Kit, 總共三個鼓組的, 但 Creative 不吃 bank select LSB 和 XG 的修改音色參數, 所以和 S-YXG50 比起上來完全不同
http://bennetng.kc-studio.com/oxycute.zip
SBLive + AnotherXG v2.1 + Creative 522 (A2 value) driver 錄製
...用 kx 聽的話, 又會面目全非
坦白說是其他原因. 我最初假設Roland跟Yamaha的鼓組都是類似的配置方式, 所以那個"insane tuning"才會發生在作法不同的SF上.
以下若有錯請指正
---
重新看了一些GS的曲子後發現她其實跟SF的方式類似, bank select MSB為0(不過LSB也是), 再限制ch10以外不能對應鼓組, 不然根本分辨不出是GM的128個音色還是鼓聲了...所以才需另外用SysEx來放ch10以外的鼓組. 根據這首XG的曲子則判斷Yamaha是因為鼓組的MSB不是0(126, 127)便無ch10的限制.
---
但最終還是確定了一件事, 也就是無論哪一家換鼓組一定是用program change指令, 並非Yamaha有空出的LSB就可以用來切換...自己關起來想錯了也不知, 還是有人可以請教比較好點
以下若有錯請指正
---
重新看了一些GS的曲子後發現她其實跟SF的方式類似, bank select MSB為0(不過LSB也是), 再限制ch10以外不能對應鼓組, 不然根本分辨不出是GM的128個音色還是鼓聲了...所以才需另外用SysEx來放ch10以外的鼓組. 根據這首XG的曲子則判斷Yamaha是因為鼓組的MSB不是0(126, 127)便無ch10的限制.
---
但最終還是確定了一件事, 也就是無論哪一家換鼓組一定是用program change指令, 並非Yamaha有空出的LSB就可以用來切換...自己關起來想錯了也不知, 還是有人可以請教比較好點
XG 比較方便, 不論什麼 channel, 只要 bank 用對了, 就可以用鼓
GS... 它的理念是一次過用很多部機的音色 (SC-55/88/88Pro/88x0) 它的 bank 其中一個用途就是用來選取不同機種的音色, 而且是 MSB/LSB 一起用, 所以是會有點複雜啦, 比如說我採譜的其中一首 GS MIDI, 除了雙鼓組外, 還同時用了不同機器的音色
http://bennetng.kc-studio.com/MyMusic/MyMusic.html
R-TYPE Delta Last Dance! 那首
設定是這樣的
http://bennetng.kc-studio.com/delta-lastdance.png
至於把 MSB/LSB 都設成 0, 其實是強制使用 GM 音色的意思, 因為 GM 沒有 bank
GS... 它的理念是一次過用很多部機的音色 (SC-55/88/88Pro/88x0) 它的 bank 其中一個用途就是用來選取不同機種的音色, 而且是 MSB/LSB 一起用, 所以是會有點複雜啦, 比如說我採譜的其中一首 GS MIDI, 除了雙鼓組外, 還同時用了不同機器的音色
http://bennetng.kc-studio.com/MyMusic/MyMusic.html
R-TYPE Delta Last Dance! 那首
設定是這樣的
http://bennetng.kc-studio.com/delta-lastdance.png
至於把 MSB/LSB 都設成 0, 其實是強制使用 GM 音色的意思, 因為 GM 沒有 bank
原來如此, 也就是說GS的LSB是選擇特定機型的MAP, 而MSB的用途則像SF一樣
. 因此先前說的LSB=0的情況應該是選到本機的MAP
(例如送到SC-88Pro的資料指定LSB=0/3會是88Pro MAP)
大致上了解您所說的了, 感謝m(_ _)m 這裡是判斷用的圖
>>把 MSB/LSB 都設成 0, 其實是強制使用 GM 音色的意思
同意但是感覺容易讓人誤會(想成MSB/LSB都要是0才是GM音色), 因LSB不為0的話等於是其他MAP的GM部分, 我猜SC面板上的MAP選擇鍵就是對送進來的LSB作處理
. 因此先前說的LSB=0的情況應該是選到本機的MAP
(例如送到SC-88Pro的資料指定LSB=0/3會是88Pro MAP)
大致上了解您所說的了, 感謝m(_ _)m 這裡是判斷用的圖
>>把 MSB/LSB 都設成 0, 其實是強制使用 GM 音色的意思
同意但是感覺容易讓人誤會(想成MSB/LSB都要是0才是GM音色), 因LSB不為0的話等於是其他MAP的GM部分, 我猜SC面板上的MAP選擇鍵就是對送進來的LSB作處理