功能有:麥克風錄音、利用剛錄的聲音編寫音樂/節奏、播放編寫的結果
點此下載阿亂老師課堂範例檔|以下將程式碼分開解釋
![]() |
record mode(紫) 麥克風錄音 play mode(紅) 編寫節奏、播放結果 [loadbang] 開啟檔案時自動執行 紫紅按鈕為Toggle,切換模式開關 |
![]() |
用麥克風收音(左) 播出聲音、調整音量(右) [/ 127] 是因為slider的預設值 [s~] send [r~] receive |
[r chMode]和[s chMode]相對應,r = receive,s = send
黃色bang相當於觸發按鈕
觸發後進行後面的動作:麥克風收音1秒錄成s1.wav
[t b b] 將訊號複製成兩份,先打開一個s1.wav(右邊)然後進行寫入(左邊)
[del 1000] [stop] 觸發後一秒結束(錄製一秒),del = delay
[del 1000] [stop] 觸發後一秒結束(錄製一秒),del = delay
[writesf~] write sound file
[readsf~] read sound file
[s~ dac] 訊號送到喇叭播放
老師的範例做了四組(4個按鈕)
這時候[s~ dac]只能有一個,四組的[readsf~]都要接到同一個[s~ dac]
這時候[s~ dac]只能有一個,四組的[readsf~]都要接到同一個[s~ dac]
為了讓程式整齊,我們在主程式新增一個object: [pd recorder],會跳出一個叫recorder的子程式
把剛剛寫好錄製麥克風聲音的部分剪下、貼到這個子程式中
(點一下 [pd recorder]即可開啟子程式)
(點一下 [pd recorder]即可開啟子程式)
刪除本來的黃色按鈕(按鈕留在主程式就好)改成[inlet],主程式上的[pd recorder]上排就會多一個接孔
並在右邊的bang上接一個[outlet],[pd recorder]的下排也會多一個接孔
在主程式中[pd recorder]的上下排接孔就可以接上bang
bang上方的[key][sel 49 50 51 52]是為了方便控制,用鍵盤的1,2,3,4鍵來控制四個按鈕的觸發
在主程式中[pd recorder]的上下排接孔就可以接上bang
bang上方的[key][sel 49 50 51 52]是為了方便控制,用鍵盤的1,2,3,4鍵來控制四個按鈕的觸發
[r chPlay]是接收play mode的[s chPlay]
當深黃色的bang被觸發,就寫進array裡
[tabwrite a] table(=array) write a,寫進名稱為a的array
(b c d 以此類推)
[t f f] 把訊號複製成兩份,都是float(浮點數)
[t b b f] 把訊號複製成bang bang float
![]() |
新增array(陣列),按右鍵選擇properties可更改名稱、尺寸
新增四個array,分別命名為a b c d
這裡是讓a b c d 陣列訊號歸零
當然你也可以寫成 [a const -1;]
那點擊這裡時a陣列的值就會是-1
這個部分是looper中設定循環、讀取陣列進行播放的部分
[invert] 也可以寫成[expr 1-$f1],相反的意思,功能是切換0,1(expo = express)
[f] [+ 1] [% 1000] 是計數器,從1-1000循環計數
底下將訊號分成四份,分別接到讀取四個陣列 [tabread a] (b c d以此類推)
[s banga] send bang a 傳送觸發a陣列
ps:有可能需要補裝[invert]的library
缺少library的物件可以到下方網址搜尋需要安裝什麼library
http://blog.joehahn.ws/list-puredata-objects-and-extended-objects
整理一下玩法:
1. record mode 先不要打開,輪流按鍵盤1,2,3,4錄製聲音
(如果聲音沒有錄進去,可以檢查Media-Audio Settings的麥克風選擇)
2. 打開record mode,再輪流按鍵盤1,2,3,4聽聽看剛錄的聲音
(如果沒聲音,檢查dsp是否有開、slider是否有拉到右邊)
3. 打開play mode,依你的喜好鍵入1,2,3,4開始錄製音樂
(array會出現訊號,那就是成功輸入了)
4. 關掉play mode,就可以聽到剛剛寫的音樂一直循環播放
(記得檢查[invert]底下的toggle是否有打開)
沒有留言:
張貼留言