Files
loop/src/Dodge/SoundLogic/LoadSound.hs
T
2021-09-12 17:52:34 +01:00

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
]