3, 2, 1

What do you want to see in Armagetron soon? Any new feature ideas? Let's ponder these ground breaking ideas...
Post Reply
voltisubito
On Lightcycle Grid
Posts: 20
Joined: Thu Mar 24, 2005 1:23 am

3, 2, 1

Post by voltisubito »

Hey.

I went ahead and threw together the audio for a male announcer 3, 2, 1.

QUESTIONS:
1 - Do we have to use wav?
2 - Do you think we could loop portions of the same mod file without a noticeable gap? (I just don't want to repeat sound samples.)
3 - I need ideas for in-game announcer type-stuff.
4 - Would you be open to having say 3 or 4 different explosions to randomly choose from to up the realism?

Considering the overall look/feel of AA, I think the explosion should be something much more "digital" sounding... Hopefully I'll be able to have it up sometime this week. It would be easy, but it is going to require a bit of foley. :D

TODO:
1 - Make 3, 2, 1 sounds in female voice, and blips.
2 - Create nicer digital-sounding explosion including variations for realism.
3 - Discuss/research starting/looping mod file from certain predefined points.
4 - Get kick-ass samples.
5 - Build mod(s).
6 - SFX for menu.
7 - Find suitable annoucer-type things to say during match.
8 - Record items from #7 in male/female/whatever we decide.
Attachments
aa-sound-dev03292005.tar.gz
(17.77 KiB) Downloaded 159 times
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

Explosions:

Should have varying explosions based on how fast the cycle is going, and also a different (bassier) set for when you hit the rim.

Looping mod files:

THere's plenty of code available for looping portions of mod files. The format itself already supports that sort of thing (read: it's already a binary format that loads directly into memory more or less as it stands, so looping is pretty easy, just set the pointer to wherever you want the next block of music to come from).

What's trickier is how will you make it so the mod file will be reasonably expressive to a musician and still give aa the information it needs to pick the right stuff? The main reason I suggested using wav (or raw) as a base format and rendering both mod and midi to it before using it was to deal with that exact problem. :) You could still go with the accompanying xml file (or whatever) that describes the mod file itself, that would work.

I'm assuming you're willing to break away from the higher-level sdl sound players and put together your own lower-level sound player using sdl primitives, but I don't recall if sdl offers those primitives. PortAudio has a great set, but you'd have to build on top of it. I could certainly point you in the right direction for a portaudio-based player (having used that library a bit myself).

Kick-ass samples:

Anything my guitar can generate. If you want a specific sound I can probably make it, but my effects pedal is fairly limited. (NOt that limited, it's a GT-3 after all) Anyway, if you work in gear-shifting-type changes with the cycle noise, my guitar's standard lowest E power chord makes a wonderful noise for the cycles. I've been wanting to record my truck and see what that'll sound like (It's a loud chevy 307).

I've got a whole slew of killer drum samples I could send you, too. Or I could send you to where I got them, I just downloaded them and they're free of restrictions for use as long as you credit the source, I think. Maybe you don't eve have to do that, I forget sometimes. :) But they're excellent drums, acoustic sampled.
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
voltisubito
On Lightcycle Grid
Posts: 20
Joined: Thu Mar 24, 2005 1:23 am

Post by voltisubito »

Explosions varying on speed... I like it...

I've often thought about doing the low guitar sliding thing for engines... for this I was wanting to try and hand build a few waveforms... Ultimately I need to go rent the darn movie and see how they made them sound... I was thinking something incredibly *simple*.

As far as coding goes, I'm still learning. I'm sure I can eventually build a player for this stuff.

Is wav format free (speech) to use?? I would be ok with a free (beer) solution, but if I can do it with something GPL'd, I would rather.

I haven't done much drum work yet... so I may need some decent samples. Actually, half the fun for me is recording the samples. :wink:
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

wav is free to use. It's the defualt format of the popular program ecasound, in fact. :) It's developed by Microsoft, but free to use. To be frank, I don't think they *could* put any restrictions on its use because it's totally trivial and obvious a format to anybody in the field. Now, asx and wma is a different story.

I tried the pick slide first, actually, and decided it would be a better grinding sample. :) Haven't tried it as a grindin sample, though.

Oh yeah, I couldl probably get my wife to do the girl's voice for the countdown (she said she would), but I don't currently have a way to plug a mic into my computer for it.

For blips:

Your standard metal band on a low, palm-muted e. First three times (quickly), then two, then one, then a chord (and the cymbal crash) and the music starts. How about that? (I wat all metal for the soundtrack, sorry. I'm one of the few players who wants the game to move beyond imitating the movie asap because as good as the movie is, we can do better)
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
voltisubito
On Lightcycle Grid
Posts: 20
Joined: Thu Mar 24, 2005 1:23 am

Post by voltisubito »

I really like the XML idea. Then if anyone wanted to make their own MOD, they could just put together the XML to suit their needs.
Oh yeah, I couldl probably get my wife to do the girl's voice for the countdown (she said she would), but I don't currently have a way to plug a mic into my computer for it.
:D Thats cool, I can get someone to do it.
Your standard metal band on a low, palm-muted e. First three times (quickly), then two, then one, then a chord (and the cymbal crash) and the music starts. How about that? (I wat all metal for the soundtrack, sorry. I'm one of the few players who wants the game to move beyond imitating the movie asap because as good as the movie is, we can do better)
I may be outvoted here, but I'm thinking of something a bit more sterile. I think a "metal" theme would be a cool alternate music pack or something like that. You know, make the game music its own thing, and then people can submit themed music packs or something like that... What do you think??
I could certainly point you in the right direction for a portaudio-based player (having used that library a bit myself).
Please do. I need to start doing a bit of research on that stuff.

If you think that ogg will use too much cpu, what about raw format?
User avatar
Seeker
Round Winner
Posts: 302
Joined: Fri Feb 06, 2004 8:37 pm
Location: Pasadena, Maryland, USA
Contact:

Post by Seeker »

what about an electrical arc sound for the grind, not the crackling sound it kinda has now but a good buzzing arc. for that matter hitting a wall could sound like a good high voltage discharge.


Ill see if i can find some samples online, or cook some up on an old tesla coil if i can find the one i had when i lived with my parents.

playing with 15k-20k volts is fun >8]
HEY!!!!! Respect your elders...........Let us win a round!!!
User avatar
Your_mom
Match Winner
Posts: 653
Joined: Sun Jun 06, 2004 1:45 am

Post by Your_mom »

as a friend of mine once said
"blast beats are the answer to everything"
User avatar
eggcozy
Average Program
Posts: 85
Joined: Sat Mar 27, 2004 8:30 pm
Location: CA,USA
Contact:

Post by eggcozy »

3, 2, 1, go


edit- I'm an idiot. I still can't figure out how to attach files. I did 123go ... it was a joke .. oh well


there we go, must be tarred. I will regret posting this im sure.
Attachments
123go.tar
123go
(130 KiB) Downloaded 270 times
Last edited by eggcozy on Wed Mar 30, 2005 6:05 am, edited 2 times in total.
voltisubito
On Lightcycle Grid
Posts: 20
Joined: Thu Mar 24, 2005 1:23 am

Post by voltisubito »

Umm... I don't think you attached anything.

As for '0' or 'go'... I was thinking of having a universal cycle shooting forward noise as opposed to actually saying anything...
User avatar
Lucifer
Project Developer
Posts: 8640
Joined: Sun Aug 15, 2004 3:32 pm
Location: Republic of Texas
Contact:

Post by Lucifer »

Portaudio:

Start by going here:
http://www.portaudio.com/

Portaudio is a C library, but it's easily wrapped in C++.

The basic procedure is like this:
1. Initialize the library.
2. Pick a sound device (or go with the default)
3. Write your callback function. Your callback function should take sound data from your own internal structures and copy them to POrtAudio's buffer. PortAudio will call your callback function at regular intervals.
4. Start PortAudio when you're ready to start processing sound.
5. Read some number of samples (usually done in a different thread, and most importantly, POrtAudio doesn't read any sound files, you need a separate reading library)
6. Mix the samples or process them (do this internally with your own code)
7. Place the samples in your own buffer
8. GO back to 5, repeat until done
9. Stop the player
10. Destroy everything, leave no memory leaks, etc.

It's a fairly straightforward API. You should read the portaudio.h file and then come back and talk some more. :)

For reading the sound files, you'll want to try to get SDL to read them as much as possible. If you want to read a mod file and render it before sending it to portaudio, you'll have to get a mod reader (or write one, I can dig up my post on the Hydrogen list that has a link to where mod files are described in detail for programmers). When all else fails, libsndfile is your friend.

Audacity uses libsndfile and portaudio. THeir import functions use other libraries as needed, such as lame or libvorbis, or whatever. But the base program uses libsndfile and portaudio.

Generally you link portaudio directly into your application. So you don't link to it as a shared library, and you don't have to worry about dll hell with it. It's a small enough library that this is the *best* way to handle it. It compiles out of the box on gcc on any number of platforms, and pretty much every compiler microsoft has on the market right now.

On Ogg Vorbis:
I think aa should support a number of formats, but the default installation should be small. So it should support ogg and wav and mp3 and all sorts of stuff, but it should only come with mod because mod files are so small. That would make for the best soundtrack possible for a small download, and still give us 3rd-party people a way to make really nice soundtracks, but the price of the really nice soundtracks of course is the size of the download.
Image

Be the devil's own, Lucifer's my name.
- Iron Maiden
voltisubito
On Lightcycle Grid
Posts: 20
Joined: Thu Mar 24, 2005 1:23 am

Post by voltisubito »

eggcozy wrote:3, 2, 1, go


edit- I'm an idiot. I still can't figure out how to attach files. I did 123go ... it was a joke .. oh well


there we go, must be tarred. I will regret posting this im sure.
Dude... thats hilarious.

I think 'go' is going to be my startup sound now.
voltisubito
On Lightcycle Grid
Posts: 20
Joined: Thu Mar 24, 2005 1:23 am

Post by voltisubito »

It's a fairly straightforward API. You should read the portaudio.h file and then come back and talk some more.
Ugh... stupid other commitments...
User avatar
Z-Man
God & Project Admin
Posts: 11587
Joined: Sun Jan 23, 2005 6:01 pm
Location: Cologne
Contact:

Post by Z-Man »

Lucifer wrote: 3. Write your callback function. Your callback function should take sound data from your own internal structures and copy them to POrtAudio's buffer. PortAudio will call your callback function at regular intervals.
4. Start PortAudio when you're ready to start processing sound.
6. Mix the samples or process them (do this internally with your own code)
7. Place the samples in your own buffer
If that's all PortAudio does ( no mixing functions, no music playback functions ), then SDL does exactly the same for you. Every once in a while, a function of yours is called and you fill a buffer with bitsnbytes to play.
Post Reply