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 的