顯示具有 audio 標籤的文章。 顯示所有文章
顯示具有 audio 標籤的文章。 顯示所有文章

2014-10-28

[程式]用Squeak Smalltalk寫一個簡單的MIDI發聲程式

前一陣子買了61鍵的Casio XW-P1合成器來玩,但是都沒有嘗試與電腦連動。
最近突然想到,以前曾經接觸過Squeak Smalltalk,在它內建的class庫中,正好有SimpleMIDIPort這個class可以讓我們接收與發送MIDI event。
只要靠SimpleMIDIPort,我們就可以寫個簡單的程式,送些MIDI event到外接的MIDI設備,看看電腦可以對該MIDI設備做到什麼程度的控制。
於是筆者就在這裡記下一段簡單的Smalltalk程式碼,方便之後做些測試。

| midiPortNum midiPort |
midiPortNum := SimpleMIDIPort outputPortNumFromUser.
midiPort := SimpleMIDIPort openOnPortNumber: midiPortNum.
Transcript show: midiPortNum; cr; show: midiPort; cr.

midiPort midiCmd: 16rC0 channel: 0 byte: 90. "change program"

midiPort midiCmd: 16r90 channel: 0 byte: 60 byte: 16r7F.
(Delay forSeconds: 0.5) wait.
midiPort midiCmd: 16r80 channel: 0 byte: 60 byte: 16r0.
midiPort midiCmd: 16r90 channel: 0 byte: 60 byte: 16r7F.
(Delay forSeconds: 0.5) wait.
midiPort midiCmd: 16r80 channel: 0 byte: 60 byte: 16r0.
midiPort midiCmd: 16r90 channel: 0 byte: 67 byte: 16r7F.
(Delay forSeconds: 0.5) wait.
midiPort midiCmd: 16r80 channel: 0 byte: 67 byte: 16r0.
midiPort midiCmd: 16r90 channel: 0 byte: 67 byte: 16r7F.
(Delay forSeconds: 0.5) wait.
midiPort midiCmd: 16r80 channel: 0 byte: 67 byte: 16r0.
midiPort midiCmd: 16r90 channel: 0 byte: 69 byte: 16r7F.
(Delay forSeconds: 0.5) wait.
midiPort midiCmd: 16r80 channel: 0 byte: 69 byte: 16r0.
midiPort midiCmd: 16r90 channel: 0 byte: 69 byte: 16r7F.
(Delay forSeconds: 0.5) wait.
midiPort midiCmd: 16r80 channel: 0 byte: 69 byte: 16r0.
midiPort midiCmd: 16r90 channel: 0 byte: 67 byte: 16r7F.
(Delay forSeconds: 0.5) wait.
midiPort midiCmd: 16r80 channel: 0 byte: 67 byte: 16r0.

midiPort midiCmd: 16rC0 channel: 0 byte: 0. "reset program"
midiPort midiOutput: (#(16rFF) asByteArray). "system reset"

以上的程式範例會用120bpm的速度控制MIDI設備的Channel 0放送Twinkle Twinkle Little Star的前7個主音。

如果有現成的MIDI檔的話,也可用下面的程式開啟MIDI檔,並輸出到作業系統提供的MIDI裝置。

| file score scorePlayer midiPortNum |

file := FileStream fileNamed: 'C:\Windows\Media\flourish.mid'.
file binary.

score := ((MIDIFileReader new) readMIDIFrom: file) asScore.
file close.

scorePlayer := ScorePlayer onScore: score.

midiPortNum := SimpleMIDIPort outputPortNumFromUser.
scorePlayer openMIDIPort: midiPortNum.

scorePlayer reset.
scorePlayer startMIDIPlaying.
(Delay forSeconds: 60.0) wait.
scorePlayer stopMIDIPlaying.

之後想要測什麼就可以用這些template程式碼起頭了。

2013-06-27

[EAC]光碟機存取音樂CD的Read/Write Offset特性,如何影響rip下來的音樂數據內容?

剛剛在查要買什麼新光碟機時,意外看到以前在巴哈姆特討論區GameMusic板回給網友louis000的文章。
我想這篇就足以把光碟機讀寫CD audio sample時造成的offset現象,如何影響rip下來的音樂數據內容的來龍去脈解釋清楚了:

2012-01-05

[耳機]Etymotic ER-6

因為之前帶到公司用的耳機Labtec Elite-840的骨架斷掉了,在修復不划算的情況下,筆者決定購入一隻新的耳機。然而筆者的耳朵已經被Alessandro Music One慣壞了,只想要買隻音質跟Music One差不多或是更好的耳機,所以就去考察價位在新台幣$4000~$8000區間的耳機有哪些吸引我的。因為筆者偏好高頻尖銳,中頻清晰,低頻有就好的耳機,這種音色的不二之選當然是Etymotic助聽器廠推出的ER系列耳道式耳機。不過Etymotic已經停產了中阻抗的ER-6與低阻抗的ER-6i,改由低頻較重、音色較符合大眾胃口的HF5等新款耳機取代,在庫存減少的情況下,要買到ER-6或ER-6i不太容易,所以筆者曾經想一次到位,直上ER-4B。後來想想,家裡的Music One還沒有故障,買了這隻耳機後,大概只有外出時才會用到,所以就先hold住敗入ER-4B的計畫。後來因緣際會,發現一些店家還有ER-6存貨,於是筆者就刷個卡,把ER-6帶回家了。

包裝:

2011-08-04

[音響]Freedom Driver TX-N20 共振音響

現代科技發達,聲音的記錄與還原已經不是很困難的事情。尤其是還原與重現聲音的產品,早就已經遍布在每戶人家。我們只要用任何的電子播放器(比如說MP3隨身聽或個人電腦)輸出聲音的電子訊號,再接上喇叭耳機之類的發聲裝置,就能重現動人的音樂或是精彩的演說。然而喇叭與耳機發展至今,雖然還一直在追求更細緻的音質,但是其基本結構卻一直沒有什麼太大的變化。直到共振音響問世後,才總算有了新的氣象。

所謂的共振喇叭,就跟一般喇叭一樣,把電流訊號轉成振動波,只不過喇叭本體不直接利用這股振動力量推動空氣,而是用這股力量推動喇叭所接觸的固態物體,讓固態物體振動空氣而發出聲音。說穿了,這原理跟潛艦用的聲納發聲系統是很類似的。所以使用共振音響時,會發現到很有趣的現象:將共振喇叭拿在手上時,只會聽到一些細小的雜音;但是當共振音響放到桌子上時,你就會清楚聽見美妙的音樂從桌面傳了出來。

共振音響就跟一般喇叭一樣,也有音質好壞之分。而目前公認音質最好的共振音響產品,是由中國廠商所生產的Freedom Driver共振音響系列。筆者買的Freedom Driver TX-N20,就是Freedom Driver共振音響系列的其中一型。

Freedom Driver TX-N20的外箱。筆者買的是白色款式:

如外箱所示,這台Freedom Driver TX-N20共振音響本體,就只是一塊巴掌大而沉甸甸的小方塊。