Difference between revisions of "New Sound Engine"

From Armagetron
m (Reverted edits by 201.17.121.9 (Talk); changed back to last version by Wrtlprnft)
Line 1: Line 1:
[http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832254) wwe ringtones] [http://forum.kharkiv.edu/SForums/topic.asp?TOPIC_ID=311&FORUM_ID=3&CAT_ID=3 buy fioricet] [http://dompasvi.jubiiblog.de/ sony ericsson ringtones] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1069 carisoprodol online] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=320 clonazepam online] [http://livarsit.blogdiario.com/ qwest ringtones] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$108 paxil online] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832252) cheap vicodin] [http://www.forumhosting.org/forum.php?mforum=dehays cheap alprazolam] [http://relc4tel.jubiiblog.de/ propecia] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1070 xanax online] [http://www.csun.edu/learningnet/discussion/file.php?0,file=115 xanax online] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=324 didrex online] [http://forum.kharkiv.edu/SForums/topic.asp?TOPIC_ID=307&FORUM_ID=3&CAT_ID=3 phentermine online] [http://www.csun.edu/learningnet/discussion/file.php?0,file=139 didrex online] [http://peacedoorball.blogspot.com valium without prescription] [http://www.rso.cmich.edu/prevet/messageboard/000031b6.htm norco online] [http://boc4tmon.blogdiario.com/ nokia ringtones] [http://darrota.blogdiario.com/ free sony ringtones] [http://naughtyburrito.blogspot.com 10 best casino online] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=366 order viagra] [http://www.forumhosting.org/forum.php?mforum=acelsitrac free nextel ringtones] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$133 ultram online] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=321 free cool ringtones] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832219) but lorazepam] [http://www.csun.edu/learningnet/discussion/file.php?0,file=154 cingular ringtones] [http://www.rso.cmich.edu/prevet/messageboard/000031aa.htm valium online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1030?id=atch1122 real ringtones] [http://acolosit.jubiiblog.de/ free qwest ringtones] [http://trocviboc.blogdiario.com/ alprazolam online] [http://www.csun.edu/learningnet/discussion/file.php?0,file=114 carisoprodol online] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832212) free funny ringtones] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832214) hydrocodone online] [http://forum.kharkiv.edu/SForums/topic.asp?TOPIC_ID=305&FORUM_ID=3&CAT_ID=3 cheap valium] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1030?id=atch1111 buy hgh] [http://getcopas.blogdiario.com/ ultracet online] [http://www.csun.edu/learningnet/discussion/file.php?0,file=140 nokia ringtones] [http://eudrayv.blogspot.com picture pill valium] [http://www.forumhosting.org/forum.php?mforum=varbocget lorazepam online] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=357 free sony ringtones] [http://bascoor.blogdiario.com/ cheap nexium] [http://www.csun.edu/learningnet/discussion/file.php?0,file=153 free polyphonic ringtones] [http://eldronno.jubiiblog.de/ cheap zoloft] [http://domlili.blogdiario.com/ cool ringtones] [http://psmorrison.blogspot.com snorting valium] [http://forum.kharkiv.edu/SForums/topic.asp?TOPIC_ID=298&FORUM_ID=3&CAT_ID=3 cheap tramadol] [http://www.rso.cmich.edu/prevet/messageboard/000031d0.htm free mp3 ringtone] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1071 cheap fioricet] [http://zellial.jubiiblog.de/ ultracet online] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$138 but xanax] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$137 vicodin] [http://nodarel.blogdiario.com/ cheap meridia] [http://smallbald.blogspot.com best casino gambling online] [http://chuvak-org.blogspot.com valium dosage] [http://www.hcs.harvard.edu/~twiki/pub/Main/CoyarCharline/citybix.htm xanax online] [http://elcnazel.blogdiario.com/ prozac online] [http://discussions.csbsju.edu/general/messages/25/tonywe-230.html cheap carisoprodol] [http://www.forumhosting.org/forum.php?mforum=ololitroc cheap propecia] [http://ersitget.jubiiblog.de/ lisinopril online] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832197) alprazolam online] [http://www.csun.edu/learningnet/discussion/file.php?0,file=151 free music ringtones] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$89 alprazolam online] [http://www.rso.cmich.edu/prevet/messageboard/000031d5.htm real ringtones] [http://reltrdar.blogdiario.com/ propecia] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$102 motorola ringtones] [http://domc4tvi.blogdiario.com/ but soma] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1103 buy tenuate] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$87 adipex online] [http://discussions.csbsju.edu/general/messages/25/rizo-242.html meridia online] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832239) samsung ringtones] [http://getelor.blogdiario.com/ free mtv ringtones] [http://www.csun.edu/learningnet/discussion/file.php?0,file=146 free qwest ringtones] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832200) cheap carisoprodol] [http://c4tacdom.jubiiblog.de/ free sonyericsson ringtones] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1082 cheap clonazepam] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$112 free real ringtones] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1073 diazepam online] [http://www.hcs.harvard.edu/~twiki/pub/Main/AngelKristofer/konevow.htm mono ringtones] [http://www.hcs.harvard.edu/~twiki/pub/Main/AngelKristofer/soseh.htm free verizon ringtone] [http://caboel.blogdiario.com/ clonazepam online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1031?id=atch1139 wwe ringtones] [http://drongetpas.blogdiario.com/ online didrex] [http://www.hcs.harvard.edu/~twiki/pub/Main/AngelKristofer/pinyt.htm free sprint ringtone] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832195) buy adipex] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832202) free cingular ringtones] [http://www.csun.edu/learningnet/discussion/file.php?0,file=110 tramadol online] [http://mkiss47346.blogspot.com advice casino online] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832240) free sharp ringtones] [http://www.forumhosting.org/forum.php?mforum=monoror cheap cyclobenzaprine] [http://www.forumhosting.org/forum.php?mforum=rellileto free sprint ringtones] [http://discussions.csbsju.edu/general/messages/25/rojyl-228.html cheap valium] [http://www.csun.edu/learningnet/discussion/file.php?0,file=122 meridia online] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832244) free sonyericsson ringtones] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=313 free alltel ringtones] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=328 funny ringtones] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832247) buy ultracet] [http://eralchi.blogdiario.com/ music ringtones] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1067 cheap valium] [http://www.forumhosting.org/forum.php?mforum=fonewbur cialis online] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=346 phentermine online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1031?id=atch1143 free mtv ringtones] [http://www.hcs.harvard.edu/~twiki/pub/Main/CoyarCharline/hocij.htm generic levitra] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1030?id=atch1116 free free ringtones] [http://www.forumhosting.org/forum.php?mforum=wolena clonazepam online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1031?id=atch1127 verizon ringtones] [http://www.rso.cmich.edu/prevet/messageboard/000031b3.htm generic viagra] [http://www.forumhosting.org/forum.php?mforum=cnaorboc buy ambien] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=342 nextel ringtones] [http://elllimacc87.blogspot.com lexapro and valium] [http://www.csun.edu/learningnet/discussion/file.php?0,file=131 ambien online] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=368 wellbutrin online] [http://www.forumhosting.org/forum.php?mforum=getboctroc buy wellbutrin] [http://www.forumhosting.org/forum.php?mforum=pasletosit tracfone ringtones] [http://www.forumhosting.org/forum.php?mforum=rolouacel free mp3 ringtones] [http://basacelta.blogdiario.com/ real ringtones] [http://www.forumhosting.org/forum.php?mforum=escaffey phentermine] [http://www.forumhosting.org/forum.php?mforum=pijasper soma online] [http://www.hcs.harvard.edu/~twiki/pub/Main/CoyarCharline/vuzo.htm diazepam online] [http://www.forumhosting.org/forum.php?mforum=tevaith norco online] [http://bocvidom.jubiiblog.de/ cheap fioricet] [http://eltaget.jubiiblog.de/ cingular ringtones] [http://sitbasel.jubiiblog.de/ free real ringtones] [http://nodelolo.jubiiblog.de/ cheap albuterol] [http://www.forumhosting.org/forum.php?mforum=darerla polyphonic ringtones] [http://caviou.jubiiblog.de/ prozac online] [http://rolvidel.jubiiblog.de/ cheap cialis] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=315 online ambien] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1102 celexa online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1093 propecia online] [http://www.csun.edu/learningnet/discussion/file.php?0,file=149 samsung ringtones] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832223) motorola ringtones] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1030?id=atch1118 free funny ringtones] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832245) free sprint ringtones] [http://www.csun.edu/learningnet/discussion/file.php?0,file=150 free sprint ringtones] [http://cocoleto.blogdiario.com/ cheap phentermine] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$97 free free ringtones] [http://trrelvar.blogdiario.com/ kyocera ringtones] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1030?id=atch1114 buy zyban] [http://www.csun.edu/learningnet/discussion/file.php?0,file=158 free mono ringtones] [http://discussions.csbsju.edu/general/messages/25/gulel-233.html ultram online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1088 online xenical] [http://www.hcs.harvard.edu/~twiki/pub/Main/AngelKristofer/veco.htm free real ringtones] [http://chibovi.blogdiario.com/ cheap xenical] [http://www.forumhosting.org/forum.php?mforum=chitrel cingular ringtones] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=331 free kyocera ringtones] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$122 sonyericsson ringtones] [http://handspunyarns.blogspot.com valium overdose] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832209) free ericsson ringtones] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=326 fioricet] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$116 cheap soma] [http://liricbo.blogdiario.com/ wellbutrin online] [http://carolli.blogdiario.com/ cheap fioricet] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1089 cheap wellbutrin] [http://www.forumhosting.org/forum.php?mforum=olositbo sharp ringtones] [http://leeticarus.blogspot.com what does valium do] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=341 nexium online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1031?id=atch1138 midi ringtones] [http://www.csun.edu/learningnet/discussion/file.php?0,file=156 free sonyericsson ringtones] [http://www.rso.cmich.edu/prevet/messageboard/000031c4.htm cheap paxil] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832221) free midi ringtones] [http://sand-stars.blogspot.com valium sale] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1086 cheap ambien] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$124 free sprint ringtones] [http://orladron.jubiiblog.de/ cheap adipex] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=316 ativan online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1091 buy nexium] [http://www.hcs.harvard.edu/~twiki/pub/Main/AngelKristofer/zyxuwu.htm free sagem ringtone] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832199) cheap ativan] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=336 mono ringtones] [http://delricc.blogdiario.com/ cheap lorazepam] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=327 free ringtones] [http://taroelt.jubiiblog.de/ free mono ringtones] [http://www.csun.edu/learningnet/discussion/file.php?0,file=147 real ringtones] [http://www.rso.cmich.edu/prevet/messageboard/000031b2.htm cheap ativan] [http://discussions.csbsju.edu/general/messages/25/gejobi-229.html buy phentermine] [http://www.hcs.harvard.edu/~twiki/pub/Main/CoyarCharline/popydi.htm cheap norco] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1031?id=atch1142 ericsson ringtones] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$92 cialis online] [http://www.forumhosting.org/forum.php?mforum=acdrago ultram online] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832229) free nokia ringtones] [http://www.csun.edu/learningnet/discussion/file.php?0,file=129 cheap levitra] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832237) free real ringtones] [http://cacorol.blogdiario.com/ ericsson ringtones] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1029?id=atch1104 cheap ortho] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832211) free ringtones] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=353 samsung ringtones] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832206) order cyclobenzaprine] [http://relgetvar.jubiiblog.de/ cheap wellbutrin] [https://www-internal.slac.stanford.edu/glast/integrationtest/online/Forum/topic.asp?TOPIC_ID=349 free punk ringtones] [http://pasorbas.jubiiblog.de/ free cool ringtones] [http://vigetc.jubiiblog.de/ clomid online] [http://livior.blogdiario.com/ free alltel ringtones] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1030?id=atch1106 cheap lortab] [http://pathology.jhu.edu/N/n.web?EP=N&URL=/MCGI/SEND1^WEBUTLTY(200,832207) online diazepam] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1031?id=atch1130 free sagem ringtones] [http://www.forumhosting.org/forum.php?mforum=sajohnst ativan online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1030?id=atch1123 motorola ringtones] [http://www8.vjc.edu/EnvironmentalClub/discuss/msgReader$105 free nextel ringtones] [http://racalmon.jubiiblog.de/ meridia online] [http://src.moffitt.usf.edu/sf/sfmain/do/downloadAttachment/projects.jaffy/tracker.bug_tracker/artf1030?id=atch1115 nokia ringtones] The sound engine is coming along nicely, but with the semester starting, I'm not going to be able to get it finished right now.  Hopefully it's somewhat stable or relatively easy to troubleshoot if something's wrong with it.
+
The sound engine is coming along nicely, but with the semester starting, I'm not going to be able to get it finished right now.  Hopefully it's somewhat stable or relatively easy to troubleshoot if something's wrong with it.
  
 
== Music ==
 
== Music ==

Revision as of 20:44, 27 April 2007

The sound engine is coming along nicely, but with the semester starting, I'm not going to be able to get it finished right now. Hopefully it's somewhat stable or relatively easy to troubleshoot if something's wrong with it.

Music

Bundled Music

Music gets installed to ::Data() /music . That's also where the default ingame playlist will be placed. The following tracks exist:

  • Title Track (Thrown together by Lucifer as a placeholder, needs to be reworked into a real title track)
  • Gui Track (When the Glass Breaks, by Raoul Duke. This is getting a good response and will probably stay)
  • In-game tracks
    • Only Fortress Walk, by Lucifer, which needs more work, is currently played ingame.
    • Do I Know You?, also by Lucifer, is there, but a weird bug prevented it from playing.

No work is planned to fix the ingame playlist as it stands, until the aatrack format is created and supported by the eMusicTrack object. Then the ingame playlist using bundled music needs to be made to work.

External Music

There's a UI for this now. You can specify the complete path to a custom playlist, and then set it to use the custom playlist. Your custom playlist should be m3u format, but we're only loosely parsing it anyway. All you really need is a text file with one music file per line, complete path to the file. Lines that start with # are ignored, but in an m3u playlist those lines contain additional information we may want to parse for at some point. Playlists made in XMMS work fine.

The title track and gui track will still be played from bundled music! There is no plan to change this until we have support for some sort of music pack. Even then these tracks will be played from internal locations, and if the user wants his own custom tracks, he'll need to build a music pack to play them, when we have those ready to build.

Controlling the music player

There are some new global keybinds that you can use to control the media player ingame. These functions normally expected from a media player are supported by the keybinds:

  • Play (will restart the current track if it's already playing)
  • Stop
  • Pause
  • Previous (will always go to the previous track)
  • Next
  • Volume Up/Down (only controls music volume, sound effect volume is unaffected)

There are no default keybinds for these functions, you will need to go to Global Input Configuration and set them yourself.

Known Issues

There are mysterious crashes that are likely happening in the playlist class, or near it and happen when a new track is selected to play. It can happen when you join a server, or it can happen when you've been playing for awhile. There was a previous crash associated with the current song pointer, which is an iterator for the std::deque class, where it was unitialized, causing a segfault when the music player tried to play the first song. The playlist class and eMusicTrack have recently been factored a bit, so this is probably dust from that.

There is another mysterious crash with the bundled playlist. If all three lines are uncommented, the game will play two tracks and crash. No idea why, I have no intention of fixing this until the aatrack format is worked out and implemented.

  • I believe these two issues are fixed now, and it was a problem with GetFileMimeExtension when the string contains only whitespace (a bug caused by the playlist accepting empty strings, the playlist still accepts empty strings, which is still a bug to be fixed, but tString shouldn't fail because of it). If they are fixed, these two paragraphs can be removed.

Future Plans

In order to keep download size small and still be able to have full-size songs, I'm planning the aatrack format to allow us to take several clips and chain them together into a complete song. The format is based on the Windows INI file format, but the parser isn't written. There's a place in the code for it, but it's not finished.

Here is what it should look like:

[header]
author = Dave Fancella
title = Fortress Walk
record = None
year = 2006
genre = Rock

[tracks]
1 = fortresswalk.ogg

[sequence]
1

The header will contain information like what you'd expect to see in id3 tags in mp3 and ogg vorbis files. This is for the entire song, but the song itself is broken down into several tracks. The tracks section will list each track and give it an identifier. Here, the identifier for the only track is "1", but it's intended that any arbitrary identifier can be used. The sequence section will then list the sequence of the tracks, by identifier.

The sequence section deviates from the Windows INI file format, but the rest doesn't. The sequence section should contain on each line a track to be played. I'd like to have the idiom "1*4" supported, where sequence "1" will be repeated 4 times.

eMusicTrack should support this format, and there is already a placeholder method to handle it. It needs to be hidden from the callers, so the caller and indeed the playlist object shouldn't care what format the files are, and eMusicTrack will just do the right thing for any file.

Sound Effects

Sound effects are partially implemented. Here's what works:

Pushbutton effects

There are two kinds of pushbutton effects. There's a simple pushbutton, which just plays the effect at its volume, with no effects processing. There's a 3d pushbutton effect which takes an eCoord and plays the effect in 3d. This is handled by function overloading, so to play any kind of pushbutton effect, you will always use eSoundMixer::PushButton, but the argument list changes if you want to have a 3d effect.

All sound effects are mapped as enums, so you will say "PushButton(CYCLE_MOTOR);", for example, to play the cycle motor sound. Check eSoundMixer.h for a complete list. This enum mapping is likely only temporary! But it's easy to find, so don't be shy about supporting more sound effects.

Desired Pushbutton effects

  • Brakes
  • Accelerator
  • Enter the game
  • Leave the game (both will be played when joining a server and also when entering a local game)
  • Begin of round
  • End of round
  • Begin of match (supersedes round start)
  • End of match
  • Man death sound (to go with an explosion, should have these options:
    • Suicide
    • Killed
    • Team killed

...since those options are alread in the code)

  • Wall drop (nothing complex, for now...)
  • Sound when a new player joins (for players already there)
  • Zone spawn (I have one already)
  • Zone collapse
  • Player kicked
  • 10 minute warning
  • 5 minute warning
  • 2 minute warning
  • 1 minute warning
  • 30 second warning
  • 10 second warning
  • You have been kicked
  • You have been banned (please keep these two clean :) )

Continuous effects

This includes the cycle motor and the grind effect. This is unimplemented, although I've tried several methods to make it work. Here is how it should look:

Whenever the eGameObject of camera focus is changed, eSoundMixer gets a new owner. When an eGameObject spawns, if it has a continuous effect, it should direct eSoundMixer to start playing it. In the PlayContinuous argument list is the eGameObject that generates the sound. Using an effect callback, the mixer should compute the 3d effect for that sound based on the eGameObject that owns the sound and the eGameObject that has camera focus.

So, when a gCycle spawns, it needs to give the cycle motor sound. This part works. But when the cycle dies, it needs to end the sound, and this part doesn't work.

I don't know how the grind is handled now, but it needs to be a single sound file looped, and whenever a grind is detected, PlayContinuous should be used to play it. This will allow a cycle to get grinding noises from both sides when it's in a tunnel!

Standard Effects Processing

We need to have several effect processors that we use on all effects. None of them are implemented, but two of them need to be implemented for continuous effects to work at all.

  • Speed variation (only used for cycle motor and grind, and any other sound that needs to vary it's speed)
  • 3d effect (we might be able to use SDL_Mixer's, as we are now, but I'm not counting on it)
  • Doppler effect
  • Reverb

The reason I don't think we can rely on SDL_mixer's 3d effects is because it's a one-off call. We need something that will be able to compute loosely in realtime based on the cycle's changing position, so if an explosion happens immediately in front and to the right of a fast moving cycle, that explosion effect needs to be doppler shifted, and it also needs to feel like the cycle is driving past it. I intend to do this first by copying and pasting the SDL_Mixer effect into our own callback and then tweaking it to work with our own data structures.

Speed variation is a complex topic that I won't get into, except to say that we need to support varying the motor speed in the same way armagetron has traditionally done it. The doppler effect is separate from this, but similar. I expect z-man has the formulas we need to implement it, once a basic effect callback system is implemented.

The reverb effect is only a possibility, not a plan. The idea is that we could vary the reverb of any given effect based on it's position in the grid. So on a really large grid, for sound effects in the middle that are also heard in the middle, no reverb makes sense. But sound effects in the middle that are heard by the walls should have a bit of an echo. There are some good, low-cpu-draining ladspa reverbs we can use here if need be, but we may not do it at all. If we do it, it's intended only for sound effects that will have a 3d effect applied.

Known Issues

The problem I'm having with PlayContinuous is that one or the other or both of the eGameObjects involved, either the sound owner or the mixer owner, are being deleted, and the mixer is not finding out about it in time, so it segfaults trying to compute the 3d effect on one or more eGameObjects that don't exist. This is probably a simple fix, but it's something someone who knows more about how the eGameObjects are managed could give the right comment or something to point me in the right direction. :) Hopefully after the 0.2.8 release we can get this straightened out.

No speed variance effects means there's currently no way to confirm the 3d effect on the cycle motor works. So this needs to be implemented, along with the effects callback system.

Future Plans

I really like the idea of supporting LADSPA plugins to some extent, so I'd like the effects plugin architecture to be open-ended enough that we can add support for ladspa, but there's no ladspa requirement in the initial implementation. This is the only part of the sound engine that has yet to be laid out, so if you work on it, you'll be on new ground.

I'd like to support sound skins with this new setup, but that's as far as I've gotten in working it out. After I get the music engine working properly, and cycle motor and grind sounds, then I'll look at sound skins and spec them out, unless someone beats me to it.