Star Rocket 三創育成Titan 透過推特跟我連繫,提到他正在寫一篇關於 ROLI 以及 JUCE 的文章,看到我有寫一些跟 JUCE 有關的文章,就他的提問發表了一些看法。

我接觸 JUCE 約莫四年,對 JUCE 有一些心得,但不敢說摸得透徹,僅就一些使用經驗以及對於 JUCE 這個專案、公司,以及創辦人的側面觀察提出我的心得。

拜讀了 Titan 剛發佈的文章—〈ROLI:乘著黑色波浪而來的未來樂器〉,寫得真好,對於 ROLI 這間公司還有別樹一格的新型態「樂器」,做了相當完整的報導。

說來慚愧,早在一年多前我就興起了推廣 JUCE 的念頭,後來還申請了 juce.tips 域名,建了 JUCE Tips。但一年多前為了做「那個專案」,逼我不得不使出 200% 的戰鬥力,沒日沒夜的趕工,終於順利交貨。

其間還在 JUCE 論壇上找了一位印度人,把幾個功能外包給他,完成度不低,但程式碼品質還有不少進步空間。

JUCE 使用 C++ 開發,多年前做技術評估時,一開始打算採用 Qt,但後來因為客戶需求改而尋找較為「輕量」的跨平台開發框架。我是在那個時候(2014)發現 JUCE 這個對當時的我來說,默默無名的開發框架。

我們除了幫電信商開發 Android 應用程式,還寫了一支在 Windows 10 觸控平板上運行的 Kiosk 主控程式。JUCE 本身就支援 Kiosk 類的應用程式,使得這方面寫起來相當省力。不過,因為這個專案要處理觸控螢幕的輸入事件,才發現 JUCE 這部分做的不是很完整。我在 JUCE Forum 上回報了幾個問題,很快獲得了修正。

客制化的使用介面是 JUCE 強項,看看那些 DAW 外掛,各式各樣的介面,玲瑯滿目,就知道 JUCE 在這方面表現優異。電競類軟體的介面講求「炫目」,這方面 JUCE 表現稱職。

底下是兩個 JUCE Award 上提名的作品:

C++ 以效能著稱,加上 Jules 對程式碼品質的高標準,使得 JUCE 專案的 Code Base 維持在很高水準。在我看過的開源專案中,她的品質屬一屬二。多數開源專案接受開發者貢獻程式碼,但 JUCE 專案不接受,Jules 給的理由是,多數別人貢獻的程式碼他幾乎要全部改寫才能符合 JUCE 的標準。

JUCE 家的 Coding Standards 公開在官網,C++ 開發者可參考一二:

文章所提,JUCE 在音樂軟體開發產業受到極大重視,我想這也是 ROLI 看上她的原因。不過,敝社把 JUCE 拿來「亂用」,開發的產品 99.9% 跟音樂軟體無關(只有一個胎死腹中的 Demo 專案跟音樂搭上線)。這些經驗讓我更肯定 JUCE 的潛力不僅音樂產業,需要讓更多人知道 JUCE 的能耐,讓這個好用的工具持續成長茁壯!

展望未來,我有幾個計劃:

翻譯官方的教學文章。JUCE 今年增加了許多教學文章,中文文能降低中文開發者的入手門檻,因此計劃先從較一般化的教學文章開始翻譯。不過,我還是強調,軟體開發者除了技術能力外,英文閱讀能力(當然說寫也很重要)一定要達到能夠看懂技術文件的程度。

產出原創文章,有入門,有進階,提供更多 JUCE 學習資源。去年公司開職缺,來了一位資深工程師,聊到我們使用 JUCE 為主力,他很認真的回去做了功課,得到「JUCE 學習資源異常匱乏」的結論。他說得是實話,與 Qt, wxWidgets 相比,JUCE 的參考資料真的太少了。

我也在規劃線上課程,主題放在 JUCE/C++ 跨平台應用程式開發。目前是想放到 Udemy 上,這會是付費課程,先出中文版,之後再推出英文版。

再來就是寫書了。《跨平台應用程式開發使用 JUCE / C++》,大概明年才有機會問世了。關於這本書的規劃,我會另寫一篇文章說明細節。

真心推薦 JUCE 這個開發框架,雖然參考資料不多,但官網上的教學文件漸漸豐富,而且是開源專案,有不懂得地方就下苦功鑽研原始碼,不用怕!

下回評估 C++ 開發框架時,不妨給自己一個機會,試試這個音樂界的「扛霸子」。