2017年6月19日 星期一

Pd裡的DIY2切換

嗨,這裡是北藝大的小宇,阿亂老師這次教的是Pd裡的DIY2切換
關於DIY2 上一篇有相關的介紹,還沒安裝的人可以回去參考(點這裡下載DIY2

前言
當你有一個音檔,想要使用多個DIY2中的效果,做一個效果器的切換,方法如下。
資料夾
創建一個資料夾,
將你下載或是已經錄製好的「音檔」與「pd的程式碼」,放置在這個資料夾 
讀取檔案

建立Message
打上[open
檔名.檔案格式, start]
這邊的「
檔名.檔案格式」為「shoot1.wav
建立Object
打上[readsf~]: read some file,表示在pd中讀取這個檔案
*將[readsf~]右下的那點,接回[open 檔名.檔案格式, start] —> 循環播放這個音檔

—————————————————————————————————————
注意!!當你的pd出現以下的訊息的時候 

表示這個檔案在下載後的格式,pd無法辨認,在下載檔案的過程中發生了點問題
這個時候,可以到Audacity(一個音樂編輯軟題),或是任何的音樂編輯軟體 




開啟檔案,在裡面重新的輸出並且改檔名
shoot1.wav」—>「s1.wav」(記得pd裡open shoot1.wav也要改成open s1.wav)


DIY2效果
下載DIY2套件,放入pd的extra資料夾,在Preferences裡面去做連接套件的設定 
設定好之後
建立Object  [diy-makeobjects]
點一下進入,選擇想要的效果器,放入到主程式中 

[*~ 1]:音量

[throw~ all]和[catch~ all]相對應(可以改成[r~ all]和[s~ all],r = receive,s =send)
throw:丟出訊號 / catch:接收訊號
all為訊號名稱,可以自訂,但是丟出跟接收的名稱要相同
[dac~]:發出聲音

切換 
建立Slider
底下接一個Number可以看到Slider的數值
Slider的值為 0 - 127
[/ 31]:除以31,將 0 - 127等分,
底下的Number可以看到除以31之後的數值
[int]:把上面的數值變成整數,
所以下方的數值就會變成 0 - 4
註:可以先除你要的等份
ex:最後要0-4,所以先[/ 4],
Slider拉到最底,所看到的數值為大約31
所以將[/ 4] —> [/ 31]之後,
最後[int]的結果,就會是 0 - 4




[sel 0 1 2 3 4]:當上面的數值為0的時候會發生什麼事,1的時候會發生什麼事
依此類推
[0 0 0 0]、[1 0 0 0]、[0 1 0 0]、[0 0 1 0]、[0 0 0 1]:
一個 [  ]裡面有四個數字,代表有四個物件
用sel的0、1、2、3、4去做切換
ex: sel 0 —> [0 0 0 0] —> 所以效果器都沒有接收到訊號
      sel 1 —> [1 0 0 0] —> 第一個效果器接收到訊號(使用第一個效果器)
[unpack f f f f]:把上面的訊號拆開來
接收剛剛sel切換的結果,分送到底下的效果器,把[unpack f f f f]接到效果器的[*~ 1]


程式碼

2017年6月12日 星期一

在r-pi上用pd自製合成器

嗨,我是北藝大的vanlan,又來到了pi+pd+arduino的教學整合
今天的應用是:合成器

點我下載 本次阿亂老師範例檔|以下動作都在pi裡執行



首先要先教大家克服一個問題:pi設成自動開機後,如果沒有事先開啟comport就讓pd也自動執行,pd就會當機

以下解法看仔細了!⇩⇊⇊⇊⇊⇊⇩
1.  建一個python檔(檔名:ser.py)


ser.py存檔在桌面新增的patch資料夾,程式內容是打開comport執行2秒

2.  打開終端機先測試看看:在終端機輸入python /home/pi/Desktop/patch/ser.py
     如果你的arduino有接好、訊號程式也是正確的,那執行的時候應該會看到終端機顯示出arduino跑的時候print的內容,2秒後會自動跳出

3.  以上如果正確,就可以把這個程式碼加進自動執行中:
     終端機輸入sudo nano /etc/profile,進入最後一行加入python /home/pi/Desktop/patch/ser.py
     存檔離開(crtl+x)

如此一來,pi開機時就會先執行兩秒打開comport的python程式,再執行pd




在這個合成器上,想讓pi可以外接輸入音源,要在音源孔接一個音效卡(有耳機孔、麥克風孔),耳機輸出端接喇叭或耳機,麥克風輸入端可以接電腦或手機等
以輸入的音源作為基底,用以下pd程式改變聲音
記得輸入源的音量先關小(約一半),避免輸入時音就已經爆掉了
在pd裡面用 [*~ 10]調整音量


合成器使用的套件是DIY2(點擊下載)

範例程式中的[diy2] 點一下會跑出這個視窗
我們先試試mono-effects裡面的EQ3效果:點一下EQ3前面的bang,然後點一下[pd $0-creater]
會跳出一個視窗,把裡面的EQ3整個複製到你的主程式中

先試著用Hslider來控制EQ3裡面的元件
[/127] 因為Hslider的數值是0~127
下面那串,加入補插間[line]讓數值的調變可以比較滑順(細微)
EQ3也可以換成其他任何的試試看,你可以試試simpleFM

我們把剛剛的slider複製四組,上方接的[unpack f f f f]、32 43 76 57和114 115 17 80是方便將四個slider的數值調整成指定數值
[unpack f f f f] : 將訊號解封包成4個浮點數

左上角那塊是接收音高、調整音量
為了讓程式看起來更乾淨,用鍵盤控制音高的程式下方接[s midinote],並用[r midinote]來接收
[t f b] : trigger接收訊號 / float / bang,下方兩個訊號口左邊傳float右邊傳bang
這個bang的訊號送到下面接給另外一個adsr模組,浮點數則往下控制音量
左邊的slider控制音量,接到浮點數下方[+ 0]右上的訊號孔,變更+ 0的數值
adsr模組中,[moses 0.015]是指接收的訊號高於0.015則bang右邊,低於0.015則bang左邊


















[key]是鍵盤輸入
[sel]後面的數值是根據鍵盤ASCII碼
key底下接了顯示數值,按按看就可以知道哪個按鍵的ASCII碼是什麼
以第一組做說明:
按下鍵盤p (ASCII=122),送出訊號1,觸發bang,送出訊號60(=音高中央Do的頻率)