2009年7月16日 星期四

Codec, the long-short road

Codec據說是SCREAM Lab的強項之一, 而且應該是蠻強的, 不過我們卻一直低調而且有一點不甘願做. 可是多年來也一直做下來了, 我想因為codec紅, 而且似乎好找事, 所以我們還是有一串研究可以繼續下去.

實驗室的codec其實有audio也有image/video, 最近smallnew與daphne連手做出的image coder很棒的, 希望可以接續下去, 不過最popular的還是MPEG4/264與AAC.

在MPEG-4 video方面, 我們有一個PS3 Cell BE版本, 也是bbb學長的論文裡所用的例子, 還得過教育部比賽第三名, 不過口試委員吳安宇與洪士灝教授希望把SIMD完成, 所以這是雙魚要做的第一件事.



 

其二是在一般非Multicore環境下, 有中多寫得不錯的Open source, 希望雙魚可以將其速度改進並加到SCREAM Lab的SLIM之下.

其三是AAC decoder的改進, 這個跟第二部分相似, 不再贅述.

我必須等雙魚對一干codec有進一步的了解才可以決定下一步要怎麼走, 這是一個紅的領域, 競爭者眾. 不過請放心, 不管是Smallnew/Daphne的image coder或DNA的audio coder都可以跟世界一流的coder一比高下, 就看雙魚的努力有多少, 成就就有多少, 學長姐已經為你開出一條很平坦的路來了.

OpenESL/ModelSim/QEMU/FPGA

實驗室的OpenESL終於要announce了, 在ESL方面, 或者正確地說, 在HW設計的模擬方面, SCREAM Lab一直致力於異質工具的共同模擬, 過去我們也曾經將Matlab/SIMULINK加到裡面來, 但是, 現在我們要回到正軌來, 也就是 SoC設計的模擬方面. 說到模擬這方面, SCREAM Lab真是有一長串歷史可以交代, 我們接著要做的方像我把它稱之為:

Cyber-Physical-Simulation-Migration(CPSM)



也就是在Cyber Space做的模擬, 可以一部分一部份移到Physical Space去, 這中間做的模擬就叫做Cyber Physical Co-simulation. 由於是一部分一部份移到Physical Space去, 一直到全部的設計都移到Physical Space為止, 所以我叫它做Cyber Physical Migration. 不但是硬體設計, 連軟體的設計也是, 也就是在Cyber Model運做的軟體, 在Physical Space也要一樣可以運作. 這中間牽涉到非常多的轉換(Transformation)與介面(Interfacing)的問題, 所幸SCREAM Lab過去多年來做的一連串的Heterogeneous 與Mixed level simulation, 一堆Code Generation以及辛苦建的Programming/SW tools, 這一天的到來應該不會太遠.

目前的Physical Space的工具有以下幾種可能:

1. FPGA

2. ARM Versatile Platform Board

3. Socle SoC Board (Optional, 因為 2 太貴了)

Cyber Space的工具就多了, 我只列幾項, 有一些要保留一下, 因為還不確定:

1. ESL Platform: OpenESL/CoWare

2. QEMU

3. HDL Simulator

看到這些工具, 有經驗的人就知道SCREAM Lab想要做什麼:

先用比較高階的 QEMU的ARM Versatile PB版跑SW Simulation, 部分原件拉出來在ESL跑, 然後ARM移到ESL, 然後元件移到HDL Simulator, 之後再移到FPGA, 最後所有東西移到FPGA. 中間經過的順序以及要經過多少步驟要視狀況而定.

所以Long目前要補足一些SCREAM Lab所缺的主要區塊:

1. HDL Simulator with ESL Platform

2. QEMU with ESL Platform

我的計劃是用OpenESL來當一切的轉接/轉運站, 舉凡data交換, protocol, ..., 等都是它. 只要建立好通道(channel), 以及準備好一堆Code Generation tools, 在一定的Framework下設計, 應該不難達到.

希望Long八月份可以把HDL Simulator打通, 接著回到QEMU來. 今年內應該可以看到一些成果的.

2009年7月14日 星期二

Qin Synthesis and SW tools/古琴合成研究

這是一個未完成的研究, 我們在未來一到兩年要把它完成. 最早是瑋倫學姊的古琴減字譜軟體的完成, 這是一個國科會數位典藏計劃的成果, 事實上受到許多人的重視, 不過跟多數的國科會計劃以及因為學生畢業的關係, 這個成果那時沒能延續下去. 多年來一直有人問, 連中研院院士都來問.

當時未能延續下去的一大原因是雖然古琴減字譜的輸入法很好, 可是聲音的合成一直沒能突破, 直到最近, 小明學長對起頭音的分析, 文森學長的pitch/Partial Tracking有了一些成果, 看來應該是東山再起的時候了. 在此我向眾多關心的朋友說聲道歉.

以下是相關的link:

古琴減字譜數位化

Centcent's Pitch and Partial Tracking

等小明過幾天把減字譜軟體頁面的圖準備好, 我再來更新.



由於古琴聲音與演奏的特性, 文森學長的pitch/Partial Tracking事實上需要一定程度的修改, 或者正確一點的說是Customization, 也就是量身訂做.

同樣的, 我來起這一串, 接著就由仕偉來接續. 第一個工作當然是把減字譜軟體回復, 這一部分比較簡單. 但是聲音的部分就困難一點. 整個軟體要怎麼做, 我會跟相關的人討論. 而要做的事情如下:

1. 琴音的分析, 也就是pitch/Partial Tracking, 這一部分會比較簡單, 因為我可以把音一個個分開來彈.

2. 分析結果的修正, 這一部分恐怕暫時需要人工來做, 不過SW工具還是需要的, 這部分可以跟authoring tools那邊合在一起, 所以這部分建議做成一個外掛. 我們再來討論要怎麼分工.

3. 根據輸入的減字將每個音合成出來, 這部分要動用additive synthesis以及起頭音合成, 我還不知道小明對提琴的起頭音那部份的成果是否可以直接用過來, 不過值覺是可以的.

4. 根據使用者對演奏articulation上的需求(多半指的是滑音, 少數是其他技法), 重新在合成.

5. 將每一個合成的音照使用者指定的時間排好.

至於其他的事就等這些做好再說!好吧! Let's go!

對了, 請小明將這串同時update到: 古琴減字譜數位化. 感謝!

Score Alignment and Following

在MIREX2008裡面有一個比賽項目叫做Score Alignment, 網址如下:

MIREX2008 Score Alignment or Score Following

其實就是冠廷學長的論文其中的一部分. 冠廷用的是Chroma Feature, 其論文我們過一陣子再Post出來, 但是我們一貫的討論可以在下面看到:

冠廷的Polyphonic Music Information Retrieval



這個問題對我們很重要, 不過一般的Score Alignment做的要是能從頭Follow到尾, 也就是冠廷做的. 研究上當然是要如此完整, 但是假如以短時間內能用到我們要做的應用, 那麼是可以有一些妥協的. 比如說, 我們可以讓使用者把一段Wave框起來, 在讓它來對Target的譜子, 而且一次只要對一部分的譜就好, 例如四小節, 八小節, 長短就看我們的演算法的好壞.

這個串今天由我來起個頭, 接下來就由小聽來接續. 我建議可以將冠廷學長的方法先弄起來, 然後找其他人的論文來Implement, 久了後, 相信會越做越好, 也許有一天我們也可以去參加比賽.

另外就是Score Alignment會是Authoring tool的一部分.

2009年7月11日 星期六

Polyphonic Computer Music Authoring Tool

2009/07/11

不免俗的,先來說一下故事。



由於維城、文森及冠廷近年來在polyphonic music的研究上有了卓越的成果,Cuda的普及正好可解決合成上計算量過高的問題,因此老師便計畫著如何利用它來呈現大家的研究成果。此外,電機系有個同學願意幫我們完成電腦動畫,使其可在畫面上呈現提琴演奏的樣子,還有師大音樂系同學的加入,他們願意幫我們修正分析完錯誤的部份結果,並標記提琴的弓法。最後也最重要的,是冠廷跟小聽加入實作的行列。在天時、地利、人和的條件都滿足的情況下,這個編曲工具的專案便問世了。

昨天跟冠廷和小聽已討論出大概的系統架構、初步實作之資料格式及功能等等,因此開條Thread來紀錄一下工作事項及進度。目前工作的分配如下:

冠廷:

先實作資料格式的I/O,也就是先將文森的結果,按照以下格式紀錄在程式中,輸出的格式暫定為 XML 與 Binary,時間的最小單位是 10ms。註: Track外還會包一層 Group,來代表是同一組 partial group。

class Track

{

int 樂器id;

float[] 頻率;

float[] 能量;

int 起始單位時間;

int 持續單位時間;

Control[] control;

}

class Control

{

int type; //紀錄 control種類, ex: vibrato 就填1

int subType; //紀錄 是哪一個子類, ex: vibrato有三種,如果要第二種,就填2

string tablePath; //如果type是user define, 會由使用者指定這個路徑

int 起始單位時間; //在這個Track的單位時間多少時發生

int 持續單位時間;

}

小聽:

使用Java Swing製作GUI,先尋找一下網路上是否已有寫好的函式庫有提供我們所需要的功能。需要的功能細項待補。(我寫的字條放在 Lab …)

1. 畫waveform的panel (time domain、FFT)

2. 在波形圖上選取區段,變色效果。

3. 經由畫筆改變waveform

4. 可以自由配置視窗的功能

5. 隨不同視窗,改變工具列。

6. 屬性頁

7. midi檔的note number用樂譜形式呈現

showmin:

實作擷取一段聲音的 partials 並另存成樂器庫及 OLA additive synthesis。

2009年7月7日 星期二

Part time job opportunity

幫朋友找人完成下列工作:
Job 1:
1. 使用Python語言 ( cross-platform需求 )。
2. 使用OpenCV實作形狀識別。
3. 以手繪圖形辨識出 三角形,圓形,長方形 ,多邊形(抓出轉折點或半徑等)。
Job 2:
1.Cross-platform ( windows, linux , Mac ) 螢幕錄影錄音工具程式。
2. 不限語言,但須是console mode程式,方便背後執行呼叫。

待遇和時限:
Job1 : 100k 1 month
Job2: 50k 1 month

PS:已有基本範例,主要是完整化跟測試。

有興趣的,有缺錢的,可以跟我聯絡一下。

2009年7月6日 星期一

Training Course

給Traning Course的講師們

如何準備一場精彩的簡報
http://www.bkcoach.com.tw/index2.php?option=com_content&do_pdf=1&id=33

「充分準備」造就「成功簡報」
http://www.watchinese.com/%E7%9C%8B%E8%AB%96%E5%A3%87/2009/1214

老師說 Training Course是要訓練新生, 同時也訓練講師
不用心準備, 誤導新生的話
很快會有報應的!!

2009年7月3日 星期五

2009 Summer SCREAM Lab Training Courses

請各位講師將Training courses的投影片放在這裡. 請盡量用英文, 也請在這裡簡單寫一下你的摘要, 不要只是把投影片放上來而已.多謝!

講師試講就由星期一(7/6)開始.

7/6 AM/PM: C++/threads/processes and SystemC

7/7 AM/PM: SystemC/OpenESL and SLIM/OpenMax

7/8 AM/PM: Eclipse/cuda

除投影片外, 請將當天的Lab以及之後的作業也要準備好. 上完課之後的作業要出六題, 碩0同學每人一題, 因為有三類, 所以每人共三題, 預計在暑假結束前完成. 講師要負責輔導同學把作業做出來並協助驗證其功能.

2009年6月26日 星期五

SCREAM Lab ESL tools to be Open Sources

2009/6/26

Since SCREAM OpenESL will be announced this month, I decide to have a new blog for the open sources developed at SCREAM Lab. For such information, please go to :

http://screamlabopensource.blogspot.com/

I would expect that new SLIM will be released soon.

--------------------------------------------------------

For some reasons, I decide that we will make our ESL tools open. They include our past efforts on Eclipse based SystemC IDE with GUI, Matlab/Simulink Co-simulation, FPGA Co-simulation, and all other heterogeneous mixed-level tools.

Before the 0.1 version is announced, there are some features to be added.

1. TLM 2.0 compatible interfaces.

This includes Buses and interfaces to heterogeneous tools. This will be taken care of by Buffett, ruru, and Garystone.



2. Matlab/Simulink and FPGA related examples and codegen and change of communication models from socket to shared memory.

This will be taken care of by Buffett and DNA.

3. Profiling tools and its visualization

This will be taken care of by ruru and Garystone.

4. Integration of GtkWave and Icarus (or Modelsim)

This will be taken care of by long, Buffett and Garystone.

5. User menu, technical menu, powerpoint and book.

This will be taken care of by Garystone, ruru, long and Alvin.

Let me know if I miss anything and there is something wrong.

Let me toss some options that should be done after the first version is released

1. Debugger under Eclipse

2. 8051 and DSP16 utilities

Last night, I felt so relieved and free that I made everything clear. There is no need to make 700K NTD while losing our freedom to make the best ESL tools in the world. AND, it is open and free.

2009年6月22日 星期一

Welcome new SCREAM members, 2009

Training Course 7/2009

由於有同學在7/13有事, 所以Training courses就星期二7/14開始到周末的7/18.

講師的練習7/6開始, 請在7/6前上來post你的power point.

------------------------------------------------------

6/19  9:10AM進行Training course以及SCREAM Lab的計劃說明與討論. 課程的投影片在2009訊號與系統那串.

另外請以下四位學長參與討論.

garystone

87showmin

smallnew

D.N.A.

塞公

如有同學不會Matlab的, 我再請學長來講解.

----------------------------------------------------------

6/3 周五上課取消

看來這周五無法上課, 那麼6/19可以嗎?

請New Members上來回個話或寄email給我.

另外, 我們在七月上旬會辦實驗室的Programming Training courses, 這次就由碩一的Gray, 塞公與阿凡以及碩零的vivian, ruru, 小龍擔任講師. 內容包含Gary 負責C++/threads/processes的複習, ruru 與小龍負責的SystemC/OpenESL, 阿凡負責的Eclipse 開發環境, 塞公負責的SLIM/OpenMax, 與vivian負責的cuda.

請講師在7/6前將投影片, Lab以及Homework放到blog上來, 請各自開各自的串, 串中請簡述你的內容. SystemC的投影片可以沿用舊的但要加上TLM2.0的部分, 請跟DNA與Gary拿舊的資料. 我先規劃一下課程如下:

Day 1 AM: C++/threads/processes

Day 1 PM: SystemC

Day 2 AM: OpenESL

Day 2 PM: SystemC/OpenESL Lab

Day 3 AM: SLIM/OpenMax

Day 3 PM: SLIM Lab

Day 4 AM: Eclipse

Day 4 PM: Eclipse Lab

Day 5 AM: cuda

Day 5 PM: cuda Lab

其中, SystemC/OpenESL , SLIM/OpenMax 與cuda要設計Homework來當大家的暑假工作. 至於要出什麼樣的作業請講師找時間來跟我討論.



---------------------------------------------------------

5/30 道歉啟事

看到Aaa的留言, 我才知道我之前說的要在5/28開始介紹其他東西. 請原諒我年老昏庸, 記性不佳. 只想到說端午節要帶孩子回家去看父母親, 忘了這件事. 真是抱歉! 請那天有來了學校要上課的同學跟我說一下, 我請客道歉.

至於下一次上課, 因為假如可以, 就下星期五(9AM, 6/5). 我預計把Signals and Systems講完, 順便給大家問一下問題, 然後講一下請學長講一下Video Coding, 如有時間就加Matlab一下. Audio Coding就之後在找時間.

最後, 真的很抱歉. 我以後會注意, 也請同學提醒我.

假如有人不能來上的, 請留言一下, 我會再找時間.



---------------------------------------------------------

5/20

5/22上午九點開始上課

地點: 資訊系館4201

---------------------------------------------------------

5/6

那麼我們就定在5/22上午九點開始, 講到我累到不行為止. 我會講得快一點, 因為時間大概不會太多, 聽過我一次訊號與系統的人會比較easy. 沒聽過的請隨時問問題. 我基本上就是先上到訊號與系統的一到五章. 請先到訊號與系統那串下宰我的手寫投影片.

假如我可以講完訊號與系統, 那麼5/28上午九點開始, 我會請lab的學長姐介紹一下目前跟訊號有關的projects. 另外簡單地上一下Matlab.

至於實驗室的programming training courses就定在七月上旬來進行.

---------------------------------------------------------



5/3

這次的meeting, ruru因為時間的限制, 報告比較不完整, 小龍大概覺得是有點像以前的專題的每次進度review, 所以有一點簡略, 其他的都不錯. 因為小龍已經完成了GtkWave與OpenESL的整合, 我們下星期來review一下. 以下是請各位同學接下來可以做的.

ruru: 繼續先前的工作. 但是請開始找OCP的code來trace. 另外也可以參考CoWare的AMBA2的code, 但是希望看完後, 假如要改, 可以更符AMBA2的規格, 以及採用標準的TLM2.0, 此一部分, 我們會跟電機系合作.

小龍: 可以請你去看一下HDL simulator嗎? 例如Icarus或ModelSim. 接下來, 我們希望ESL可以跟HDL Simulator一起運作. SLIM的介面的工作請先擺一邊.

孇孇: 接下來請你實做IDCT, 我想知道用了SIMD後, bbb的系統可以快多少. 此外, 我該給你上一下video coding的一些東西. 我們blog上有一些smallnew寫的東西, 也許你可以先看.

vivian: 你這次的demo讓我很有信心, 我想我要找時間跟你談一下我們實驗室在用的additive synthesis如何架在cuda上了. 基本上他就是一堆sin加起來而以. 我會請showmin在下星期一起來討論. 此外, 我們計畫讓SLIM可以呼叫cuda做的process, 所以會以後請你來參加SLIM/OpenMax/Cuda工具的開發, 目前這部分是塞公在做.

最後感謝大家的努力, 下一次的meeting時間就定在五月底, 希望可以有新的成果可以給大家看. 另外我計劃五月份給大家溫習一下訊號與系統, 我一向在星期三與五比較有時間, 請各位把你可以的時間post上來一下. 碩一的同學也可以一起來再聽一次.

----------------------------------------------------------



4/13/2009

孇孇希望有多一點時間準備, 以便可以demo一下他實做的程式, 所以我們就暫定4/28上午. Lab的報告就由9AM開始, New members的報告及Demo就10AM開始. 請大家準時, 並不吝提出問題, 假如時間不夠, 我們叫便當進來吃.

---------------------------------------------------

4/9/2009

因為小龍, Vivian, 孇孇都已經研究了一段時間, 我寄話在4月中到四月底之間找一段時間, 約半天的時間, 請我們的new members來替大家上一下課, 順便做一下demo.

期間ruru因為ocp會員的一些問題, 卡了一段時間, 所以我請他改看CoWare裡的AMBA2的實做. 我會請ruru加一篇文章來講這個topic. 希望ruru也可以在四月底前的這個Seminar來講一下.

這個Seminar不是要各位new members要講出什麼了不得的東西, 只是驗收一下自己獨立研究的成果以及讓學長姐們可以對大家做的東西提出一些看法與改進的方案, 請大家好好準備, 但是不要覺得好像壓力很大的樣子.

比較恰當的時間是利用Lab星期二上午的meeting時間, 但是考慮到孇孇的遠道的不方便, 我想以孇孇的時間為準, 請孇孇提出幾個方便的時間, 周末也OK.

--------------------------------------------------

實驗室預計增加以下幾位生力軍:

rurume

小龍

Vivian

孇孇

passtaiker

另外還有一位還沒跟我聯絡, 所以我先空著, 要是真的來了我再加上來.



經過一個星期的Training courses, 我想幾位應該跟目前實驗室的學長都有認識, 所以我在training courses的最後一天請幾位吃午餐, 順便交代一下要給各位的工作. 我在下面簡述一下, 以免我自己都忘了.

rurume: 研究OCP與 TLM, 並且實做出一符合OCP的Bus與NOC所需的interface, router與switch. 你的Mentor是Gary.另外, 我計劃請你, 小龍與Gary合作來寫一份投影片, 內容有關簡單的C++教學, SystemC入門, TLM, 以及OpenESL的用法, 預計以後當大學部上課教材用.

小龍: 研究GtkWave的Linux與Windows版, 以便加到OpenESL裡面, 並且研究GEF的使用與開發方法. 你的Mentor是阿凡. 此外, 我想請你多了解eclipse開發環境, 所以也要請你將SLIM搬上eclipse. 這方面請Gary當super mentor.

Vivian: 研究cuda, 目前這是實驗室要看的新東西, 大家都不太熟, 所以你要靠自己, 希望過一個月後你可以幫大家上第一次課. 因為我請塞公在研究OpenMax, 尤其是在cuda上的OpenMax, 所以我請塞公當妳的Mentor, 又因為Aaa目前也在看cuda, 所以我也請忠和來當super mentor. 不過你還是要多靠自己. 我希望未來SLIM可以連上OpenMax與cuda, 所以在一段時間後, 我想請你跟小龍合作一下SLIM的開發環境.

孇孇: 研究cell programming. 這是目前實驗室在多核心處理器開發程式上的另一個重點. 目前最大的應用程式是MPEG-4 decoder, 請你花時間了解如何用cell來開發程式, 另外的重點是學習與利用SIMD指令來加速她. 你的Mentor是逼逼逼. 等實驗室的Data Flow Programming tools成熟時, 我們會進行開發環境的實做, 請你要多問問題, 不要擔心會麻煩道逼逼逼.

passtaiker: 研究Verilog語法. 我的計劃是先讓你做一顆CPU, 因為能寫一顆CPU, 而且此CPU能有一定程度的Performance的話, 那麼你的Verilog的功力就不錯了. 我會請你先看8051的Verilog code, 然後請你來報告此一code的結構與語法分析, 然後會請你自己implement忠和學長定義的32-bit RISC (Simulator已經做好了). 你的Mentor是Daphne, 我會請她send email給你, 也會請她叫你FPGA的使用. 另外請你在這學期複習一下Compiler與找一些Verilog Simulator的論文與實作來看, 這方面的Mentor是Aaa. 我也會請Aaa跟你聯絡.

如我所說, 各位並不需要去鑽研所有training courses裡所有的東西, 取你所需即可, 有問題就跟我與你的Mentor說.

最後, 請各位在三月中以前上來開一串屬於你現在工作的文章, 內容再怎麼簡單都無所謂. 然後每周至少上來更新一次資料. 更新的目的在讓Mentor與我了解你的進度與問題, 同時也讓你更了解你自己, 假如你有用心在研究, 一陣子過後你一定會看到自己的進步.

我們預計在春假前後請各位到台南來做第一次報告. 順便請各位與你們的Mentor喝coffee.

----------------------------------------------------------

請注意! 請諸位New members在三月中上來開有關你的工作的串. 請諸位Mentors盡一下Senior的督促之責.