跳轉到內容

數字音樂創作/排序

來自華夏公益教科書

排序是指將一系列精確計時命令串聯起來,以向計算機發出聲音指令。這些指令可以是“播放音訊樣本”或“在此 MIDI 通道上向此 MIDI 埠傳送一個音符啟動命令”或“為一個 MIDI 通道選擇樂器”。在過去,排序器聲音源之間有著明確的區分:排序器知道如何記錄、編輯和回放 MIDI 命令序列,但本身無法錄製或回放聲音,而聲音源則知道如何響應 MIDI 命令併產生實際的聲音。如今,大多數應用程式至少可以完成這兩者的某些功能。

為簡化起見,我們將從一對應用程式開始,並將它們用於明確分離的功能:Qtractor 用於 MIDI 排序,而 Qsynth 用於產生聲音。

Qsynth 實際上是命令列應用程式 FluidSynth 的 GUI 前端,後者能夠載入定義要產生的聲音的 SoundFont 檔案。特別是,我們將從fluid-soundfont-gm包中載入 SoundFont 檔案,該檔案應安裝為/usr/share/sounds/sf2/FluidR3_GM.sf2。這將為我們提供一套高質量的 通用 MIDI 樂器。

這些應用程式將需要 JACK 執行,正如您之前瞭解的操作步驟一樣。

記譜法:傳統與鋼琴卷軸

[編輯 | 編輯原始碼]

西方音樂發展了自己的延續數百年的傳統 音樂記譜法,並且有一些作曲家更喜歡使用這種記譜法。另一方面,這種記譜法寫起來很複雜,雖然像 LilyPond 這樣的計算機軟體能夠生成高質量的記譜法,但在創作過程中,人們通常認為這種記譜法在實踐中不可行:例如,著名的作曲家會發明自己的速記符號,除了他們自己的熟練抄寫員之外,其他人無法理解,這說明這種記譜法寫起來是多麼繁瑣!

一個更簡單的替代方案是鋼琴卷軸記譜法,其中音符以矩形塊的形式佈置在一個二維圖表上,時間在水平軸上,音高在垂直軸上,塊的寬度表示其持續時間。對於人類來說,這種格式非常容易理解,對於計算機軟體來說,也非常容易建立、編輯和顯示。它是 Qtractor 和其他一些音樂應用程式使用的記譜法。

Qsynth 主視窗

這是您首次啟動 Qsynth 時的樣子。請注意底部顯示“Qsynth1”的小標籤:這實際上是一個引擎的名稱,Qsynth 使用該名稱來稱呼一個執行中的 FluidSynth 例項。相同的 Qsynth GUI 可以控制多個引擎,這些引擎在 JACK 中會顯示為具有自己的音訊輸出和 MIDI 輸入埠。所有這些控制旋鈕(以及左側的按鈕)都適用於當前活動的引擎標籤。

引擎設定

當您單擊第一個標籤旁邊的“+”圖示(或單擊現有引擎的“設定...”按鈕)時,您將看到此設定對話方塊。特別注意 MIDI 設定標籤(如所示),您可以選擇 MIDI 驅動程式:您可以從此選單中選擇“alsa_seq”項,以使 MIDI 輸入埠顯示在 QjackCtl 的連線視窗的“ALSA”標籤下,或者選擇“jack”,以使 MIDI 輸入埠顯示在“MIDI”標籤下。在可能的情況下,最好將專案放在“MIDI”連線標籤下,並依靠a2jmidid將所有剩餘的“ALSA”連線重定向到該標籤。

您可以透過右鍵單擊標籤名稱並從選單中選擇“刪除”來刪除引擎。請注意,您無法刪除第一個引擎。

載入 SoundFont

但是在 FluidSynth 能夠發出聲音之前,它需要載入 SoundFont。在這裡,在引擎設定視窗的“Soundfonts”標籤中,我單擊了“開啟...”按鈕,並選擇了之前提到的 FluidR3 通用 MIDI SoundFont。

預設通道預設

接下來,單擊此引擎的“通道”按鈕,您應該看到預設預設,其中“雅馬哈三角鋼琴”聲音被分配給 MIDI 通道 1,其餘通道未分配。

現在,如果您載入一個虛擬鍵盤應用程式,例如之前描述的vmpk或 JACK 鍵盤,並將音訊和 MIDI 連線方式與之前使用 ZynAddSubFX 的方式類似,您應該能夠使用此預設鋼琴聲音彈奏一些音符。

右鍵單擊此視窗中的任何通道線,將出現一個選單,其中包含“編輯...”、“取消設定”和“重新整理”專案。“編輯...”專案會彈出一個對話方塊,允許您將 SoundFont 檔案中的任何樂器分配到此通道,而“取消設定”會清除樂器分配。(推測“重新整理”是為了使顯示同步,以防 FluidSynth 例項透過其他通道更改其設定。)嘗試在通道 2 上選擇另一個聲音,然後在您的虛擬鍵盤應用程式中,在通道 1 和 2 之間切換,每次彈奏一些音符,並聆聽差異。

Qtractor 在首次啟動時的樣子

首次啟動 Qtractor 時,其主視窗應類似於此。Qtractor 中的專案將包含多個檔案

  • 一個會話檔案,副檔名為.qtr。它包含專案的總體設定。會話將包含一個或多個要同時播放的音軌(代表樂曲中不同的樂器部分);有關這些音軌的資訊也將儲存在會話檔案中。
  • 一個或多個片段檔案,它們可以是兩種型別之一:標準 MIDI 檔案用於 MIDI 資料,或 Ogg Vorbis 檔案(預設情況下)用於音訊資料。會話中的每個音軌都將引用一個或多個片段,這些片段將按順序播放。同一個片段可以在音軌中的不同位置(或在不同音軌中)多次重複使用。這允許您在樂曲中建立重複部分,以便對片段的任何編輯都會立即在使用該片段的所有位置生效,而無需在多個位置進行編輯。

我建議您在開始一個新專案時,首先為它建立一個新目錄。然後將.qtr檔案儲存在此目錄中,您建立的所有關聯片段檔案都將與它一起儲存。這可以讓專案保持整潔,並有助於避免不同專案所屬的片段檔案之間出現混淆。因此,新專案的初始步驟是

  • 建立一個專案目錄。
  • 啟動 Qtractor,或使用它的檔案→新建選單項開始一個新的、最初為空的專案。
  • 調出檔案→屬性對話方塊。在其中,您為會話分配一個名稱並指定會話目錄,片段檔案將儲存在該目錄中;為會話輸入任何您喜歡的名稱,而對於後者,選擇您之前為該專案建立的目錄。在單擊確定之前,您可以隨意調整會話屬性。
  • 接下來,執行檔案→另存為...,以建立初始.qtr檔案。(您可以在對專案進行後續更改(如新增實際音軌和片段)後隨時再次儲存;此初始儲存只是為了告訴 Qtractor 將專案放在哪裡。)彈出的檔案選擇器將預設到會話目錄。接受此目錄預設值,併為會話檔案選擇一個合適的名稱;預設情況下使用您之前輸入的會話名稱,並且使用該名稱是有意義的。
  • 現在,您可以繼續向專案新增實際的音軌和片段。

載入樂器定義

[編輯 | 編輯原始碼]

在實際開始建立任何音軌之前,如果 Qtractor 能夠為樂器音庫分配名稱,則會很有幫助。您可以透過選擇檢視→樂器選單項來完成此操作,這將調出一個類似於右邊的視窗,但最初為空。單擊“匯入...”按鈕,然後選擇與您載入到 Qsynth 中的相同的 FluidR3_GM SoundFont 檔案。這將用資訊填充所有列表,其中大部分資訊僅可檢視,不可單擊(除了透過單擊“>”符號來展開/摺疊組之外);您似乎只能單擊右上角列表中的檔名條目,以便重新排序或刪除它們。

JACK 連線

[編輯 | 編輯原始碼]

如果您檢查您的 JACK 連線,您會發現 Qtractor 已將其音訊自動連線到系統輸出。但是,其 MIDI 埠仍處於未連線狀態。Qtractor 似乎不支援原生 JACK MIDI 連線,因此您將在 QjackCtl 的連線視窗的“ALSA”標籤下找到它,或者在a2j組中找到它,該組由a2jmidid在“MIDI”標籤下管理。

在右側的插圖中,我們依靠a2jmidid將 Qtractor 的源埠帶入“MIDI”選項卡,因為我們配置了 Qsynth 本地使用 JACK MIDI。另一種選擇是重新配置 Qsynth 以使用 ALSA MIDI,然後可以在“ALSA”選項卡下建立連線,而無需a2jmidid. 請記住,MIDI 連線型別的選擇可以在 Qsynth 中為每個引擎單獨設定。

開始一個音軌

[編輯 | 編輯原始碼]

現在,讓我們為我們的專案新增一個音軌。選擇音軌→新增音軌... 選單項,應該會出現一個類似這樣的對話方塊。

為型別選擇 MIDI,將出現其他相關選項。

在 MIDI/樂器部分,點選顯示“(無樂器)”的彈出選單,您會看到還有一個選項“FluidR3_GM”,這是由於您之前從該檔案中載入了樂器名稱。選擇它,並注意“音庫”欄位現在顯示“FluidR3_GM 音庫 0”。該音庫包含主要的通用 MIDI 樂器,這將是可以的。

現在,您可以從該音庫中選擇一個樂器用於您的音軌。

我發現音軌樂器選擇不可靠。當您重新開啟先前儲存的專案時,音軌樂器分配不會正確傳播到合成器。也許這是因為 MIDI 連線尚未建立,因此音軌分配 MIDI 命令實際上正在傳送,但正在丟失。因此,我發現最好在片段中放置顯式的 MIDI 程式變更命令。

當您對設定感到滿意時,點選確定,Qtractor 的主視窗應看起來像這樣。

注意上面視窗中標記的以下兩個重要區域

  • 音軌資訊區域,以紫色勾勒,顯示有關音軌的一些資訊,以及提供 R(ecord)、M(ute) 和 S(olo) 按鈕。您可以隨時透過選擇音軌→音軌屬性... 選單項或雙擊該資訊區域來更改音軌設定。
  • 時間線區域,以橄欖綠勾勒。這顯示了構成每個音軌的實際片段,按時間排列。
  • 時間標尺,以橙色勾勒。

視窗中顯示的區域之間的空間分配只是預設值:您可以透過拖動它們之間的邊界來更改它們的大小比例。

注意最初位於時間線區域左側邊緣的紅色垂直線,其頂部有一個小三角形:這是“播放頭”,顯示片段中要開始播放的當前時間位置。您可以透過在時間線區域或時間標尺的適當位置按住 Ctrl 鍵單擊或 Shift 鍵單擊滑鼠左鍵或中鍵來將其移動到任何時間位置。

建立一個片段

[編輯 | 編輯原始碼]

現在讓我們為您的音軌新增一個片段。透過在音軌資訊區域或時間線區域中點選音軌,確保音軌已被選中。選擇片段→新建... 選單項,將出現一個新視窗。

音符區域
數值區域
事件區域

以下是該視窗的主要區域

  • 藍色框架中的區域是一個虛擬鍵盤,您可以在其中點選聽到所選樂器的音調,無論片段中是否有任何音符,並且不會對片段進行更改。
  • 橙色顯示的音符區域是您可以在其中檢視組成片段的音符,並透過點選新增音符和編輯音符的地方。請注意二維顯示;縱軸上的音高(對應於虛擬鍵盤上的鍵)和橫軸上的時間。視窗頂部附近以相同顏色框起來的選單允許您選擇“按鍵按下”而不是“音符開啟”事件,但我不確定這樣做的效果,因此將其保留為“音符開啟”。
  • 紫色顯示的數值區域顯示了可以為每個音符調整的各種 MIDI 通道值:視窗頂部附近以相同顏色框起來的相應選單允許您選擇要在此視窗中顯示和編輯的 MIDI 事件型別:音符力度、音高彎曲等。您一次只能檢視和編輯一種事件型別。
  • 右側以綠色框起來的大區域顯示了片段中所有 MIDI 事件的低階顯示。在這裡,您可以對每個事件的引數進行更詳細的調整;例如,如果您願意,您可以輸入控制器引數的確切數字。

注意音符區域右側的垂直捲軸:它允許您選擇在該區域和虛擬鍵盤上可見的音高範圍。還請注意該捲軸下方“+”和“-”放大鏡圖示;它們允許您放大和縮小音高範圍。

在數值區域下方是一個水平捲軸,它控制片段中可見於音符區域和數值區域的時間範圍。同樣,它有放大鏡圖示,允許您放大和縮小時間範圍。

滑鼠控制:滾動滑鼠滾輪可在音高軸上滾動,而搖動滾輪可在時間軸上滾動。按住 Ctrl 鍵並滾動滾輪可同時放大音高和時間。

您的第一個音符!

點選音符區域內:您將聽到一個音符的聲音,並且將出現一個矩形條,代表您剛剛建立的音符。在右側的事件區域中也有該音符事件的條目。

如果您將滑鼠懸停在該條的內部部分上,您將看到指標變為手形,並且音符的一些資訊將出現在氣泡中。您可以在此點點選並拖動以重新定位音符,既可以在音高上,也可以在時間上。

如果您將滑鼠懸停在該條的左右邊緣上,您將看到指標變為水平雙箭頭。這允許您僅在時間上重新定位音符的開始或結束,同時保持另一個端點(和音高)相同。

您可以使用滑鼠左鍵在空白區域點選以放置另一個音符,或點選現有音符以選擇它。Shift 鍵點選將另一個音符新增到選擇中,或 Ctrl 鍵點選將其從選擇中移除。按 Del 鍵刪除所有選定的音符。您還可以拖動選定的音符以將其在音高上向上或向下移動,或在時間上向左或向右移動。您可以使用 Ctrl+Z 撤消上一步操作,或使用 Ctrl+Shift+Z 重做上一步操作。每次新增、點選或移動音符時,Qtractor 都會透過播放音符提供聲音反饋。

播放頭和編輯頭

[編輯 | 編輯原始碼]

片段視窗有一個時間標尺,就像 Qtractor 主視窗一樣。它還顯示相同的紅色垂直線,標記當前播放位置,與 Qtractor 主視窗的時間位置相同。在其中一個視窗中設定播放頭位置的相同滑鼠點選將在另一個視窗中起作用。

在時間標尺上點選並拖動,而不按住任何修飾鍵,將設定編輯範圍;這由藍色垂直線標記,用於標記編輯→選擇→範圍命令(Ctrl+R)的限制。

另請參閱

[編輯 | 編輯原始碼]
華夏公益教科書