在柯南的劇場版《戰慄的樂譜》之中,柯南通過唱出特定頻率的聲音來類比電話的按鍵音,從而由遠處撥通了警示電話。我看字幕上寫著“切實可行”,便對此產生了興趣。
我想我們完全可以用編程來實現一個電腦鍵盤,通過按鍵從音箱中發出對應的電話按鍵音,傳入電話耳機實現撥號。
也許這樣只會對電話鍵盤進水的人有用吧(比如我-_-#),但是進一步,我們還可以實現通過電腦管理一個常用電話薄,然後通過便捷的關鍵字過濾尋找電話(比如輸入“王”、“微軟”、“136”等字串,快速過濾掉不含關鍵字的連絡人),並呼出,相信沒有哪個電話機會比電腦的管理功能更強大吧。
還可以為OutLook寫一個外掛程式,來實現對連絡人的撥叫。
網上搜了搜,原來有人同樣對此感興趣,並已經做了實驗:http://www.xycad.com/html/93/t-32793.html
他是根據片中的這個表格來產生的按鍵音:
而我發現Adobe的Audition 3.0中就內建了這樣的功能,只需開啟菜單“產生 > 脈衝訊號..”:
可以看到,這裡已經有那個表格了,而預設的脈衝訊號設定也就是使用的這個表格。
輸入“13800138000”,調整一下其他選項,按“確定”產生:
局部放大看看:
只需按此方法將每個按鍵音產生,並獨立儲存為.wav檔案,就可以嵌入在.Net程式中,通過SoundPlayer播放了。
我為此編寫了WaveCallSound.dll,專門實現發音功能,其中已內嵌了這些獨立的按鍵音資源:
這裡面只有一個WaveCallSound靜態類,包含兩個擴充方法,分別對應string和char類型,作用就是播放對應的電話號碼按鍵音:
使用WaveCallSound.dll時只需將其引入項目,然後引用WaveCall命名空間,之後只要這樣使用就可以了:
WaveCallSound.播放('9',true);
WaveCallSound.播放('8',true);
WaveCallSound.播放('7',true);
WaveCallSound.播放('*',true);
WaveCallSound.播放('#',true);
WaveCallSound.播放('3',true);
WaveCallSound.播放('5',true);
'6'.播放(true);
'3'.播放(true);
'4'.播放(true);
WaveCallSound.播放("13988991029");
"10060".播放();
然後我還製作了一個WPF程式WaveCallKey(中文名暫訂為“我靠”?),用以提供撥號介面:
使用方法如下:
1.拿起電話耳機,使話筒貼近音箱:
2.使用WaveCallKey程式進行撥號。
3.正常通話即可。
雖然固話逐漸會被手機替代,但現在也還是有很大份額的,所以這樣的應用也還是有些意義的(手機話費全報銷的同志就不要喊話了~)。
感興趣的朋友可以在此基礎上做出電話薄管理或者OutLook外掛程式,相信那會在業務員中大賣的哈^^
WaveCallKey撥號程式及WaveCallSound.dll下載:http://files.cnblogs.com/SkyD/WaveCallKey.rar
獨立的撥號音wav檔案:http://files.cnblogs.com/SkyD/PhoneWave.rar
本文的PDF版本下載:http://www.box.net/shared/e43j0xmsc4
http://www.uushare.com/user/icesee/file/1018323
PS:話說柯南都演了10年了,電視上播出有500多集了吧,他們居然還在上一年級!!萬年留級生啊,太缺了~