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 ]