討論區快速選單
知識庫快速選單
討論區最近新進100則主題 政府補助!學嵌入式+物聯網 會設計+會程式=頂尖前端工程師
[ 回上頁 ] [ 討論區發言規則 ]
變音器
更改我的閱讀文章字型大小
作者 : pf7(PTA)
[ 貼文 12 | 人氣 589 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/12 下午 01:56:16
我想做一個軟體的"變音器",

由麥克風聲音輸入可自己調整變男生、女生、唐老鴨、外星人的聲音,

SDK的function找不到,

是否要動用到DDK去改變analog-to-digital convert(ADC)的driver.

請各位大大幫幫忙. 3Q!
作者 : gwanlin(gwanlin)
[ 貼文 193 | 人氣 7864 | 評價 340 | 評價/貼文 1.76 | 送出評價 12 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/15 上午 10:33:38

>我想做一個軟體的'變音器',
>
>由麥克風聲音輸入可自己調整變男生、女生、唐老鴨、外星人的聲音,
>
>SDK的function找不到,
>
>是否要動用到DDK去改變analog-to-digital convert(ADC)的driver.
>
>請各位大大幫幫忙. 3Q!
>
你會遇到蠻多問題的。
DDK可能還不用動,這些都還算是application的層面。
首先是想要realtime的改變聲音,可能有困難,因為你是在軟體處理完聲波資料,再透過DirectX或ASIO送到音效卡去發出聲音來,但不管是DX還是ASIO,這中間的latency都會讓整個處理變得不夠realtime。(ASIO是專門給聲音硬體使用的Driver規格,只有較高階的錄音卡支援,我看過它的SDK,其實就是讓硬體把driver包成它指定的格式,讓application不透過windows或mac的device管理機制來驅動聲音裝置,以省掉它們浪費的時間)

再來就是比較基礎的硬體控制技術,與軟體上面編輯聲音波形的技術了。前者可以去看MSDN,後者就需要看一點聲音訊號處理的東西,譬如男聲變女聲,可以用播放速度的改變來做到,機器戰警的聲音,其實是經過一種叫做"chorus"的效果器,可以用複製原始波形,經過一些頻率的改變之後再疊回原本的波形中,但是時間上面差一點點......

但是只要是這種做法,就很難做到realtime,音樂人在使用的軟體效果器,如果要做到realtime,都是使用另外的DSP卡,讓程式在DSP卡上面處理,處理完再送到錄音卡上面播出來,那種DSP卡一張的價錢就比得上一台光華牌電腦了.....
作者 : pf7(PTA)
[ 貼文 12 | 人氣 589 | 評價 0 | 評價/貼文 0 | 送出評價 2 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/17 上午 10:47:53
>你會遇到蠻多問題的。
>DDK可能還不用動,這些都還算是application的層面。
>首先是想要realtime的改變聲音,可能有困難,因為你是在軟體處理完聲波資料,再透過DirectX或ASIO送到音效卡去發出聲音來,但不管是DX還是ASIO,這中間的latency都會讓整個處理變得不夠realtime。(ASIO是專門給聲音硬體使用的Driver規格,只有較高階的錄音卡支援,我看過它的SDK,其實就是讓硬體把driver包成它指定的格式,讓application不透過windows或mac的device管理機制來驅動聲音裝置,以省掉它們浪費的時間)
>
>再來就是比較基礎的硬體控制技術,與軟體上面編輯聲音波形的技術了。前者可以去看MSDN,後者就需要看一點聲音訊號處理的東西,譬如男聲變女聲,可以用播放速度的改變來做到,機器戰警的聲音,其實是經過一種叫做'chorus'的效果器,可以用複製原始波形,經過一些頻率的改變之後再疊回原本的波形中,但是時間上面差一點點......
>
>但是只要是這種做法,就很難做到realtime,音樂人在使用的軟體效果器,如果要做到realtime,都是使用另外的DSP卡,讓程式在DSP卡上面處理,處理完再送到錄音卡上面播出來,那種DSP卡一張的價錢就比得上一台光華牌電腦了.....

可愛好心的 gwanlin, 雖然是半路出家, 對於您的見解很有專業水準呦!

我看過 SDK 有關 Mixer 的介紹, 使用這個 mixerSetControlDetails(),
只能控制"音量"及"靜音".

其中 MSDN 有提到說, "Microphone input " 會進入 "ADC Wave Input",
就是 analog-to-digital converter 的部分,
我想在這個地方攔截聲音的data stream, real time 即時處理波形後,
在經DirectX後送至音效卡做撥音的動作, 不知是否可行.

誠如你所說, 我想
"讓application透過windows或mac的device管理機制來驅動聲音裝置"

我知道混音透過硬體的DSP卡來處理會 real time 且效果佳,
就像 DVD 解壓縮透過硬體來處理的效果是一樣的,
但是目前環境允許我只能用軟體模擬硬體, 雖然不能 real time,
做法會較繁複, 慢一點應該可以接受滴, 這可能是我傾向的方式,
請指點一下囉!

方便給我您的Mail嗎?
我的mail: pf7pf7@yahoo.com.tw

作者 : gwanlin(gwanlin)
[ 貼文 193 | 人氣 7864 | 評價 340 | 評價/貼文 1.76 | 送出評價 12 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/21 上午 12:40:37
>可愛好心的 gwanlin, 雖然是半路出家, 對於您的見解很有專業水準呦!
>
>我看過 SDK 有關 Mixer 的介紹, 使用這個 mixerSetControlDetails(),
>只能控制'音量'及'靜音'.
>
>其中 MSDN 有提到說, 'Microphone input ' 會進入 'ADC Wave Input',
>就是 analog-to-digital converter 的部分,
>我想在這個地方攔截聲音的data stream, real time 即時處理波形後,
>在經DirectX後送至音效卡做撥音的動作, 不知是否可行.
>
>誠如你所說, 我想
>'讓application透過windows或mac的device管理機制來驅動聲音裝置'
>
>我知道混音透過硬體的DSP卡來處理會 real time 且效果佳,
>就像 DVD 解壓縮透過硬體來處理的效果是一樣的,
>但是目前環境允許我只能用軟體模擬硬體, 雖然不能 real time,
>做法會較繁複, 慢一點應該可以接受滴, 這可能是我傾向的方式,
>請指點一下囉!
>
>方便給我您的Mail嗎?
>我的mail: pf7pf7@yahoo.com.tw
>
>

我想還是在這邊討論吧!!若有錯也請高手指教!!

其實我有一陣子也想做類似的東西,看了一會兒MSDN之後,又忙到其它地方去了。

我覺得這玩意兒有一個概念要分清楚,就是那些事情是硬體在做,那些事情是軟體在做。

其實縱觀這些發聲的裝置,它們可以做的工作就是I/O而已。以音效卡來講,它主要就是錄音與放音兩件工作:放音的話,可能就是先準備好它可以吃的資料格式,再依照它指定的方式喂進去硬體,可能是Win32本身的API,也可能是DX的API,也可能是ASIO的API,最後透過硬體上的DAC發出聲音來;錄音的話,就是指定好資料的來源,準備一塊記憶體,然後用硬體上的ADC把聲波轉成數位資料,存到指定的記憶體空間去。

以上的事情跟HW比較近,可能driver會幫我們做,只要call driver的API或Windows給的API就行啦!!而以外的事情就是軟體在做。

假設現在我們得到一個array,堶惘s的就是PCM data,那麼軟體要做的就是改變PCM data的內容,那可能得從聲音的原理來下手,有很多我也是只知道一點概念。

如果你想要跨PC與Mac,可能研究ASIO的API比較好,大概就是十多個function,只要照順序call就可以了。網路上可以找到ASIO 2.0的SDK,好像SoundBlaster的Audigy就開始支援ASIO了。

講得有點亂,希望對你有幫助。
作者 : gwanlin(gwanlin)
[ 貼文 193 | 人氣 7864 | 評價 340 | 評價/貼文 1.76 | 送出評價 12 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/21 上午 12:49:42
sorry, 發現之前講錯了,「讓硬體把driver包成它指定的格式」,應該是「讓driver把API包成ASIO指定的格式」........
作者 : kennytsai(Kenny) C++卓越專家貼文超過500則
[ 貼文 714 | 人氣 2903 | 評價 2820 | 評價/貼文 3.95 | 送出評價 139 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2004/5/21 下午 01:55:34
Search "Waveform Audio" on MDSN.
裡面有提到PCM的相關議題。
我玩過MSDN所附的一個Sample,他可以改變歌曲播放的速度,這表示透過SDK的API,也可以作一些低階的改變。

 板主 : 青衫 , Raymond
 > Visual C++ - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - Visual C++ - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
Visual C++
1 青衫 10990 
2 Raymond 9820 
3 Clier 7630 
4 小約翰 2500 
5 Cog 2030 
6 coco 1790 
7 aming 1410 
8 牧童哥 1400 
9 r2109 1380 
10 Akira 1350 
Visual C++
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.140625