在之前我已經做過一部影片跟一個直播,教你如何使用自由軟體 Jitsi Meet 來上遠端音樂課,如果網路狀況不錯,主機架的距離也不會太遠的話,其實 Jitsi Meet 的延遲時間還蠻低的,如果是平常講話或者是上音樂課的話,完全不會有不自然的感覺。
但是如果要用一般的遠端通訊軟體,來一起演奏音樂,一般通訊軟體的延遲時間就還是不夠快了。我跟檸檬卷在影片中嘗試了,兩個人能不能透過 Jitsi Meet一起打拍子?答案是「不行」。
一般的遠端視訊軟體,不管你是用 Google meet、Zoom、甚至是 Jitsi Meet,就算是在網路條件非常好的時候(例如我們測試的主機已經是中華電信的企業專線了),也都至少會有個 150 毫秒(0.15 秒)以上的秒差。0.15 秒聽起來好像很短嘛,但是如果是換算成音樂上的單位的話,0.15 秒的差距,在節拍器速度是 100 的時候,就已經是一個 16 分音符的差距了。
如果兩個人遠端一起演奏音樂,互相的時間差距已經來到一個 16 分音符的話,這樣是根本沒有辦法演奏的。我自己認為,如果要能夠遠端一起舒服地演奏音樂,延遲必須要降到 20 毫秒左右(0.02 秒)才行,其實連 20 毫秒都已經是有一點點勉強了。
毫秒必爭的旅程
從你坐在家裡,彈下你的鋼琴鍵盤,到遠端的朋友的耳朵聽到你發出的聲音,這中間會經過超多東西,這中間每一個環節都會造成延遲,只要中間有任何一個環節延遲太久,就會造成我們沒有辦法遠端合奏了。
假設我現在彈的是數位鋼琴,我把鍵盤按下去之後,就會有電流從後面的訊號線流到我的混音器,我的混音器會把這些電流的訊號,轉換成電腦可以辨識的數位訊號,透過 USB 送到電腦裡面去。光是這一段路,從我鍵盤按下去,到電腦收到聲音的數位訊號,在我的音效介面大概就要花 5 毫秒了。
那如果你用的是 Windows 筆電的內建音效,可能光是鋼琴到電腦這一段就已經花掉超過 20 毫秒了。用 Windows 的人大概只有兩種選擇:一個是裝裝看低延遲的通用驅動程式像是 ASIO4ALL,可能會減少一點點延遲;更好的方式是買一個好一點的外接音效介面。
你的電腦收到了聲音之後,接著就是要把它傳到網路上去嘛!但是你的電腦沒有辦法瞬間就把收到的聲音直接丟到網路上面去,你的聲音還需要經過壓縮跟編碼,才有辦法變成網路封包丟出去。
大部分的聲音編碼器,都需要把聲音分成一小段一小段的,再把每一段打包壓縮,以我們平常最常見的 MP3 格式為例的話,它是把大約 26 毫秒的聲音包成一包,然後才能送出去。
26 毫秒一包根本就太慢了!你看喔,到目前這裡為止,如果你使用 Windows 筆電的內建音效驅動程式,然後再加上用 MP3 作為你的聲音編碼器的話,光是你的聲音要送出家門,就已經要花掉快要 50 毫秒了,根本就來不及。
接下來,聲音透過網路線出了你的家門之後,就要跑到一個中心主機,就算是我們的網路訊號可以以光速傳輸,每 300 公里也要花掉 1 毫秒。
但是實際上的網路速度是比光速慢得多,例如說我現在在台北,想要連到 2100 公里外,在日本東京的主機,理論上光速只要花 7 毫秒,但是實際上的單趟連線時間差不多是快要 20 毫秒。所以幾乎可以說,如果中央主機是架在國外的話,要舒服地遠端合奏幾乎不可能。
聲音到了主機之後,主機要把每一個人傳過去的壓縮聲音檔解開,全部混在一起,然後再把壓縮起來傳給每一個人,同樣的,如果我們在這邊也是用一般的 MP3 的話,光是解開再重新壓縮回來,就又要浪費掉 50 毫秒了。
最後中央主機把它混合好、壓縮好的聲音,再透過網路傳給每一個參與合奏的人,然後每一個人自己的電腦又要把剛才的壓縮檔解開,透過他的音效介面轉換成電流訊號,才能從喇叭播出來,從喇叭播出來的聲音,還需要經過空氣傳到人的耳朵。
那要在網路上能夠順利遠端合奏,就是要把剛剛這一大長串流程花的時間,縮短到 20 毫秒(0.02 秒)左右才能達成。
商業版的遠端合奏軟體
我小小研究了一下,目前關於遠端合奏比較有名的商業解決方案,一個是日本 Yamaha 出品的 Syncroom,另外一個是西方的 JamKazam。
Yamaha Syncroom 目前是可以免費使用的,而且我在網路上也看過其他 YouTuber 用,效果似乎不錯。但是它唯一的問題是,它需要依靠 YAMAHA 在日本的中心主機才能運作,那如果你不是住在日本的話,光是網路距離造成的延遲,就已經會讓你體驗不夠好了。
他們的官網也有說,這個服務是只給日本國內的用戶,你在海外的話要用也可以用,但是他不保證你的使用體驗。
另外一個 JamKazam,免費版一個月只能最多使用四小時,而且根據使用條款,免費版用戶是禁止在上面教學以及上音樂課的。其實光是這些限制就會讓我不想用了,所以我沒有測試過它。
還是自由軟體最香
身為一個愛好自由、不喜歡被別人控制的頻道,好和弦當然是要跟你推薦自由軟體的解決方案。為你介紹「Jamulus」,它是一個完全免費、完全自由、又超級容易使用的線上合奏軟體。
它有廣泛的作業系統支援,Mac/Linux/Windows/Android 都可以用;內建的聲音編碼器是超低延遲、也是自由軟體的 OPUS;它還有很聰明的、對抗訊號不穩的自動延遲調節系統;更重要的是,它不需要其他公司架好中央主機給你用,任何一個人都可以按一個鍵就變成中央主機,然後所有的人連到他那邊去就可以了。
Jamulus 的安裝跟使用都非常非常簡單,簡單到我根本就沒什麼好做教學的。你就是到官網 jamulus.io 下載你的作業系統的版本,我在這邊是用 Mac 來示範,但是其他作業系統應該也是差不多的。下載之後你會發現它包含了兩個 App,一個叫做「Jamulus」就是我們的主程式,另外一個叫做「JamulusServer」可以把這台電腦當成中央主機。
把兩個 App 都安裝好,我們先打開「Jamulus」這個 app,按「Settings」來設定一下,在「My Profile」這一頁裡面設定你的暱稱(Wiwi)、樂器(像是我的話就是鋼琴)、國家(沒錯,台灣🇹🇼是一個國家)、城市(Taipei City),還有我的演奏程度(像我的話就是初學者嘛,所以我就選 Beginner)。
在第二頁「Audio/Network Setup」,你就選擇你要用來播放和錄音的音效裝置。下面的 Audio Channel 選到「Stereo」所以你可以有立體聲,其他的選項基本上就照預設值就可以了。
就這樣子,把設定視窗關掉,按主畫面的「Connect」,它就會顯示現在開放中的公開主機列表,你可以從列表裡面看到那台主機跟你的延遲時間有多少,基本上 20 毫秒以下的都是算不錯,然後你也可以看到裡面有幾個人,他們是來自什麼國家等等。
找到一個你喜歡的房間之後,你就按兩下就可以亂入別人的練團室了。就這麼簡單而已!那如果你要加入的是非公開的房間,你就在下面「Server Address」這邊輸入那個房間的 IP 位址或是網址,然後按「Connect」就可以囉!
私人線上練團室
當然如果你覺得直接亂入別人的練團室有點沒禮貌的話,那你就可以用剛才下載的「JamulusServer」這個 app 來自己開一個主機。開主機也超簡單,你就是點兩下這個「JamulusServer」,就這樣,什麼都不用做,這樣就開好了。
你只要保持這個視窗開啟,別人只要輸入你的IP位置,就可以連到你的電腦、進到你的虛擬練團室了。當然你要在同一台電腦同時執行主機 app,然後同時用「Jamulus」連到自己的電腦也是可以的。
如果你懶得查自己的 IP 位置,然後還要一個一個告訴團員你的 IP 位置的話,你也可以把「Make My Server Public」打勾,這樣你的主機就會變成公開主機,全世界都可以看得到,那你就叫全部的團員趕快加入,大家都進來之後再把這個勾勾取消,他就會回復變成私人主機了。
示範
該說的都說完了,Jamulus 就是這麼簡單而已,自由、免費又超容易用的一個線上合奏軟體。網路狀況如果不錯的話,它用起來的音質和延遲都蠻好的,整個練團過程雖然還是會因為訊號不穩,而有一點點的破碎聲,但是不會太影響演奏,接下來就讓我們來示範給你看吧,以下你聽到的聲音,就是遠端合奏時,在我的電腦上直接錄製的喔!
以上就是今天的如何用自由軟體來線上合奏的課程,所以大家趕快把這個軟體裝好,一起到線上玩音樂吧!然後提醒你一下,Jamulus 是一個純聲音的軟體喔!如果你也要同時有影像,你還是要搭配一個有影像的通訊軟體使用,像是之前說過的 Jitsi Meet。