自製情緒舒緩機

一月 15, 2015
Facebook
Twitter
利用Arduino聲音合成系統舒緩焦慮。

晚上睡覺時,鄰居的貓鬼哭神號;水龍頭流出的水震耳欲聾;早上辦公室裡,漸強的聊天聲此起彼落。用「情緒舒緩機」(Smooth Moods Machine)來對付這些不愉快的聲音吧。這是一個可以遙控的小型自持裝置,以Arduino為基礎建造的音樂產生器。Arduino的程式設計能製作9種讓人放鬆的聲音和音效,包括風鈴、海浪,以及瀑布流水,現在你只要使用電視遙控器就可以選擇想要的音效,不論是用耳機或音響聽都非常方便。

解析情緒舒緩機
情緒舒緩機的基本構造包括一個Arduino UnoSparkFun MIDI 音效卡、一個紅外線遙控模組,跟一些電線。製造過程只需約15分鐘,主要是將一組4腳排針焊接在音效卡上。進階版則是利用自製的介面版在音效卡外接一個音頻放大器。

情緒舒緩機的核心是一個微小的MIDI合成器,作為表面安裝的IC。將這個晶片焊接在音效卡上,方便連接合成器跟ArduinoArduino的功用就像一個MIDI控制器,這個控件實際上就是用來控制合成器,告訴它應該做什麼。你可以用普通的電視遙控器操控Arduino

你也許已經很了解MIDI的概念,不過還是提示幾個重點:MIDI代表「樂器數位介面」,一個用來製作電子音樂的標準方法。與其錄製實際的聲音,MIDI歌曲是以數據的形式儲存,就像是自動鋼琴的樂譜捲筒紙。當重製音樂的時候,MIDI合成器可以模仿不一樣的樂器,一下子是大鋼琴,一下子是電子吉他。你的個人電腦或Mac作業系統內建MIDI合成器,點選附檔名為「.mid」的檔案就可以自動播放了。

情緒舒緩機也是以類似的方式運作,它並不是播放檔案中的一首歌,而是快速製作MIDI數據。樂器聲音與音調隨機組合,讓樂曲有一種飄渺的感覺。情緒舒緩機並不會演奏曲調,雖然它的確是利用一連串隨機挑選的鐘聲、和弦和其他音效製作出被認為是音樂的作品,但其實它是利用Asterisk製作音樂。

你還在等什麼?來設計並製造一臺情緒舒緩機,讓鄰居的貓去打擾其他人吧!

舒緩情緒機的音效
情緒紓緩機可以創造出數十種音效。你可以參考下面的「情緒舒緩機的音效表」,裡面列出所有內建的音樂和音效,然後用紅外線遙控器選擇想要的音效種類。前面4種音效是隨機的鈴聲(chim),組合各種樂鐘不同音量的聲音,4種鈴聲的音色都不一樣。例如第4種音效的「幽靜洞穴」(Hidden Grotto)樂音柔和,彷彿從地底飄出。第57種音效是海浪聲,有粉紅噪音的效果,有各種漸強漸弱的效果。例如「粉紅安卓」(Pink Android)沒有漸強漸弱,音量維持同樣大小;「退潮」(Ebb Tide)的海浪聲漸弱,最後消失,只留下風吹過海灘的聲音。「漫步雲端」(Floating With Clouds)是情緒舒緩機的重點音效,隨機組合3個和弦(CFG和弦,也稱IIVV和弦),這3個和弦跨過3個八度音,大部分的音樂都由此組成,所以隨機組合的和弦聽起來既熟悉且和諧。「黑夜濃霧」(Dark and Foggy Night)使用MIDI風琴隨機播放3種低音旋律,風琴的背景氣音產生神祕而詭譎的效果。

所有的音效播放30分鐘後會自動停止,重新播放只需要再按一下遙控器即可。(如果想要延長或縮短播放時間,只要修改情緒舒緩機的草稿碼就可以了)

情緒舒緩機的音效表

淺談MIDI

不需要了解MIDI的原理也可以使用情緒舒緩機,所以你也可以忽略這部分。原理概括如下:MIDI的資料由非同步序列介面傳送的訊息組成,訊息的大小只有2位元或3位元,卻定義了樂器、音階和聲量。

SparkFun MIDI音效卡(SparkFun MIDI Musical Instrument Shield)有大部分的MIDI合成器,支援第一代通用MIDI規格(GM1)中的音色,在MIDI音色表中,樂器以1128標記,不過更常見的是從0開始標記,在GM1音色表中0代表平臺鋼琴,1代表亮音鋼琴,2代表電音鋼琴;第二代(組)MIDI規格新增多種不成旋律的敲擊音色。

MIDI可以支援16個頻道,每一個頻道包含一種樂器,基本概念請參考下列圖表。每一個頻道都可以調整音量,甚至可以調整不同音符的音量,有這麼多個頻道,你就可以疊合不同的聲音。情緒舒緩機就疊合不同音量的鐘聲來創造特殊的鈴聲,讓音效更真實。

MIDI播放音符非常簡單,每一個數字代表一個音符,也就是鋼琴上的黑鍵或白鍵。例如要彈奏中音C,合成器會傳送音階60的訊息,要彈奏中音A(高於中音CA),訊息為69。代表音符的都是整數,只要簡單的數學就可以創作出所有的和弦了。
舉例來說,由中央C開始的C大調以音符606467組成,記得MIDI中,黑鍵也代表一個整數,所以音符用根音、根音+4和根音+7代表,而不是根音+3和根音+5。想了解更多情緒舒緩機MIDI的原理,可以上Wikipedia網站,上面有介紹更詳細的背景和電子原理。


材料

  • 情緒舒緩機的Arduino草稿碼(免費下載zip
  • Arduino Uno微控制器,Maker Shed商品編號#MKSP99
  • Power adapter for Arduino, 7V–12V直流電Arduino變壓器,350mA以上電源輸出、 管徑2.1公釐,Maker Shed商品編號#MKSF3
  • 附易拆式排針SparkFun 音效卡,SparkFun商品編號 #RTL-10780,或組合#DEV-10587#PRT-10007代替。
  • 38kHz紅外線遙控器模組,Vishay產品編號TSOP38238Digi-Key產品編號#751-1227-NDMouser產品編號#782-TSOP38238
  • 萬用遙控器(可支援Sony電視控制內碼,大部分的遙控器都有支援) 
  • 隨意一個鋁機盒(非必要)
  • 1/8″插頭的耳機
  • 1/8″插頭的喇叭(非必要)
  • 16V10μF液態電容(2
  • .0022µF固態電容(2
  • 470Ω電阻,誤差值(tolerance5%以下(2
  • 100kΩ電阻,誤差值5% 2
  • PCB電路板,RadioShack商品編號 #276-170
  • 1/8″音訊插孔,Radio Shack商品編號#274-249
  • 12″三協伺服馬達延長線(Servo extension cable, 3-wire),Parallax商品編號#800-00120
  • 3″公跳線(2
  • 三針公插頭


工具

  • 安裝Arduino IDE 1.0以上版本的電腦(可至arduino.cc免費下載)
  • 烙鐵和焊錫
  • 斜口鉗
  • 剝線鉗
  • 尖嘴鉗
  • 小型刀鋸



1. 組裝MIDI音效卡


  • 組裝很容易,因為工廠已經組裝好音效卡了,只缺少連接Arduino的針腳。
  • 首先在SparkFun音效卡上焊接28×126×1排針,零售版本內附排針,不過不一定每個版本都有附排針,如果沒有附排針,請另外購買。
  • 仔細焊接,小心鄰近的針腳,不要相連在一起。可以用三用電表測試針腳是否短路,如果你使用可以發出警示音的三用電表,短路的話就會發出警示音。

2. 連接音效卡和Arduino

  • 對齊音效卡和Arduino Uno的針腳,小心密壓。
  • 提醒:密合音效卡和Arduino時,務必確認針腳連接的位置,尤其要再三確認連接電源的針腳。雖然很令人驚訝,但是真的常常有人連接錯誤。Arduino的電源針腳只要左右相反就會導致短路,很可能損害Arduino或音效卡。


3. 連接紅外線模組


  • 小心彎折紅外線接收器模組的針腳至90度,針腳的方向和接收器的「半球型」(晶體)凸出面相反方向。將針腳插入音效卡針腳8910,接收器在音效卡上方,晶體部位朝上。
  • 注意:現在還佈要連接跳線runtime jumper(詳情見步驟5


4. 寫入Arduino草稿碼

图片

  • 下載情緒舒緩機的草稿碼:SmoothMoodsSketch.zip。這份壓縮檔包含情緒舒緩機草稿碼和3個加載的函式庫。需要將這3個函式庫複製至Arduino的函式庫資料夾中。在Windows作業系統中,函式庫資料夾的位置在(My) Documents/Arduino/libraries,如果沒有這個資料夾,需要自己新增一個。
  • 啟動Arduino 1.0以上版本,1.0之前的版本不支援這份草稿碼。如果複製函式庫時IDE已經啟動了,請先關閉軟體再重新啟動。使用USB傳輸線將Arduino連接至電腦,在Arduino IDE開啟情緒舒緩機的草稿碼,然後上傳至Arduino


5. 測試


1條短的(3”)跳線連接音效卡的數位針腳1和針腳3,這條跳線同時連接音效卡和Arduino串聯埠,成為一個環狀迴路。在音效卡接上耳機,現在可以聽到聲音嗎?有幾點需要確認:

  • 確定你是在音效卡上方接上連接針腳1和針腳3的跳線。
  • 確定耳機和音效卡的連接處緊靠密合。如果耳機內建音量調節,將音量調至最大。
  • 重新啟動Arduino。音效卡電源針腳的左方有一個重新啟動鍵。
  • 重新上傳草稿碼再試一次。




如果還是無法聽見任何聲音,情緒舒緩機草稿碼有除錯協助,可以參考除錯訊息找出草稿碼出錯的部分。詳情可參考步驟
11的<修改和除錯情緒舒緩機草稿碼>。

6. 設定遙控器

  • 這款情緒舒緩機有9個音樂頻道,你可以使用一般的電視遙控器選擇頻道,遙控器必須可以支援Sony電視的控制內碼,大部分的電視遙控器都可支援,請參考產品說明書設定。
  • 你可能需要測試多種程式碼才會找到支援情緒舒緩機草稿碼的模式,測試方法很簡單,只要按遙控器上的19按鍵即可,聽聽看有沒有2個音階的彈奏音出現,有的話就成功了。頻道和音效可以參考<情緒舒緩機的音效表>。
  • 第一次播放時,草稿碼預設播放頻道8的「漫步雲端」,這份草稿碼會將目前播放的音效紀錄在Arduino的唯獨記憶體中(使用唯讀記憶體的話,即使電源關閉資料也不會遺失),下次開啟Arduino時就會自動播放上次記錄的音效。



7. 外接音頻放大器(非必要)

  • 音效卡有1個方便的1/8”插孔可以接上耳機,也有1組標註「Speaker」的3個插孔可以連接音頻放大器和喇叭。這樣已經夠用了,不過如果你可以直接將使用電池的音頻放大器連接至音效卡,你可能想要用步驟8的介面板替代(特別是接地線和Arduino不同的音頻放大器)。
  • 為何要多此一舉?主因是Arduino Speaker的負極針腳不是接地端,只有緩衝的作用,持續輸出1.23伏特的電壓。這條線和耳機相通,介面上的電阻和電容是音效卡和外接音頻放大器的緩衝器,隔離直流電不要輸出至音頻放大器,防止音訊出現雜訊。 


8. 設置音頻放大器介面板

  • 你可以利用小型(170個插孔)的無焊麵包板製作介面板,也可以焊接至PCB。從最頂端或最底端切割12行以上的PCB的電路板,這樣一來,角落的接孔方便組裝音頻放大器,長邊的部分方便接地。
  • 參考上圖插入電阻和電容,並焊接至電路板。修剪多餘的針腳,確認10μF電容極性正確,其他元件沒有極性分別,不用擔心方向。參考電路圖用3條短電線(4”左右)焊接介面板和1/8”耳機接頭。
  • 重要:你的接頭和這裡的圖示可能有所差異,請參考你的接頭所附的線路圖。左右相反也不要緊。
  • 12″三協伺服馬達延長線剪下5”,要包含尾端的3個母接頭,並將母接頭插入介面板。再三檢查線路,確定沒有短路、沒有鬆脫的元件,也沒有焊接不成功的連接處。


9. 連接音頻放大器介面板(非必要)

  • 從音效板上拔除耳機,然後在音效板上焊接13針公插頭,針腳朝外。
  • 注意:焊接公插頭之後就無法連接喇叭針腳了。連接3針公插頭比連接2針喇叭針腳容易,焊接後你也可以修剪針腳。
  • 參考上圖,將介面板的針腳連接至Speaker的左右針腳。用3”跳線連接Arduino接地端和音頻放大器的接地端。最後將電池或交流電供電的音頻放大器連接至音效卡上的1/8”接孔。接上Arduino電源並開啟音頻放大器,然後調整音量。


10. 裝入外盒 (非必要)

  • 上圖是加裝1/8”塑膠外盒的情緒舒緩機成品。我根據Arduino的接孔在外盒上鑽孔(只有左上和右下兩個孔有功能),也根據音頻放大器介面板的接孔鑽孔,還在外盒底座黏上小型的塑膠緩震墊來避免傢俱磨損。
  • 你可以自己設計簡單或流行的外盒。我只有在外盒裝飾花紋,多鑽幾個孔維持音效卡平衡,再多鑽1個孔來連接1/8”音訊插孔,我還在針腳8910上鑽孔以連接紅外線遙控模組。外盒還需要留有可以連接Arduino USB連接埠、電源插頭和耳機接頭的孔洞,看你想要在外盒哪一面鑽孔都可以。


11. 接上電源

  • 剛開始寫入程式或測試頻道時,可以用ArduinoUSB連接線供電,不過之後應該會使用直流電變壓器供電(詳細規格請參考所需材料)。我的情緒舒緩機上,直流電變壓器和音頻放大器都是接上3孔插頭的延長線。
  • 修改和除錯情緒舒緩機草稿碼

情緒舒緩機草稿碼zip檔中的constants.h檔案可以設定樂器、音域、播放長度的草稿碼,你可以在這個檔案中更改這些設定。舒緩機的草稿碼內含除錯模式,你可以在此檢查舒緩機中的頻道可否正常運作,細節可以參考情緒舒緩機草稿碼zip檔中的readme檔案。設定完成後,你就可以不受鄰居的貓的干擾了。

  • 設定迴路跳線(Runtime Jumper

連接針腳1和針腳3迴路跳線Arduino和音效卡的溝通管道。上傳草稿碼至Arduino時先把跳線移除,播放音效時再接回來。如果要測試和除錯情緒舒緩機草稿碼時,不論是上傳草稿碼還是播放音樂都要先移除跳線。如果在除錯模式,也需要轉換DEBUG線,更多說明請參考情緒舒緩機zip檔內的readme

12. 老想法,新科技

  • 好想法永遠不過時,而且會不斷地進化。情緒舒緩機一開始的靈感來自John Simonton1970年代的「和弦EGG」(Chord EGG)專題。(John是有名的電子樂靈魂人物,幾年前過世了,不過他創立的PAiA公司至今仍在營運,繼續販售知名產品,一定要瞧瞧他們的Theremax特雷門琴!)
  • 「和弦EGG」中是一組精密的電路,可以透過八度音的合成器隨機播放CFG和弦的類比,和弦隨機播放,音量也隨機漸強漸弱,加上不斷轉換的頻率,創造出迷幻的效果。John新創了縮寫為EGG的「腦滿足產生器」(Encephalo-Gratification Generator)一詞,並建議使用耳機得到最佳效果。
  • 現今市面上很難找到八度音合成器了,不過沒關係,我們的專題改用了微控制器和現成的數位合成器。情緒舒緩機模仿了John的「和弦EGG」,不過我們用數位的方式改造它,有了MIDI科技豐富的音色,我們可以新增不同的音效。


GORDON MCCOMB
高登麥康1970年代起開始建造機器人,並著有暢銷書《機器人製作聖經(Robot Builder’s Bonanza)》(中文版由馥林文化出版)robotoid.com上可以看到他天馬行空的計劃,例如利用意念控制的機器人統治世界。


(譯:張婉秦、劉盈孜)
原文
Social media & sharing icons powered by UltimatelySocial