323 lines
6.8 KiB
Haskell
323 lines
6.8 KiB
Haskell
module Dodge.SoundLogic.LoadSound where
|
|
import Sound.Data
|
|
|
|
import qualified Data.IntMap.Strict as IM
|
|
import qualified SDL.Mixer as Mix
|
|
|
|
loadSound :: (Int,String) -> IO (Int, Mix.Chunk)
|
|
loadSound (i,s) = do
|
|
chnk <- Mix.load $ "./data/sound/" ++ s
|
|
return (i,chnk)
|
|
|
|
loadSounds :: IO (IM.IntMap Mix.Chunk)
|
|
loadSounds = do
|
|
Mix.openAudio Mix.defaultAudio 128
|
|
fmap IM.fromList $ mapM loadSound $ zip [0..] soundPathList
|
|
|
|
soundToVol :: SoundID -> Float
|
|
soundToVol v = case _getSoundID v of
|
|
0 -> 20
|
|
1 -> 80
|
|
2 -> 40
|
|
3 -> 30
|
|
4 -> 30
|
|
5 -> 100
|
|
6 -> 50
|
|
7 -> 20
|
|
8 -> 200
|
|
9 -> 100
|
|
10 -> 50
|
|
11 -> 80
|
|
12 -> 30
|
|
13 -> 80
|
|
14 -> 120
|
|
15 -> 50
|
|
16 -> 30
|
|
17 -> 100
|
|
18 -> 80
|
|
19 -> 50
|
|
20 -> 100
|
|
21 -> 120
|
|
22 -> 20
|
|
23 -> 20
|
|
24 -> 80
|
|
25 -> 30
|
|
26 -> 80
|
|
27 -> 80
|
|
28 -> 80
|
|
29 -> 50
|
|
30 -> 30
|
|
31 -> 40
|
|
32 -> 50
|
|
33 -> 50
|
|
34 -> 80
|
|
35 -> 80
|
|
36 -> 60
|
|
37 -> 40
|
|
38 -> 150
|
|
39 -> 40
|
|
40 -> 50
|
|
41 -> 40
|
|
42 -> 30
|
|
43 -> 80
|
|
44 -> 80
|
|
45 -> 20
|
|
46 -> 80
|
|
47 -> 50
|
|
48 -> 50
|
|
49 -> 30
|
|
50 -> 100
|
|
51 -> 50
|
|
52 -> 150
|
|
53 -> 100
|
|
54 -> 80
|
|
55 -> 30
|
|
56 -> 100
|
|
57 -> 100
|
|
_ -> 50
|
|
soundToOnomato :: SoundID -> String
|
|
soundToOnomato v = case _getSoundID v of
|
|
0 -> "BLIH"
|
|
1 -> "CRNK"
|
|
2 -> "BRAP"
|
|
3 -> "TIP"
|
|
4 -> "THUD"
|
|
5 -> "BRAP"
|
|
6 -> "CRTINK"
|
|
7 -> "SHUHP"
|
|
8 -> "BOOM"
|
|
9 -> "WHSSH"
|
|
10 -> "KRTNKL"
|
|
11 -> "CRUMPLE"
|
|
12 -> "TAP"
|
|
13 -> "CRUNK"
|
|
14 -> "BRDBRDBRD"
|
|
15 -> "WRR"
|
|
16 -> "DRR"
|
|
17 -> "TATATA"
|
|
18 -> "TAK"
|
|
19 -> "TRINKL"
|
|
20 -> "SCREE"
|
|
21 -> "BRPBRPBRP"
|
|
22 -> "PHF"
|
|
23 -> "FHP"
|
|
24 -> "CRSNK"
|
|
25 -> "BWAAH"
|
|
26 -> "RINGGG"
|
|
27 -> "ZMM"
|
|
28 -> "BRAP"
|
|
29 -> "HNH"
|
|
30 -> "CHPCHPCHP"
|
|
31 -> "SMACK"
|
|
32 -> "HSSS"
|
|
33 -> "HSS"
|
|
34 -> "CRSK"
|
|
35 -> "CRASH"
|
|
36 -> "TAPTIP"
|
|
37 -> "TIPTOP"
|
|
38 -> "BANG"
|
|
39 -> "TIPTAP"
|
|
40 -> "THUD"
|
|
41 -> "TAPP"
|
|
42 -> "DWAAH"
|
|
43 -> "TAKH"
|
|
44 -> "BEP"
|
|
45 -> "SWSH"
|
|
46 -> "CRNKL"
|
|
47 -> "CHNKCHNKCHUNK"
|
|
48 -> "TINKLE"
|
|
49 -> "TNKTNKTNK"
|
|
50 -> "BRAHCHCH"
|
|
51 -> "CLICK"
|
|
52 -> "BANGG"
|
|
53 -> "WRRR"
|
|
54 -> "CRISH"
|
|
55 -> "BWAH"
|
|
56 -> "CRAKLE"
|
|
57 -> "ZHM"
|
|
_ -> error "unitialised sound"
|
|
soundPathList :: [String]
|
|
soundPathList =
|
|
[ "heal.BLIH.20.wav"
|
|
, "glassShat3.CRNK.80.wav"
|
|
, "tapQuiet.BRAP.40.wav"
|
|
, "foot1.TIP.30.wav"
|
|
, "hit.THUD.30.wav"
|
|
, "autoGun.BRAP.100.wav"
|
|
, "smallGlass3.CRTINK.50.wav"
|
|
, "pickUp.SHUHP.20.wav"
|
|
, "explosion.BOOM.200.wav"
|
|
, "missileLaunch.WHSSH.100.wav"
|
|
, "smallGlass2.KRTNKL.50.wav"
|
|
, "impact3.CRUMPLE.80.wav"
|
|
, "foot2.TAP.30.wav"
|
|
, "impact2.CRUNK.80.wav"
|
|
, "mini1.BRDBRDBRD.120.wav"
|
|
, "fire.WRR.50.wav"
|
|
, "slideDoor.DRR.30.wav"
|
|
, "autoB.TATATA.100.wav"
|
|
, "tap1.TAK.80.wav"
|
|
, "smallGlass1.TRINKL.50.wav"
|
|
, "tone440sawtooth.SCREE.100.wav"
|
|
, "mini.BRPBRPBRP.120.wav"
|
|
, "whiteNoiseFadeOut.PHF.20.wav"
|
|
, "whiteNoiseFadeIn.FHP.20.wav"
|
|
, "glassShat1.CRSNK.80.wav"
|
|
, "sineRaisePitchTwoSec.BWAAH.30.wav"
|
|
, "tinitus.RINGGG.80.wav"
|
|
, "buzz.ZMM.80.wav"
|
|
, "tap3.BRAP.80.wav"
|
|
, "grunt.HNH.50.wav"
|
|
, "reload1.CHPCHPCHP.30.wav"
|
|
, "hit1.SMACK.40.wav"
|
|
, "foamSprayLoop.HSSS.50.wav"
|
|
, "foamSprayFadeOut.HSS.50.wav"
|
|
, "glassShat4.CRSK.80.wav"
|
|
, "impact1.CRASH.80.wav"
|
|
, "twoStep1.TAPTIP.60.wav"
|
|
, "twoStepSlow.TIPTOP.40.wav"
|
|
, "bang.BANG.150.wav"
|
|
, "twoStep.TIPTAP.40.wav"
|
|
, "tap4.THUD.50.wav"
|
|
, "foot3.TAPP.40.wav"
|
|
, "skwareFadeTwoSec.DWAAH.30.wav"
|
|
, "tap2.TAKH.80.wav"
|
|
, "tone440.BEP.80.wav"
|
|
, "knife.SWSH.20.wav"
|
|
, "glassShat2.CRNKL.80.wav"
|
|
, "crankSlow.CHNKCHNKCHUNK.50.wav"
|
|
, "smallGlass4.TINKLE.50.wav"
|
|
, "reload.TNKTNKTNK.30.wav"
|
|
, "shotgun.BRAHCHCH.100.wav"
|
|
, "click1.CLICK.50.wav"
|
|
, "bangEcho.BANGG.150.wav"
|
|
, "fireLoud.WRRR.100.wav"
|
|
, "impact4.CRISH.80.wav"
|
|
, "sineRaisePitchOneSec.BWAH.30.wav"
|
|
, "elecCrackle.CRAKLE.100.wav"
|
|
, "tele.ZHM.100.wav"
|
|
]
|
|
healS :: SoundID
|
|
healS = SoundID 0
|
|
glassShat3S :: SoundID
|
|
glassShat3S = SoundID 1
|
|
tapQuietS :: SoundID
|
|
tapQuietS = SoundID 2
|
|
foot1S :: SoundID
|
|
foot1S = SoundID 3
|
|
hitS :: SoundID
|
|
hitS = SoundID 4
|
|
autoGunS :: SoundID
|
|
autoGunS = SoundID 5
|
|
smallGlass3S :: SoundID
|
|
smallGlass3S = SoundID 6
|
|
pickUpS :: SoundID
|
|
pickUpS = SoundID 7
|
|
explosionS :: SoundID
|
|
explosionS = SoundID 8
|
|
missileLaunchS :: SoundID
|
|
missileLaunchS = SoundID 9
|
|
smallGlass2S :: SoundID
|
|
smallGlass2S = SoundID 10
|
|
impact3S :: SoundID
|
|
impact3S = SoundID 11
|
|
foot2S :: SoundID
|
|
foot2S = SoundID 12
|
|
impact2S :: SoundID
|
|
impact2S = SoundID 13
|
|
mini1S :: SoundID
|
|
mini1S = SoundID 14
|
|
fireS :: SoundID
|
|
fireS = SoundID 15
|
|
slideDoorS :: SoundID
|
|
slideDoorS = SoundID 16
|
|
autoBS :: SoundID
|
|
autoBS = SoundID 17
|
|
tap1S :: SoundID
|
|
tap1S = SoundID 18
|
|
smallGlass1S :: SoundID
|
|
smallGlass1S = SoundID 19
|
|
tone440sawtoothS :: SoundID
|
|
tone440sawtoothS = SoundID 20
|
|
miniS :: SoundID
|
|
miniS = SoundID 21
|
|
whiteNoiseFadeOutS :: SoundID
|
|
whiteNoiseFadeOutS = SoundID 22
|
|
whiteNoiseFadeInS :: SoundID
|
|
whiteNoiseFadeInS = SoundID 23
|
|
glassShat1S :: SoundID
|
|
glassShat1S = SoundID 24
|
|
sineRaisePitchTwoSecS :: SoundID
|
|
sineRaisePitchTwoSecS = SoundID 25
|
|
tinitusS :: SoundID
|
|
tinitusS = SoundID 26
|
|
buzzS :: SoundID
|
|
buzzS = SoundID 27
|
|
tap3S :: SoundID
|
|
tap3S = SoundID 28
|
|
gruntS :: SoundID
|
|
gruntS = SoundID 29
|
|
reload1S :: SoundID
|
|
reload1S = SoundID 30
|
|
hit1S :: SoundID
|
|
hit1S = SoundID 31
|
|
foamSprayLoopS :: SoundID
|
|
foamSprayLoopS = SoundID 32
|
|
foamSprayFadeOutS :: SoundID
|
|
foamSprayFadeOutS = SoundID 33
|
|
glassShat4S :: SoundID
|
|
glassShat4S = SoundID 34
|
|
impact1S :: SoundID
|
|
impact1S = SoundID 35
|
|
twoStep1S :: SoundID
|
|
twoStep1S = SoundID 36
|
|
twoStepSlowS :: SoundID
|
|
twoStepSlowS = SoundID 37
|
|
bangS :: SoundID
|
|
bangS = SoundID 38
|
|
twoStepS :: SoundID
|
|
twoStepS = SoundID 39
|
|
tap4S :: SoundID
|
|
tap4S = SoundID 40
|
|
foot3S :: SoundID
|
|
foot3S = SoundID 41
|
|
skwareFadeTwoSecS :: SoundID
|
|
skwareFadeTwoSecS = SoundID 42
|
|
tap2S :: SoundID
|
|
tap2S = SoundID 43
|
|
tone440S :: SoundID
|
|
tone440S = SoundID 44
|
|
knifeS :: SoundID
|
|
knifeS = SoundID 45
|
|
glassShat2S :: SoundID
|
|
glassShat2S = SoundID 46
|
|
crankSlowS :: SoundID
|
|
crankSlowS = SoundID 47
|
|
smallGlass4S :: SoundID
|
|
smallGlass4S = SoundID 48
|
|
reloadS :: SoundID
|
|
reloadS = SoundID 49
|
|
shotgunS :: SoundID
|
|
shotgunS = SoundID 50
|
|
click1S :: SoundID
|
|
click1S = SoundID 51
|
|
bangEchoS :: SoundID
|
|
bangEchoS = SoundID 52
|
|
fireLoudS :: SoundID
|
|
fireLoudS = SoundID 53
|
|
impact4S :: SoundID
|
|
impact4S = SoundID 54
|
|
sineRaisePitchOneSecS :: SoundID
|
|
sineRaisePitchOneSecS = SoundID 55
|
|
elecCrackleS :: SoundID
|
|
elecCrackleS = SoundID 56
|
|
teleS :: SoundID
|
|
teleS = SoundID 57
|
|
|
|
loadMusic :: IO (IM.IntMap Mix.Music)
|
|
loadMusic = do
|
|
undercity <- Mix.load "./data/music/firstCompo.mid"
|
|
return $ IM.fromList $ zip [0..]
|
|
[ undercity
|
|
]
|