Sunday, August 19, 2018

感動,如此創造:日本電影配樂大師久石讓的音樂夢


這本書算是久石讓蠻早期的書(2007),他給自己的定位是商業藝術音樂家,在流行音樂崛起的當下與過往學習的古典音樂,以及追尋的極簡音樂中取得平衡。流行音樂對久石讓來說是透過節奏來提高傳唱度,由於節奏容易了解,所以一般人也可以輕易理解,相較於古典音樂,追求音符的協調,甚至背後也許多理論。傳統古典音樂的奏鳴曲式是莫扎特和海頓產量高的原因,但是過度依據格式會流於形式化,所以才有浪漫樂派和國民樂派的出現,例如:史麥塔那的<我的祖國>與鮑羅定的<中亞草原>,讓音樂從絕對音樂的領域回到標題音樂,音樂也因此有了故事。然而近代過度複雜化的古典音樂,造成觀眾難以理解,也因此有了極簡音樂反動。久石讓說她以前很想創作類似John Cage的前衛音樂,而且他也很喜歡Philip Glass和Michael Nyman的極簡音樂,也希望未來可以創作出極簡音樂樂曲。其實他的配樂中有時也帶有極簡主義色彩,這些過往的經歷是他創作的基礎。久石讓的音樂95%源於過去積累,5%來自感受,他的音樂創作過程是理性的透過過去積累的知性達到感性,旋律來自無意識的神來一筆。

我覺得他在此書中對電影配樂的想法十分有趣,在快樂的場面配上快樂的音樂是很常見的做法,但是若是這樣容易預測容易限縮觀眾的思考,他這裡舉了韓劇『冬季戀歌』XD。我覺得漫威最近的電影配樂都被批評沒有記憶點也是這個原因(https://www.youtube.com/watch?v=7vfqkvwW2fs)。有時採取對位作法(反差)更能讓觀眾了解作品意含,例如,北野武(我忘記久石讓提的是不是他了)的電影透過劇內音樂柔和的練習曲配上劇中的打鬥,讓觀眾思考兩人的時代億含。對電影的聲音來說分為『劇內音樂』與『劇外音樂』,大部分的配樂都是劇外音樂,劇內音樂現在都被稱為音效,然而劇外音樂是對於電影內容的形容。過多音樂描訴不一定自然,最自然的情況是完全使用劇內音樂(所以久石讓自己導的電影<四重奏>幾乎都使用劇內音樂)。

對此久石讓也稍微評論了John Williams的星際大戰,星際大戰最有名的就是主要角色幾乎都有自己的主題,有時你甚至光聽音樂就知道有哪些人在同一幕中。對於星際大戰的配樂來說,久石讓認為這是典型好萊塢式的配樂,音樂十分的滿,在星際大戰的例子可以提昇電影格局。然而不一定每種電影都適合。歐洲以及亞洲配樂家比較少用此種技法(也許以後可以多找找歐系配樂來聽),歐亞配樂常對於整個『電影』做主題,例如『霍爾的移動城堡』就是一個主題貫串(宮崎駿要求久石讓用一個主題)。我覺得各有優缺,星際大戰這類商業電影透過人物主題式手法提高了豐富度,也讓觀眾記憶深刻。而歐亞系配樂較為內斂,這類配樂適合描繪感情世界。至於採用民族音樂以及民族樂器,例如尺八、二胡等樂器,久石讓認為不一定比較好,避免過度直接使用與劇中相符的民族樂器,不然會讓觀眾有先入為主的觀念,觀眾思考會定型。此外,使用民族樂器時也需要了解該民族底蘊,他這裡算是批評了『藝妓回憶錄』的尺八用法(日本人幾乎都很討厭這部)。我覺得按照其說法Alexandre Desplat的『歡迎來到布達佩斯大飯店』應該是一個比較好的例子,透過如何俄羅斯以及歐洲的一些民族音樂『偽造』出個假的東歐國家。而Gustavo Santaolalla的『火線交錯』也是算是民族音樂用的比較的例子。此外,久石讓表示『恐怖電影』的配樂其實有些也十分有趣以及工整,我覺得以後也可以聽一些。

久石讓也對日本當時的音樂圈做出些批評。他認為日本人搞音樂過度追求技法,從小就一直過度訓練技術,缺少思考,演奏小家子氣,技巧達到某一階段就停滯。這對我這個圈外人來說有點虛無飄緲,我唯一能聯想到的大概就是『四月是你的謊言』裡的有馬公生和『琴之森』的阿海這兩個人物了。

2018 COSCUP Day2

  • flatpak vs. snap

  • 回望踏入 Linux 内核之旅

  • uTensor: AI on Microcontroller

    • https://hackmd.io/c/coscup18-data/%2Fcoscup18-data-utensor
    • https://github.com/uTensor/uTensor
    • 在MCU上跑Tensor,由於MCU功耗極低,而且超便宜,若能將部份機器學習推論部份搬至MCU上會在應用上更有幫助。然而MCU有其限制,例如code size,ram size小,而且又很慢,因此僅適合做推論。為了克服ram太小問題,可以將資料存於SD卡中(SDTensor)或是ROM(ROMTensor),其中ROM tensor可以不需要SD卡。在編譯期的優化需要判斷哪個Tensor最常被Reference,讓其停留於MCU的data memory中。至於應用,可以用在Sensor Fusion,對資料做前處理,減少傳遞的資料量。也可以做輸入辨識。
    • uTensor建立在ARM mbed平台上。即便如此,程式碼須撰寫的數量仍多,因此有了utensor_cgen的專案,將python tensor轉為uTensor。
    • uTensor專案下方有對於edge computing做介紹。
  • 其他:同場加映-山嵐拉麵



湯濃,但是略油,料豐,但是略貴

2018 COSCUP day 1

  • Introduction to Julia 308

    • https://hackmd.io/c/coscup18-julia/%2Fcoscup18-julia-introduction-to-julia
    • https://www.slideshare.net/ssuserd6984b/coscup-introduction-to-julia
    • 『Write like Python, run like C.』沒什麼比這句或更有吸引力了,這個語言一本上是語法融合R+Python的動態型別語言,不過她速度實測上接近C和Lua,不過按照講者說法Julia需要在宣告時給定變數型別才可獲得最佳效能。
    • pass by sharing,function內變數指向原本的參數位置
    • 語法上有趣的部份是他的陣列Index是從1開始的,陣列支援comprehension展開,此外支援複數型別和有理數型別,而且在有UTF-8,可以輕易的打出希臘字母,對於學術界來說時的親切。也因此金融界,和科學運算界用這個語言比較多。我覺得她可以取代Scipy和Numpy在這些領域的地位。
    • 有內建的profile tool,不用像C/C++需要prof或是valgrind。可以用@time產生火焰圖。
    • 有平行語法@parallel修飾字,基本上就是openmp的#pragma parallel for之類的包裝。
    • @code_native與@code_llvm的修飾字可以方便了解當時程式的組語以及LLVM IR。
    • Machine Learning,Deep Learning和web full stack均有套件,還也史上最強大微分方程套件。
  • 小鴨城 (Duckietown),一個基於 Raspberry Pi 和 ROS 的開源無人小車專案介紹

    • https://hackmd.io/c/coscup18-misc/%2Fcoscup18-misc307-duckietown
    • Ubutu + ROS + OpenCV + Raspberry Pi用來訓練學生對於無人車的設計基本了解。
    • 主要注重車子與雙黃線的距離估計,圖像與真實世界的投影轉換,光影的補完與校正。
    • 交大也有開課歐(軟體創意專題)。
    • Puyuma
  • 在 RISC-V 上的 ftrace 及 perf 工具移植經驗

    • https://hackmd.io/c/coscup18-kernel/%2Fcoscup18-kernel-risc-v-ftrace-perf
    • kernel是黑盒子,需要透過ftrace和perf來了解kernel效能。
    • 流程:開發者使用效能監控工具->改變kernel設定,進入開發模式->產生監控資料->離開監控模式->開發者存取資料
    • Ftrace:以 function 為等級的監控,進入每個函數,綁架正流執行流程,產生執行與離開的時間戳記,使用者透過透過 tracefs 檔案系統取的 trace 內容。
    • Perf : 以 process 為等級的監控,排程器在排入形成時啟動、形成離開時移除 perf 機制,產生包括軟體組態,以及硬體counter,甚至cache miss資料。透過一些gui tool 或是 CLI 獲得perf解碼資料。
    • 均須在compile時加入 -pg flag,插入_mcount
    • _mcount 如何運作,透過更改call stack中當前的return address,讓其進入_mcount產生資料進行計算。https://github.com/lattera/glibc/blob/master/sysdeps/sh/_mcount.S
    • patch重點->硬體counter。
  • 快快樂樂 SIMD

    • https://hackmd.io/c/coscup18-kernel/%2Fcoscup18-kernel-simd
    • https://www.slideshare.net/WeiTaWang/simd-109492525
    • SIMD算是現代CPU特色,Intel每幾年會double一次SIMD大小。SIMD是一些特殊組語,在C語言使用時通常用一些函式包裝,Vector register也會用typedef重新定義。
    • 使用SIMD前一定要會算指令cycle,最好還要有計算機組織的基礎,才有辦法trade off。
    • SIMD除了指令以外,還要了解記憶體與cache。唯有讓運算停留在register中進行愈久愈好。為了避免cache miss,array可以在function中宣告,用O3讓參數穿透(inline),interrupt避免,以免cahce被洗出去。計算cache size,避免在存圖片時cache滿出來。由於編譯器對於指標較難優化。所以避免直接使用間接取址操作,不然會編出大量load/store與cache miss。應該用中繼變數取代。少用陣列多用pointer可以避免編出大量load / store
    • algin很重要,滿出vector size不會得到好的增益。可用align指令包裝。
    • 必須記得當前CPU的register數量,避免滿出vector register的大小。
    • 使用shuffle指令ex: vtrnq(arm)重新排列資料在vector的位置
    • 盡量一口氣load store達到pipeline
    • 使用新版gcc / clang
    • -fvectorize 需要讓編譯器知道迴圈大小裁可以達到最佳優化。
    • 這個議程強調速度,所以會忽略一些可讀性。
  • LPWAN 物聯網通訊技術

  • Web 可用的組合語言 - WebAssembly & 自幹 WebAssembly 虛擬機器


  • The bright future of SUSE and openSUSE

  • The DEXON Network - The Infrastructure of the Internet’s Decentralized Future

  • Lightning Talk

精選文章

使用Ardunio Atmega2560 連接 nRF24L01+

使用Ardunio Atmega2560 連接 nRF24L01+ 關於library 目前主流有 https://github.com/maniacbug/RF24 與 https://github.com/TMRh20/RF24 這兩個。 其中TMRh20大大做...