Files
loop/src/Dodge/SoundLogic/LoadSound.hs
T
2025-06-25 14:51:15 +01:00

36 lines
1.1 KiB
Haskell

module Dodge.SoundLogic.LoadSound
( module Dodge.SoundLogic.LoadSound
, module Dodge.SoundLogic.ExternallyGeneratedSounds
) where
--import Sound.Data
import Dodge.SoundLogic.ExternallyGeneratedSounds
import qualified IntMapHelp 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)
-- current thinking is to use group 0 for game sounds, group 1 for menu sounds
loadSounds :: IO (IM.IntMap Mix.Chunk)
loadSounds = do
Mix.openAudio Mix.defaultAudio 128
Mix.setChannels nchans
x <- Mix.groupSpan 0 0 (fromIntegral $ nchans - 3)
putStrLn $ show x <> " channels assigned to group 0"
y <- Mix.groupSpan 1 (fromIntegral $ nchans - 2) (fromIntegral $ nchans - 1)
putStrLn $ show y <> " channels assigned to group 1"
fmap IM.fromList $ mapM loadSound $ zip [0..] soundPathList
where
nchans = 64::Int
loadMusic :: IO (IM.IntMap Mix.Music)
loadMusic = do
undercity <- Mix.load "./data/music/firstCompo.mid"
return $ IM.fromList $ zip [0..]
[ undercity
]