From 41c8ac120dc3a013d704e280578c502974d71939 Mon Sep 17 00:00:00 2001 From: arcattack Date: Wed, 15 Jul 2026 21:56:38 -0500 Subject: [PATCH] Audio: fix runaway loops -- read SF2 sampleModes, not loop-point presence (task #50) Weapon fire (and ~all one-shots) played FOREVER: sf2extract flagged a sample as looping whenever the SF2 shdr had loop points -- but almost every SoundFont sample has loop points; whether to actually loop is the instrument's sampleModes generator (igen oper 54): 0/2 = one-shot, 1 = loop, 3 = loop-until-release. The old heuristic looped 239/241 samples, so SetupPatch set AL_LOOPING=1 on fire/explosion/step sounds. Read sampleModes at the same igen zone as sampleID and loop only on 1/3. Now 166 one-shot / 75 loop: LaserAFire/BigExplosion/BasicClick -> ForceStatic (one-shot), EnginePower/EngineMotor/coolant -> LoopAtWill (correctly sustained). Regenerated audiopresets.cpp; the WAV PCM is unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) --- game/reconstructed/audiopresets.cpp | 336 ++++++++++++++-------------- tools/sf2extract.py | 17 +- 2 files changed, 181 insertions(+), 172 deletions(-) diff --git a/game/reconstructed/audiopresets.cpp b/game/reconstructed/audiopresets.cpp index 895a01d..4edad4c 100644 --- a/game/reconstructed/audiopresets.cpp +++ b/game/reconstructed/audiopresets.cpp @@ -33,11 +33,11 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][5].samples[0]; allPresets[0][5].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "EngineShiftFwd01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][6].samples[0]; allPresets[0][6].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "EngineShiftRev01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][7].samples[0]; allPresets[0][7].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "TorsoTwistInt01.wav"; @@ -49,23 +49,23 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][9].samples[0]; allPresets[0][9].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MyomerServo01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][10].samples[0]; allPresets[0][10].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserAMisfire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][11].samples[0]; allPresets[0][11].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserAFire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][12].samples[0]; allPresets[0][12].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserAFire02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][13].samples[0]; allPresets[0][13].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserAFire03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][14].samples[0]; allPresets[0][14].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserASustain01.wav"; @@ -81,15 +81,15 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][17].samples[0]; allPresets[0][17].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserARelease01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][18].samples[0]; allPresets[0][18].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserARelease02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][19].samples[0]; allPresets[0][19].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserARelease03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][20].samples[0]; allPresets[0][20].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserACharge01.wav"; @@ -109,15 +109,15 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][24].samples[0]; allPresets[0][24].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserBFire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][25].samples[0]; allPresets[0][25].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserBFire02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][26].samples[0]; allPresets[0][26].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserBFire03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][27].samples[0]; allPresets[0][27].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserBSustain01.wav"; @@ -133,35 +133,35 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][30].samples[0]; allPresets[0][30].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserCFire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][31].samples[0]; allPresets[0][31].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserCFire02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][32].samples[0]; allPresets[0][32].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserCFire03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][33].samples[0]; allPresets[0][33].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustain01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][34].samples[0]; allPresets[0][34].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustain02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][35].samples[0]; allPresets[0][35].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustain03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][36].samples[0]; allPresets[0][36].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MissileMisfire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][37].samples[0]; allPresets[0][37].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MissileLaunch01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][38].samples[0]; allPresets[0][38].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MissileTravel01.wav"; @@ -173,19 +173,19 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][40].samples[0]; allPresets[0][40].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MissileLoaded01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][41].samples[0]; allPresets[0][41].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonMisfire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][42].samples[0]; allPresets[0][42].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonFire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][43].samples[0]; allPresets[0][43].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonAction01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][44].samples[0]; allPresets[0][44].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "ProjectileATravel01.wav"; @@ -193,7 +193,7 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][45].samples[0]; allPresets[0][45].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "TriggerDurLoad01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][46].samples[0]; allPresets[0][46].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserASustainExt01.wav"; @@ -233,7 +233,7 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][55].samples[0]; allPresets[0][55].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonFireExt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][56].samples[0]; allPresets[0][56].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserLoaded01.wav"; @@ -261,47 +261,47 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][62].samples[0]; allPresets[0][62].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][63].samples[0]; allPresets[0][63].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][64].samples[0]; allPresets[0][64].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][65].samples[0]; allPresets[0][65].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][66].samples[0]; allPresets[0][66].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][67].samples[0]; allPresets[0][67].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFire06.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][68].samples[0]; allPresets[0][68].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunMisfire01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][69].samples[0]; allPresets[0][69].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunJam01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][70].samples[0]; allPresets[0][70].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AutoCanonJam01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][71].samples[0]; allPresets[0][71].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MissileJam01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][72].samples[0]; allPresets[0][72].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunFireExt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][73].samples[0]; allPresets[0][73].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "ProjectileLoading01.wav"; @@ -309,11 +309,11 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][74].samples[0]; allPresets[0][74].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "IncomingAlarm01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][75].samples[0]; allPresets[0][75].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "ProjectileLoaded01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][76].samples[0]; allPresets[0][76].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "EngineAccel07.wav"; @@ -321,43 +321,43 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][78].samples[0]; allPresets[0][78].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BasicBeep01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][79].samples[0]; allPresets[0][79].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BasicClick01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][80].samples[0]; allPresets[0][80].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "DefaultButton01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][81].samples[0]; allPresets[0][81].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "DuckServo01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][82].samples[0]; allPresets[0][82].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MapZoom01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][83].samples[0]; allPresets[0][83].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "ProgramButton01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][84].samples[0]; allPresets[0][84].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "ViewSwitch01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][85].samples[0]; allPresets[0][85].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "GeneratorSelect01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][86].samples[0]; allPresets[0][86].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BasicBeep02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][87].samples[0]; allPresets[0][87].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "EjectButton01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][88].samples[0]; allPresets[0][88].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "EngButton01.wav"; @@ -365,7 +365,7 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][89].samples[0]; allPresets[0][89].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresInc02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][90].samples[0]; allPresets[0][90].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantLeak01.wav"; @@ -373,39 +373,39 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][91].samples[0]; allPresets[0][91].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][92].samples[0]; allPresets[0][92].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresDcr02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][93].samples[0]; allPresets[0][93].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresInc01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][94].samples[0]; allPresets[0][94].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresDcr01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][95].samples[0]; allPresets[0][95].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "EjectStart01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][96].samples[0]; allPresets[0][96].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "EjectEnd01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][97].samples[0]; allPresets[0][97].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][98].samples[0]; allPresets[0][98].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresInc03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][99].samples[0]; allPresets[0][99].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantPresDcr03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][100].samples[0]; allPresets[0][100].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump03.wav"; @@ -413,19 +413,19 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][101].samples[0]; allPresets[0][101].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDumpStart01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][102].samples[0]; allPresets[0][102].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][103].samples[0]; allPresets[0][103].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDump05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][104].samples[0]; allPresets[0][104].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CoolantDumpExt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][105].samples[0]; allPresets[0][105].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "WindLoop01.wav"; @@ -433,11 +433,11 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][106].samples[0]; allPresets[0][106].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "FootFallExt03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][107].samples[0]; allPresets[0][107].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "FootFallExt04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][108].samples[0]; allPresets[0][108].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserCSustainExt04.wav"; @@ -465,7 +465,7 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[0][126].samples[0]; allPresets[0][126].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AllProjectile.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[0][127].samples[0]; allPresets[0][127].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AllAcceleration.wav"; @@ -473,191 +473,191 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][0].samples[0]; allPresets[1][0].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][1].samples[0]; allPresets[1][1].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][2].samples[0]; allPresets[1][2].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][3].samples[0]; allPresets[1][3].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][4].samples[0]; allPresets[1][4].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][5].samples[0]; allPresets[1][5].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision06.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][6].samples[0]; allPresets[1][6].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision07.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][7].samples[0]; allPresets[1][7].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision08.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][8].samples[0]; allPresets[1][8].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision09.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][9].samples[0]; allPresets[1][9].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision10.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][10].samples[0]; allPresets[1][10].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Collision11.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][11].samples[0]; allPresets[1][11].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][12].samples[0]; allPresets[1][12].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][13].samples[0]; allPresets[1][13].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][14].samples[0]; allPresets[1][14].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][15].samples[0]; allPresets[1][15].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][16].samples[0]; allPresets[1][16].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt06.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][17].samples[0]; allPresets[1][17].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt07.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][18].samples[0]; allPresets[1][18].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt08.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][19].samples[0]; allPresets[1][19].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt09.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][20].samples[0]; allPresets[1][20].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][21].samples[0]; allPresets[1][21].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][22].samples[0]; allPresets[1][22].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][23].samples[0]; allPresets[1][23].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][24].samples[0]; allPresets[1][24].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][25].samples[0]; allPresets[1][25].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExplosion06.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][26].samples[0]; allPresets[1][26].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][27].samples[0]; allPresets[1][27].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][28].samples[0]; allPresets[1][28].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][29].samples[0]; allPresets[1][29].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][30].samples[0]; allPresets[1][30].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][31].samples[0]; allPresets[1][31].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][32].samples[0]; allPresets[1][32].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][33].samples[0]; allPresets[1][33].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][34].samples[0]; allPresets[1][34].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][35].samples[0]; allPresets[1][35].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][36].samples[0]; allPresets[1][36].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "TorsoTwistStop01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][37].samples[0]; allPresets[1][37].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "FootFallExt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][38].samples[0]; allPresets[1][38].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "FootFallExt02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][39].samples[0]; allPresets[1][39].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "FootFallInt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][40].samples[0]; allPresets[1][40].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt01LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][41].samples[0]; allPresets[1][41].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt02LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][42].samples[0]; allPresets[1][42].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt03LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][43].samples[0]; allPresets[1][43].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt04LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][44].samples[0]; allPresets[1][44].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt05LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][45].samples[0]; allPresets[1][45].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt06LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][46].samples[0]; allPresets[1][46].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "CollisionExt07LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][47].samples[0]; allPresets[1][47].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExp01LOD2.wav"; @@ -685,15 +685,15 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][53].samples[0]; allPresets[1][53].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][54].samples[0]; allPresets[1][54].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][55].samples[0]; allPresets[1][55].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][56].samples[0]; allPresets[1][56].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt04.wav"; @@ -705,19 +705,19 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][58].samples[0]; allPresets[1][58].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "LaserExpInt06.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][59].samples[0]; allPresets[1][59].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][60].samples[0]; allPresets[1][60].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][61].samples[0]; allPresets[1][61].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][62].samples[0]; allPresets[1][62].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "DestroyedInt04.wav"; @@ -733,39 +733,39 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][65].samples[0]; allPresets[1][65].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExp01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][66].samples[0]; allPresets[1][66].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExp02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][67].samples[0]; allPresets[1][67].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExp03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][68].samples[0]; allPresets[1][68].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExp04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][69].samples[0]; allPresets[1][69].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExpCraft01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][70].samples[0]; allPresets[1][70].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExpCraft02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][71].samples[0]; allPresets[1][71].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExpCraft03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][72].samples[0]; allPresets[1][72].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MchGunExpCraft04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][73].samples[0]; allPresets[1][73].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion01LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][74].samples[0]; allPresets[1][74].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion02LOD2.wav"; @@ -773,19 +773,19 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][75].samples[0]; allPresets[1][75].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion03LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][76].samples[0]; allPresets[1][76].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion04LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][77].samples[0]; allPresets[1][77].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExplosion05LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][78].samples[0]; allPresets[1][78].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion01LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][79].samples[0]; allPresets[1][79].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion02LOD2.wav"; @@ -793,39 +793,39 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][80].samples[0]; allPresets[1][80].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion03LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][81].samples[0]; allPresets[1][81].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion04LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][82].samples[0]; allPresets[1][82].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExplosion05LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][83].samples[0]; allPresets[1][83].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MechExplosion01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][84].samples[0]; allPresets[1][84].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][85].samples[0]; allPresets[1][85].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][86].samples[0]; allPresets[1][86].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][87].samples[0]; allPresets[1][87].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][88].samples[0]; allPresets[1][88].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MedExpInt05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][89].samples[0]; allPresets[1][89].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Damage01.wav"; @@ -833,7 +833,7 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][90].samples[0]; allPresets[1][90].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Damage03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } { SAMPLEINFO &s = allPresets[1][91].samples[0]; allPresets[1][91].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Damage02.wav"; @@ -841,7 +841,7 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][92].samples[0]; allPresets[1][92].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][93].samples[0]; allPresets[1][93].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt02.wav"; @@ -849,15 +849,15 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][94].samples[0]; allPresets[1][94].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][95].samples[0]; allPresets[1][95].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][96].samples[0]; allPresets[1][96].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "BigExpInt05.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][97].samples[0]; allPresets[1][97].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "MechFireLoop01.wav"; @@ -869,15 +869,15 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][99].samples[0]; allPresets[1][99].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "PPCExplosion01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][100].samples[0]; allPresets[1][100].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "PPCExplosion02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][101].samples[0]; allPresets[1][101].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "PPCExplosion03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][102].samples[0]; allPresets[1][102].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "PPCExp01LOD2.wav"; @@ -893,19 +893,19 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][105].samples[0]; allPresets[1][105].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "PPCExpInt01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][106].samples[0]; allPresets[1][106].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "PPCExpInt02.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][107].samples[0]; allPresets[1][107].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "PPCExpInt03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][108].samples[0]; allPresets[1][108].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "SmallExplosion01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][109].samples[0]; allPresets[1][109].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "SmallExplosion02.wav"; @@ -913,11 +913,11 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][110].samples[0]; allPresets[1][110].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "SmallExplosion03.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][111].samples[0]; allPresets[1][111].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "SmallExplosion04.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][112].samples[0]; allPresets[1][112].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "SmallFireLoop01.wav"; @@ -925,35 +925,35 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][113].samples[0]; allPresets[1][113].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Warnings01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][114].samples[0]; allPresets[1][114].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Translocate01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][115].samples[0]; allPresets[1][115].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Death01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][116].samples[0]; allPresets[1][116].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "EngineWindUp01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][117].samples[0]; allPresets[1][117].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Crunch01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][118].samples[0]; allPresets[1][118].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "Crunch01LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][119].samples[0]; allPresets[1][119].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AuxExplosion01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][120].samples[0]; allPresets[1][120].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AuxExplosion01LOD2.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][123].samples[0]; allPresets[1][123].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AllWarning.wav"; @@ -965,15 +965,15 @@ struct AudioPresetInit { { SAMPLEINFO &s = allPresets[1][125].samples[0]; allPresets[1][125].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AllExplosion.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } { SAMPLEINFO &s = allPresets[1][126].samples[0]; allPresets[1][126].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "TorsoStop01.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } { SAMPLEINFO &s = allPresets[1][127].samples[0]; allPresets[1][127].sampleNum = 1; s.implemented = true; s.bufferIndex = -1; s.file = "AllHits.wav"; - s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::LoopAtWill; } + s.chan = SampleChannel::CHANNEL_CENTER; s.loop = SampleLoop::ForceStatic; } } } s_audioPresetInit; } diff --git a/tools/sf2extract.py b/tools/sf2extract.py index 1fa3c0d..6d54d1c 100644 --- a/tools/sf2extract.py +++ b/tools/sf2extract.py @@ -49,15 +49,24 @@ def parse_bank(path): for b in range(pbag,pbag2): instId=genlk(pgo,u16(pbo+b*4),u16(pbo+(b+1)*4),41) if instId is not None: break - sampId=None + sampId=None; sampleModes=0 if instId is not None: ib=u16(ino+instId*22+20); ib2=u16(ino+(instId+1)*22+20) for b in range(ib,ib2): - sampId=genlk(igo,u16(ibo+b*4),u16(ibo+(b+1)*4),53) - if sampId is not None: break + g0=u16(ibo+b*4); g1=u16(ibo+(b+1)*4) + sid=genlk(igo,g0,g1,53) # oper 53 = sampleID + if sid is not None: + sampId=sid + sm=genlk(igo,g0,g1,54) # oper 54 = sampleModes + if sm is not None: sampleModes=sm + break if sampId is None: continue st,en,ls,le=struct.unpack_from(" ls + 8) and (le <= en) + # SF2 sampleModes: 0/2 = no loop (one-shot), 1 = loop, 3 = loop-until-release. + # (Presence of shdr loop points does NOT mean loop -- almost every sample has + # them; only sampleModes decides. The old loop-points heuristic looped ~all + # 241 samples, so weapon fire / explosions / steps played forever.) + looping = (sampleModes == 1 or sampleModes == 3) out.append((preset, name, smpl[st*2:en*2], looping)) return out