TCL 小筆記

昨天發現有隻 TCL 程式不 work 了, 可能是我們 Cygwin 版本不同, Isometry 改在他那邊可能是好的, 不過我這邊就掛了.為了解決這個問題, 只好 debug 一下為何它會有不同的表現.

關於 TCL 的說明, 這個網站真是做到仁至義盡了. http://tmml.sourceforge.net/doc/tcl/

如果大家隨便寫一個 script 檔, TCL 怎麼知道是該它處理呢? 如果您有灌 tclsh 就 OK 了. 此時只要在這個 script 前面加上一行

#!/usr/local/bin/tclsh

就可以了.

TCL 自己會去執行這個 script, 而不是交給 bash 之類的.

更好的寫法是

#!/bin/sh

# the next line restarts using tclsh \

exec tclsh “$0″ “$@"

這樣就不會出現 command not found 這樣的錯誤了. 因為不做一點 “暗記" 的話 TCL 是不會去處理每一個 script 的.

上述技巧見於 http://tmml.sourceforge.net/doc/tcl/tclsh.html

如果再 TCL 中建立了一個檔案, 又想要再 generate 一次, 將會遇到 archive = 1 的問題. 在 Windows 下有一個好用的 freeware 叫做 unlock, 用它可打掉這種檔案被程式 lock 的狀態. 我的兩台電腦都有裝.

不過在 TCL 之下, 如果不先把 file attributes 的 archive 設成 0, 就算用 file delete -force 都殺不掉它喔!

  

今日得意技

我們正在測試 multi-channel HDMI 的音訊輸出. 經過大家的努力, 初步釐清 HDMI 設定 audio 的訊號會受到 video 的影響而被抹消, 於是在 audio 獨立可以設定 HDMI 的狀況下, multi-CH 終於有聲音了.

不過咧…大部分的影片幾乎低於 5.1 聲道. 有的時候, 很難搞清楚到底是那一個 channel 的聲音錯了, 或是它本來就沒有聲音?

我們找了 IC designer、看了 spec., 還是沒有人可以告訴我們 HDMI 送出的 8 組 buffer, 各自對應到 7.1 聲道的哪一個? 左、右、中、重低音、左環繞、右環繞、後左環繞、後右環繞?雖然我可以用 “人工智慧" 排除掉絕大多數的不可能的組合, 但是至少要測測看才能確定順序! 不可能是 1,2,3,4…這麼好. (果然也不是!)

我們僅有的 8 CH 測試檔是很標準的左右對稱檔案, 重低音聲道又剛好沒聲音. 稍微測了一下覺得是在浪費時間. 因為 HDMI receiver 會很乖巧地在重低音這個聲道做 bass management, 所以該有聲音的地方沒有聲音, 不該有聲音的地方倒是有聲音.

所謂怒從心頭起、惡向膽邊生, 徒勞無功了一陣子, 決定乾脆自己來造一個 8 CH 的 wav 檔, 每個聲道都各自放一首歌, 這樣只要用耳機一聽, 不就知道那隻喇叭對到那塊 buffer 了嗎?

想法雖然很好, 可是有點麻煩. 在懶和浪費時間的中間, 我選擇了認命. 誰叫 Irene 在解相位差的那個怪 bug 呢?

首先, 我挑了梁靜茹的 8 首 MP3 解成 PCM 檔. 再寫一個小程式, 把 8 個 PCM 檔合成一個大 wav 檔.

我也依稀記得 wav 檔的 header 有 44 個 bytes, 但是要自己寫程式, 又沒有 open source 可以抄, 還真有點懶…幸好至少 Google 到了 spec.

各位看官, 這一位大善人的 home page 真是不錯. http://www.sonicspot.com/guide/wavefiles.html, 看著它, 程式就可以寫出來了. 唯一要計算的只有 file size 和 chunk size, 其他都超簡單.

可能太久沒寫 dos 程式, 我連產生 filename 的招數都生疏了. file name 應該要用一個 string 來存, index 的那個字元就用 string[x] = ‘0’+i 來寫成 i 的 loop, 這樣就可以開一串 file 了. 不過我第一時間竟然忘記這招了, 真是遜啊!

程式寫好, 一檔 8 首歌的 wav 終於現身了. 左聲道: “崇拜", 右聲道: “Ces La Vie", …右後環繞: “知多少".  嗯, 那麼發出嗯嗯啊啊的難以辨識的重低音的, 一定就是剩下的那首 “每天第一件事" 囉?

就這樣, 我終於成為能夠搞清楚哪塊 buffer 對到哪個 channel 的人了. 呃,… 既然 HW, SW, designer 都沒有人可以告訴我, 那我算是第一個知道的嗎?

據說 QA 也沒有 8 聲道的測試檔, 那麼我這個測試檔應該算是最酷的吧! 因此我將它列為今日得意技. 

早上上班的時候, 看見一條毛毛蟲在過研發六路, 我小心閃過了牠, 希望牠今天也很順利, 哈! 不過千萬不要再過馬路了~~~

[後記] “今天" 其實是昨天 5/21.