請問如何做出音效的前後跟距離的效果 |
尚未結案
|
Naruto
一般會員 發表:20 回覆:19 積分:7 註冊:2003-03-18 發送簡訊給我 |
|
shieh2700
高階會員 發表:0 回覆:127 積分:100 註冊:2002-06-13 發送簡訊給我 |
|
superlevin
高階會員 發表:181 回覆:313 積分:180 註冊:2003-01-12 發送簡訊給我 |
可以參考http://www.x-sound.com/b5/001/003/00000011.htm
http://imlab.cs.nccu.edu.tw/project/old/CSProj97/s8444/csproj/final2/
另外有一本DirectX VB.NET 3D電玩程式設計實例入門,裡面有一章節以實例說明DirectSound應用程式,音量調整及3D音效在遊戲中的功用與使用方法。 程式不是寫來玩的 而是要創造價值
------
林壽山 網站: http://superlevin.ifengyuan.tw mail: superlevin@gmail.com |
superlevin
高階會員 發表:181 回覆:313 積分:180 註冊:2003-01-12 發送簡訊給我 |
轉貼控制左右聲道 //音量控制
procedure TForm1.TrackBar1Change(Sender: TObject);
var
t,v:Longint;
begin
// if a=0 then Exit;
t:=TrackBar1.Position;
v:=(t shl 8)or(t shl 24);
waveOutSetVolume(0,v);
end; procedure tform1.trackbar1changer (sender:tobject);//左聲道
var t,v:longint;
begin
t:=trackbar1.postion;
wavoutgetvolume(0,@v);
v:=v and $ffff0000 or (t shl 8);
wavoutsetvolume(0,v);
end; procedure tform1.trackbar2changer (sender:tobject);//右聲道
var t,v:longint;
begin
t:=trackbar2.postion;
wavoutgetvolume(0,@v);
v:=v and $0000ffff or (t shl 24);
wavoutsetvolume(0,v);
end; //獲得當前音量值
procedure TForm1.FormCreate(Sender: TObject);
var
v:longint;
begin
waveOutGetVolume(0,@v);
TrackBar2.Position:=hi(v);
TrackBar3.Position:=hi(v shr 16);
if hi(v)>hi(v shr 16) then
TrackBar1.Position:=hi(v)
else
TrackBar1.Position:=hi(v shr 16);
end; end. 函數說明: waveOutSetVolume
第一個參數是波形檔輸出設備識別字;
第二個參婁是音量大小。這是一個32位元的整數,低16位元表示左聲道的音量,
高16位元表示右聲道的音量。 waveOutGetVolume
第一個參數是波形檔輸出設備識別字;
第二個參數是一個32位元整數的指標。 可以用auxoutsetvolume(id:integer,volume:dword);具體使用方法請查閱DELPHI help,WIN32SDK.HLP。 其中ID是設備代號,我在實際編程中發現ID隨著機器的不同而不同,但是他可以直接控制各種設備的音量,你可以用不同的ID試一試(ID一般在1~8之間),音量設置方法wjiachun好像沒錯! 程式不是寫來玩的 而是要創造價值
------
林壽山 網站: http://superlevin.ifengyuan.tw mail: superlevin@gmail.com |
Naruto
一般會員 發表:20 回覆:19 積分:7 註冊:2003-03-18 發送簡訊給我 |
|
s8556026
一般會員 發表:10 回覆:43 積分:15 註冊:2003-07-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |