Link to home
Start Free TrialLog in
Avatar of mitya83
mitya83

asked on

Sound unit

I need sound unit that can play multiple waves simultaneously, and can play one wave i.e. from start and from half simultaneously (i.e. one explosion sound covering earlier explosion, but now setting it of (as in all games)).
It should auto-detect sound card, and work with multiple sound cards. (differents SBs, maybe Adlib, etc.). I'll increase points if it's too difficult.
Avatar of harrys
harrys

Take a look at ftp://x2ftp.oulo.fi this is the primary source for msdos game programming related information.
Avatar of mitya83

ASKER

I cannot contact with it :(
a typo I always make, sorry
ftp://x2ftp.oulu.fi/
 I'm sorry, I have a question. What directory can i get this source ?
The directory ftp://x2ftp.oulu.fi/pub/msdos/programming/mxcode/00index.html hold sources in various languages concerning sound hardware programming.
x2ftp is generally a good source for msdos game/demo/lowlevel stuff
Avatar of mitya83

ASKER

Lots of stuff, but I can't find exactly what I want. I need the unit that can "overlay" sounds (play them in one time), and for each sound define pan (how left or right on speakers) and volume. Better wav's
You might also want to take a look at www.hornet.org (the mother of all euro demo site :) ).  They got a code section out there that might have what you are looking for.
To "overlay" sounds you simply add the samples arithmetically.  Of course this would drastically increase the overall loudness.  Therefore it is better to take the average of each sample for the resultant sample.
Avatar of mitya83

ASKER

Hey! Have you done any games before, any of you? Then you should have such a unit! I need it, not comments, if I wanted to do it myself, I'd not ask such questions, so, PLEASE, say me where I can get this!
Avatar of mitya83

ASKER

Hey! Have you done any games before, any of you? Then you should have such a unit! I need it, not comments, if I wanted to do it myself, I'd not ask such questions, so, PLEASE, say me where I can get this!
Avatar of mitya83

ASKER

PLEASE, HELP ME!!!!!!!!!!!!!
> and for each sound define pan (how left or right on speakers

Here is a simple algorithm you can use to set the pan position:

if $00 is hard left and $ff is hard right:

LeftChannelVolume := (1-p/255)*v;
RightChannelVolume := (p/255)*v;

where p is the pan position and v is the volume.
I have such unit, but it works only with SB and SB compatible. Tomorrow i'll put it in my web page, so you have to wait a bit...
ASKER CERTIFIED SOLUTION
Avatar of girts063098
girts063098

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
 Hey girts, where is Unit GXMS.PAS ?
 Hey girts, where is Unit GXMS.PAS ?
Avatar of mitya83

ASKER

It looks pretty fine, but on my SB AWE64 gold initialisation failed. (initsb). Maybe I'm doing something wrong? Please give me source to play 2 waves simultaneously (example pas program).
init failed on my card too. maybe some bug or misunderstand?
ok, ill write a small test programm
Avatar of mitya83

ASKER

Please hurry, i'll need it very soon. post it here, my mail client no longer works (i overloaded my 2,5 Mb mailbox).
Here it is:
http://ikaruss.r1g.edu.lv/~girt/code/sb.pas

and 2 data files:
http://ikaruss.r1g.edu.lv/~girt/code/0.ra
http://ikaruss.r1g.edu.lv/~girt/code/1.ra

I tested it on 3 machines with SB16, SB32, Crystal(SB compatible)
with only himem.sys loaded, and it worked perfectly.

Avatar of mitya83

ASKER

Hey, great! My error was InitSb(220,5,1,5) instead of InitSb(220h,5h,1h,5h)
The last question : what about volume control for each sound, and panning?
You cant control volume for each sound with this unit, you have to do it yourself, by multiplying each byte(word, dword) with 0 to 1. And about panning as I remember this unit could play stereo also, so you have to multiply each channel with different constant.

Avatar of mitya83

ASKER

ok