如何在放開琴鍵後,讓取樣音量維持固定一段時間
若要在放開琴鍵後,讓取樣音穩定播放固定時間,請延遲其 MIDI note-off 訊息,同時讓取樣器的振幅包絡維持在延音電平。只有延遲時間結束後,才讓包絡進入釋放階段。調高一般的 Release 控制會產生漸弱效果,而非穩定的平台。有些樂器提供專用的放鍵後延持功能,但「Hold」在不同樂器中的意思並不一致。FabFilter One:包絡產生器。
本指南適合想在抬起手指後,仍讓取樣音穩定播放一段時間(例如兩秒)的鍵盤手或製作人。如果取樣器沒有這項功能,指南會說明如何找到正確的控制項,並提供完整的 Logic Pro Scripter 實作。
放開琴鍵後,究竟應該發生什麼事?
調整控制項前,先定義時間安排。預期行為是:按住琴鍵時播放取樣音,放開琴鍵後,讓音量維持在既定電平一段指定時間,然後停止播放或開始短暫淡出。無論一開始按住音符多久,這段時間都必須從放開琴鍵時開始計算。
以兩秒的設定為例,在 0.35 秒時放開琴鍵,應於 2.35 秒時開始結束播放;在 3 秒時放開,則應於 5 秒時開始結束播放。這些是時間安排的範例,並非實測結果。如果設定總是在最初按下琴鍵兩秒後就結束播放,那麼它處理的是另一種需求。
也要區分包絡增益固定與可聽音量固定。平坦的振幅包絡會保留取樣音本身的動態。如果錄音逐漸淡出、包含靜音,或已播放到結尾,持續開啟包絡也無法提供連續穩定的聲音。請先使用具有延音效果的錄音,或合適的重複播放片段。
為什麼 Release 和 Hold 常常達不到預期效果?
在 Logic Pro Sampler 中,Sustain 指定按住琴鍵時維持的電平;Release 則指定從該電平降至零所需的時間。AHDSR 中的 Hold 階段位於 Attack 之後、Decay 之前;它不是抬起手指時啟動的計時器。ENV 1 控制振幅。這些定義說明了為什麼延長 Release 或最初的 Hold 階段,無法直接產生所需的平台。Apple:使用 Sampler 包絡。
真正的放鍵後延持功能運作方式不同。FabFilter One 文件說明,Hold 會額外延長一段時間,在此期間,其包絡會將已放開的琴鍵視為仍按住;之後才進入 Release。這就是查閱使用手冊時要尋找的行為。下方以 FabFilter One 說明控制項的定義;它並非下方實作的取樣播放方式。FabFilter One:包絡產生器。
Ableton 的 Drum Sampler 文件說明了為何需要確認控制項標籤的含義。文件將 Trigger 模式下的 Hold 定義為相對於起音峰值的時間,同時也描述了放開音符後持續播放的行為。Gate 模式則會在放開後淡出,而且 Hold 在該模式中會停用。這些描述表示,在將 Trigger 模式的 Hold 值視為從放開琴鍵開始計算的時間之前,應先進行時間測試。Ableton Live 12:Drum Sampler。
應該選擇哪種方式?
| 可用功能 | 實際做法 |
|---|---|
| 使用手冊明確指出延持時間從放開琴鍵時開始計算 | 使用該功能,並將延音電平設為穩定值。 |
| Hold 從 Attack 後開始,或播放時間從觸發時固定計算 | 將 note-off 延遲一段從放開琴鍵時開始計算的時間。 |
| 你正在編輯現有的 MIDI 演奏 | 將每個音符的結束時間延後所需時長,再使用短暫的 Release。 |
| 原始錄音太早淡出或結束 | 調整音符時間前,先準備具有延音效果的音源或循環片段。 |
這份判斷指南是根據兩種控制功能的區別整理而成:取樣器塑造振幅,而 MIDI 音符時間則決定何時要求進入釋放階段。只延遲 note-off,就能保留原本的 note-on 時間。若同時延遲兩種訊息,整個音符只會往後移。
如何在 Logic Pro 中準備取樣音與包絡?
建立一條使用 Sampler 的軟體樂器軌道,並載入取樣音。Apple 說明了如何將音訊拖入 Sampler 的導覽列,以建立對應音區。在 Zone 面板中,你可以調整播放邊界、循環播放點和循環交叉淡化。選擇一段相對穩定的片段供延音播放,並聆聽數次重複播放的效果。Apple:使用 Sampler 建立取樣樂器。
初次測試時,請使用一個以原始音高播放的延音取樣音。如果沒有設定循環播放,請確認其長度足以涵蓋整個測試:琴鍵按住的時間、額外的延持時間,以及結尾。短錄音無法支援任意長時間的按鍵演奏。
在 Modulators 中選取 ENV 1,並選擇 AHDSR。將 Delay 和 Hold 設為零,Attack 設為短時間,Sustain 設為最大值,並將 Release 設為短暫收尾。Sustain 設為最大值時,Decay 不會影響電平。這些設定可作為診斷的起點;之後若音色需要較長的 Attack,仍可保留較長設定。Apple:使用 Sampler 包絡。
如何用 Scripter 將 note-off 延遲兩秒?
將 Scripter 插入軌道的 MIDI FX 區段,並放在取樣器之前。開啟其 Script Editor,將現有腳本替換為下方完整程式,然後點擊 Run Script。Apple 說明了這套編輯與執行流程。Apple:使用 Scripter Script Editor。
此程式需要 Logic Pro 的 Scripter 環境,該環境會提供 MIDI 事件類別和排程方法。程式不需要匯入模組或音訊檔案路徑。其輸入是一般的鍵盤 note-on,後接 note-off;也會將速度為零的 note-on 視為另一種 note-off 表示方式。Apple 說明了這些事件類型和 sendAfterMilliseconds()。Apple:使用 JavaScript Event 物件。
// Complete Logic Pro Scripter program.
// Additional hold after physical key release, in milliseconds.
var HOLD_MS = 2000;
function HandleMIDI(event) {
if (event instanceof NoteOff) {
event.sendAfterMilliseconds(HOLD_MS);
} else if (event instanceof NoteOn && event.velocity === 0) {
var off = new NoteOff(event);
off.sendAfterMilliseconds(HOLD_MS);
} else {
event.send();
}
}
將 HOLD_MS 改為其他非負時間,例如 750,表示四分之三秒。此腳本會立即傳送 note-on,並在之後排程傳送 note-off。其他輸入訊息會直接通過。程式不會立即傳送原始 note-off 的副本,因為那會讓取樣器過早進入釋放階段。
已使用簡單的 JavaScript 模擬程式檢查事件路由分支:note-on 和控制器事件會立即通過,而兩種 note-off 表示方式都會延遲 2,000 毫秒排程。這只能驗證路由邏輯,並未測量 Logic Pro 的音訊時間,也未實際聆聽取樣器。
如何確認延持時間從放開琴鍵時開始計算?
請在未啟用延音踏板輸入且旁通音訊效果的情況下,進行以下測試。一次只測試一個音符,並等待每次聲音結束後,再重複彈奏相同音高。
- 將
HOLD_MS設為2000,然後執行腳本。 - 快速按下一個琴鍵。聆聽結尾前是否有一段穩定延續的聲音。
- 按住同一個琴鍵約三秒,再放開。
- 確認放開後的聲音仍延續約兩秒。
- 將
HOLD_MS改為500,再次執行腳本,並重做上述兩種彈奏方式。
若要更仔細地檢視,可以錄下取樣器的輸出,並將聲音結尾與原始 MIDI 音符的結束時間相比。以琴鍵按住三秒、延長兩秒為例,釋放階段應約在 note-on 後五秒開始。如果你加上短暫的包絡 Release,最終靜音時間會晚於平台結束時間。
例如,兩秒的平台再加上範例中的 10 毫秒 Release,放開琴鍵後的名義收尾時間為 2.01 秒。請先決定你所要求的時長是「開始淡出的時間」,還是「完全靜音所需的時間」,再據此調整。
如果取樣音淡出、提早停止,或重新觸發不如預期,該檢查什麼?
如果聲音在延持期間逐漸變小,請暫時使用沒有額外振幅調變或效果的穩定音源進行測試。比較按住琴鍵時與放開後的播放效果。如果兩者都以相同方式淡出,請檢查錄音或循環設定,而不是延長 MIDI 延遲時間。
如果播放提早結束,請檢查取樣音的結尾位置和循環設定。如果播放時間比預期長,請縮短取樣器的 Release,並在沒有音效尾音的情況下測試。每次只改變一個因素,才能分辨排程的音符結束時間與之後產生的音訊。
重複音符需要另外檢查。這個簡單腳本不會取消已排程的 note-off,也不會為每個聲部指定唯一識別碼。因此,在延遲的 note-off 到達前,如果你在同一 MIDI 通道上重播相同音高,可能會造成非預期的截音,結果取決於樂器處理聲部的方式。使用此實作時,請等音符播放完畢再重播相同音高;若要快速演奏重複音符,則需要使用能管理這些重疊狀況的處理器。
短觸鍵與長按測試都能在放開後產生相同延持時間時,請將 Scripter 設定與樂器音色一併儲存。保持音源具有延音效果、包絡電平穩定,並讓收尾時間符合你想要的音色。這三項設定能讓延遲的 note-off 產生實用且可重複的延持效果。
