{-# LINE 1 "Sound/MikMod/Errors.hsc" #-} {-# LANGUAGE ForeignFunctionInterface #-} {-# LINE 2 "Sound/MikMod/Errors.hsc" #-} {-# LANGUAGE DeriveDataTypeable #-} module Sound.MikMod.Errors ( MikModError(..), getErrno, describeMikModError, MikModException(..), MikModErrno(..), marshalMikModErrno, unmarshalMikModErrno, ) where import Foreign.C.Types import Data.Typeable import Control.Exception import System.IO.Unsafe import Foreign.C.String {-# LINE 20 "Sound/MikMod/Errors.hsc" #-} foreign import ccall unsafe "mikmod.h MikMod_strerror" c_MikMod_strerror :: CInt -> IO CString -- | A MikMod reports errors as either critical or not. A critical error means -- the system state was reset because it could not continue in the face of the -- error. data MikModError = NonCritical MikModErrno | Critical MikModErrno deriving (Eq, Show) getErrno :: MikModError -> MikModErrno getErrno (Critical e) = e getErrno (NonCritical e) = e -- | The possible things to be found in MikMod_errno data MikModErrno = MMErrOpeningFile | MMErrOutOfMemory | MMErrDynamicLinking | MMErrSampleTooBig | MMErrOutOfHandles | MMErrUnknownWaveType | MMErrLoadingPattern | MMErrLoadingTrack | MMErrLoadingHeader | MMErrLoadingSampleinfo | MMErrNotAModule | MMErrNotAStream | MMErrMedSynthsamples | MMErrItpackInvalidData | MMErrDetectingDevice | MMErrInvalidDevice | MMErrInitializingMixer | MMErrOpeningAudio | MMErr8bitOnly | MMErr16bitOnly | MMErrStereoOnly | MMErrUlaw | MMErrNonBlock | MMErrAfAudioPort | MMErrAixConfigInit | MMErrAixConfigControl | MMErrAixConfigStart | MMErrGusSettings | MMErrGusReset | MMErrGusTimer | MMErrHpSetsamplesize | MMErrHpSetspeed | MMErrHpChannels | MMErrHpAudioOutput | MMErrHpAudioDesc | MMErrHpBuffersize | MMErrOssSetfragment | MMErrOssSetsamplesize | MMErrOssSetstereo | MMErrOssSetspeed | MMErrSgiSpeed | MMErrSgi16bit | MMErrSgi8bit | MMErrSgiStereo | MMErrSgiMono | MMErrSunInit | MMErrOs2Mixsetup | MMErrOs2Semaphore | MMErrOs2Timer | MMErrOs2Thread | MMErrDsPriority | MMErrDsBuffer | MMErrDsFormat | MMErrDsNotify | MMErrDsEvent | MMErrDsThread | MMErrDsUpdate | MMErrWinmmHandle | MMErrWinmmAllocated | MMErrWinmmDeviceid | MMErrWinmmFormat | MMErrWinmmUnknown | MMErrMacSpeed | MMErrMacStart | MMErrOsxUnknownDevice | MMErrOsxBadProperty | MMErrOsxUnsupportedFormat | MMErrOsxSetStereo | MMErrOsxBufferAlloc | MMErrOsxAddIoProc | MMErrOsxDeviceStart | MMErrOsxPthread | MMErrDoswssStartdma | MMErrDossbStartdma | MMErrNoFloat32 | MMErrOpenalCreatectx | MMErrOpenalCtxcurrent | MMErrOpenalGenbuffers | MMErrOpenalGensources | MMErrOpenalSource | MMErrOpenalQueuebuffers | MMErrOpenalUnqueuebuffers | MMErrOpenalBufferdata | MMErrOpenalGetsource | MMErrOpenalSourceplay | MMErrOpenalSourcestop | MMErrAlsaNoconfig | MMErrAlsaSetparams | MMErrAlsaSetformat | MMErrAlsaSetrate | MMErrAlsaSetchannels | MMErrAlsaBuffersize | MMErrAlsaPcmStart | MMErrAlsaPcmWrite | MMErrAlsaPcmRecover | MMErrMax | MMErrUnknown CInt deriving (Eq, Ord, Show) newtype MikModException = MikModException MikModError deriving (Eq, Typeable) instance Show MikModException where show (MikModException e) = "MikModError " ++ describeMikModError e instance Exception MikModException describeMikModError :: MikModError -> String describeMikModError e = unsafePerformIO $ do let errno = getErrno e msg <- peekCString =<< c_MikMod_strerror (marshalMikModErrno errno) case e of Critical _ -> return $ "*critical* " ++ msg NonCritical _ -> return msg marshalMikModErrno :: MikModErrno -> CInt marshalMikModErrno e = case e of MMErrOpeningFile -> (1) {-# LINE 156 "Sound/MikMod/Errors.hsc" #-} MMErrOutOfMemory -> (2) {-# LINE 157 "Sound/MikMod/Errors.hsc" #-} MMErrDynamicLinking -> (3) {-# LINE 158 "Sound/MikMod/Errors.hsc" #-} MMErrSampleTooBig -> (4) {-# LINE 159 "Sound/MikMod/Errors.hsc" #-} MMErrOutOfHandles -> (5) {-# LINE 160 "Sound/MikMod/Errors.hsc" #-} MMErrUnknownWaveType -> (6) {-# LINE 161 "Sound/MikMod/Errors.hsc" #-} MMErrLoadingPattern -> (7) {-# LINE 162 "Sound/MikMod/Errors.hsc" #-} MMErrLoadingTrack -> (8) {-# LINE 163 "Sound/MikMod/Errors.hsc" #-} MMErrLoadingHeader -> (9) {-# LINE 164 "Sound/MikMod/Errors.hsc" #-} MMErrLoadingSampleinfo -> (10) {-# LINE 165 "Sound/MikMod/Errors.hsc" #-} MMErrNotAModule -> (11) {-# LINE 166 "Sound/MikMod/Errors.hsc" #-} MMErrNotAStream -> (12) {-# LINE 167 "Sound/MikMod/Errors.hsc" #-} MMErrMedSynthsamples -> (13) {-# LINE 168 "Sound/MikMod/Errors.hsc" #-} MMErrItpackInvalidData -> (14) {-# LINE 169 "Sound/MikMod/Errors.hsc" #-} MMErrDetectingDevice -> (15) {-# LINE 170 "Sound/MikMod/Errors.hsc" #-} MMErrInvalidDevice -> (16) {-# LINE 171 "Sound/MikMod/Errors.hsc" #-} MMErrInitializingMixer -> (17) {-# LINE 172 "Sound/MikMod/Errors.hsc" #-} MMErrOpeningAudio -> (18) {-# LINE 173 "Sound/MikMod/Errors.hsc" #-} MMErr8bitOnly -> (19) {-# LINE 174 "Sound/MikMod/Errors.hsc" #-} MMErr16bitOnly -> (20) {-# LINE 175 "Sound/MikMod/Errors.hsc" #-} MMErrStereoOnly -> (21) {-# LINE 176 "Sound/MikMod/Errors.hsc" #-} MMErrUlaw -> (22) {-# LINE 177 "Sound/MikMod/Errors.hsc" #-} MMErrNonBlock -> (23) {-# LINE 178 "Sound/MikMod/Errors.hsc" #-} MMErrAfAudioPort -> (24) {-# LINE 179 "Sound/MikMod/Errors.hsc" #-} MMErrAixConfigInit -> (25) {-# LINE 180 "Sound/MikMod/Errors.hsc" #-} MMErrAixConfigControl -> (26) {-# LINE 181 "Sound/MikMod/Errors.hsc" #-} MMErrAixConfigStart -> (27) {-# LINE 182 "Sound/MikMod/Errors.hsc" #-} MMErrGusSettings -> (28) {-# LINE 183 "Sound/MikMod/Errors.hsc" #-} MMErrGusReset -> (29) {-# LINE 184 "Sound/MikMod/Errors.hsc" #-} MMErrGusTimer -> (30) {-# LINE 185 "Sound/MikMod/Errors.hsc" #-} MMErrHpSetsamplesize -> (31) {-# LINE 186 "Sound/MikMod/Errors.hsc" #-} MMErrHpSetspeed -> (32) {-# LINE 187 "Sound/MikMod/Errors.hsc" #-} MMErrHpChannels -> (33) {-# LINE 188 "Sound/MikMod/Errors.hsc" #-} MMErrHpAudioOutput -> (34) {-# LINE 189 "Sound/MikMod/Errors.hsc" #-} MMErrHpAudioDesc -> (35) {-# LINE 190 "Sound/MikMod/Errors.hsc" #-} MMErrHpBuffersize -> (36) {-# LINE 191 "Sound/MikMod/Errors.hsc" #-} MMErrOssSetfragment -> (37) {-# LINE 192 "Sound/MikMod/Errors.hsc" #-} MMErrOssSetsamplesize -> (38) {-# LINE 193 "Sound/MikMod/Errors.hsc" #-} MMErrOssSetstereo -> (39) {-# LINE 194 "Sound/MikMod/Errors.hsc" #-} MMErrOssSetspeed -> (40) {-# LINE 195 "Sound/MikMod/Errors.hsc" #-} MMErrSgiSpeed -> (41) {-# LINE 196 "Sound/MikMod/Errors.hsc" #-} MMErrSgi16bit -> (42) {-# LINE 197 "Sound/MikMod/Errors.hsc" #-} MMErrSgi8bit -> (43) {-# LINE 198 "Sound/MikMod/Errors.hsc" #-} MMErrSgiStereo -> (44) {-# LINE 199 "Sound/MikMod/Errors.hsc" #-} MMErrSgiMono -> (45) {-# LINE 200 "Sound/MikMod/Errors.hsc" #-} MMErrSunInit -> (46) {-# LINE 201 "Sound/MikMod/Errors.hsc" #-} MMErrOs2Mixsetup -> (47) {-# LINE 202 "Sound/MikMod/Errors.hsc" #-} MMErrOs2Semaphore -> (48) {-# LINE 203 "Sound/MikMod/Errors.hsc" #-} MMErrOs2Timer -> (49) {-# LINE 204 "Sound/MikMod/Errors.hsc" #-} MMErrOs2Thread -> (50) {-# LINE 205 "Sound/MikMod/Errors.hsc" #-} MMErrDsPriority -> (51) {-# LINE 206 "Sound/MikMod/Errors.hsc" #-} MMErrDsBuffer -> (52) {-# LINE 207 "Sound/MikMod/Errors.hsc" #-} MMErrDsFormat -> (53) {-# LINE 208 "Sound/MikMod/Errors.hsc" #-} MMErrDsNotify -> (54) {-# LINE 209 "Sound/MikMod/Errors.hsc" #-} MMErrDsEvent -> (55) {-# LINE 210 "Sound/MikMod/Errors.hsc" #-} MMErrDsThread -> (56) {-# LINE 211 "Sound/MikMod/Errors.hsc" #-} MMErrDsUpdate -> (57) {-# LINE 212 "Sound/MikMod/Errors.hsc" #-} MMErrWinmmHandle -> (58) {-# LINE 213 "Sound/MikMod/Errors.hsc" #-} MMErrWinmmAllocated -> (59) {-# LINE 214 "Sound/MikMod/Errors.hsc" #-} MMErrWinmmDeviceid -> (60) {-# LINE 215 "Sound/MikMod/Errors.hsc" #-} MMErrWinmmFormat -> (61) {-# LINE 216 "Sound/MikMod/Errors.hsc" #-} MMErrWinmmUnknown -> (62) {-# LINE 217 "Sound/MikMod/Errors.hsc" #-} MMErrMacSpeed -> (63) {-# LINE 218 "Sound/MikMod/Errors.hsc" #-} MMErrMacStart -> (64) {-# LINE 219 "Sound/MikMod/Errors.hsc" #-} MMErrOsxUnknownDevice -> (65) {-# LINE 220 "Sound/MikMod/Errors.hsc" #-} MMErrOsxBadProperty -> (66) {-# LINE 221 "Sound/MikMod/Errors.hsc" #-} MMErrOsxUnsupportedFormat -> (67) {-# LINE 222 "Sound/MikMod/Errors.hsc" #-} MMErrOsxSetStereo -> (68) {-# LINE 223 "Sound/MikMod/Errors.hsc" #-} MMErrOsxBufferAlloc -> (69) {-# LINE 224 "Sound/MikMod/Errors.hsc" #-} MMErrOsxAddIoProc -> (70) {-# LINE 225 "Sound/MikMod/Errors.hsc" #-} MMErrOsxDeviceStart -> (71) {-# LINE 226 "Sound/MikMod/Errors.hsc" #-} MMErrOsxPthread -> (72) {-# LINE 227 "Sound/MikMod/Errors.hsc" #-} MMErrDoswssStartdma -> (73) {-# LINE 228 "Sound/MikMod/Errors.hsc" #-} MMErrDossbStartdma -> (74) {-# LINE 229 "Sound/MikMod/Errors.hsc" #-} MMErrNoFloat32 -> (75) {-# LINE 230 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalCreatectx -> (76) {-# LINE 231 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalCtxcurrent -> (77) {-# LINE 232 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalGenbuffers -> (78) {-# LINE 233 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalGensources -> (79) {-# LINE 234 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalSource -> (80) {-# LINE 235 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalQueuebuffers -> (81) {-# LINE 236 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalUnqueuebuffers -> (82) {-# LINE 237 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalBufferdata -> (83) {-# LINE 238 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalGetsource -> (84) {-# LINE 239 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalSourceplay -> (85) {-# LINE 240 "Sound/MikMod/Errors.hsc" #-} MMErrOpenalSourcestop -> (86) {-# LINE 241 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaNoconfig -> (87) {-# LINE 242 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaSetparams -> (88) {-# LINE 243 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaSetformat -> (89) {-# LINE 244 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaSetrate -> (90) {-# LINE 245 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaSetchannels -> (91) {-# LINE 246 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaBuffersize -> (92) {-# LINE 247 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaPcmStart -> (93) {-# LINE 248 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaPcmWrite -> (94) {-# LINE 249 "Sound/MikMod/Errors.hsc" #-} MMErrAlsaPcmRecover -> (95) {-# LINE 250 "Sound/MikMod/Errors.hsc" #-} MMErrMax -> (96) {-# LINE 251 "Sound/MikMod/Errors.hsc" #-} MMErrUnknown n -> n unmarshalMikModErrno :: CInt -> MikModErrno unmarshalMikModErrno code = case code of (1) -> MMErrOpeningFile {-# LINE 256 "Sound/MikMod/Errors.hsc" #-} (2) -> MMErrOutOfMemory {-# LINE 257 "Sound/MikMod/Errors.hsc" #-} (3) -> MMErrDynamicLinking {-# LINE 258 "Sound/MikMod/Errors.hsc" #-} (4) -> MMErrSampleTooBig {-# LINE 259 "Sound/MikMod/Errors.hsc" #-} (5) -> MMErrOutOfHandles {-# LINE 260 "Sound/MikMod/Errors.hsc" #-} (6) -> MMErrUnknownWaveType {-# LINE 261 "Sound/MikMod/Errors.hsc" #-} (7) -> MMErrLoadingPattern {-# LINE 262 "Sound/MikMod/Errors.hsc" #-} (8) -> MMErrLoadingTrack {-# LINE 263 "Sound/MikMod/Errors.hsc" #-} (9) -> MMErrLoadingHeader {-# LINE 264 "Sound/MikMod/Errors.hsc" #-} (10) -> MMErrLoadingSampleinfo {-# LINE 265 "Sound/MikMod/Errors.hsc" #-} (11) -> MMErrNotAModule {-# LINE 266 "Sound/MikMod/Errors.hsc" #-} (12) -> MMErrNotAStream {-# LINE 267 "Sound/MikMod/Errors.hsc" #-} (13) -> MMErrMedSynthsamples {-# LINE 268 "Sound/MikMod/Errors.hsc" #-} (14) -> MMErrItpackInvalidData {-# LINE 269 "Sound/MikMod/Errors.hsc" #-} (15) -> MMErrDetectingDevice {-# LINE 270 "Sound/MikMod/Errors.hsc" #-} (16) -> MMErrInvalidDevice {-# LINE 271 "Sound/MikMod/Errors.hsc" #-} (17) -> MMErrInitializingMixer {-# LINE 272 "Sound/MikMod/Errors.hsc" #-} (18) -> MMErrOpeningAudio {-# LINE 273 "Sound/MikMod/Errors.hsc" #-} (19) -> MMErr8bitOnly {-# LINE 274 "Sound/MikMod/Errors.hsc" #-} (20) -> MMErr16bitOnly {-# LINE 275 "Sound/MikMod/Errors.hsc" #-} (21) -> MMErrStereoOnly {-# LINE 276 "Sound/MikMod/Errors.hsc" #-} (22) -> MMErrUlaw {-# LINE 277 "Sound/MikMod/Errors.hsc" #-} (23) -> MMErrNonBlock {-# LINE 278 "Sound/MikMod/Errors.hsc" #-} (24) -> MMErrAfAudioPort {-# LINE 279 "Sound/MikMod/Errors.hsc" #-} (25) -> MMErrAixConfigInit {-# LINE 280 "Sound/MikMod/Errors.hsc" #-} (26) -> MMErrAixConfigControl {-# LINE 281 "Sound/MikMod/Errors.hsc" #-} (27) -> MMErrAixConfigStart {-# LINE 282 "Sound/MikMod/Errors.hsc" #-} (28) -> MMErrGusSettings {-# LINE 283 "Sound/MikMod/Errors.hsc" #-} (29) -> MMErrGusReset {-# LINE 284 "Sound/MikMod/Errors.hsc" #-} (30) -> MMErrGusTimer {-# LINE 285 "Sound/MikMod/Errors.hsc" #-} (31) -> MMErrHpSetsamplesize {-# LINE 286 "Sound/MikMod/Errors.hsc" #-} (32) -> MMErrHpSetspeed {-# LINE 287 "Sound/MikMod/Errors.hsc" #-} (33) -> MMErrHpChannels {-# LINE 288 "Sound/MikMod/Errors.hsc" #-} (34) -> MMErrHpAudioOutput {-# LINE 289 "Sound/MikMod/Errors.hsc" #-} (35) -> MMErrHpAudioDesc {-# LINE 290 "Sound/MikMod/Errors.hsc" #-} (36) -> MMErrHpBuffersize {-# LINE 291 "Sound/MikMod/Errors.hsc" #-} (37) -> MMErrOssSetfragment {-# LINE 292 "Sound/MikMod/Errors.hsc" #-} (38) -> MMErrOssSetsamplesize {-# LINE 293 "Sound/MikMod/Errors.hsc" #-} (39) -> MMErrOssSetstereo {-# LINE 294 "Sound/MikMod/Errors.hsc" #-} (40) -> MMErrOssSetspeed {-# LINE 295 "Sound/MikMod/Errors.hsc" #-} (41) -> MMErrSgiSpeed {-# LINE 296 "Sound/MikMod/Errors.hsc" #-} (42) -> MMErrSgi16bit {-# LINE 297 "Sound/MikMod/Errors.hsc" #-} (43) -> MMErrSgi8bit {-# LINE 298 "Sound/MikMod/Errors.hsc" #-} (44) -> MMErrSgiStereo {-# LINE 299 "Sound/MikMod/Errors.hsc" #-} (45) -> MMErrSgiMono {-# LINE 300 "Sound/MikMod/Errors.hsc" #-} (46) -> MMErrSunInit {-# LINE 301 "Sound/MikMod/Errors.hsc" #-} (47) -> MMErrOs2Mixsetup {-# LINE 302 "Sound/MikMod/Errors.hsc" #-} (48) -> MMErrOs2Semaphore {-# LINE 303 "Sound/MikMod/Errors.hsc" #-} (49) -> MMErrOs2Timer {-# LINE 304 "Sound/MikMod/Errors.hsc" #-} (50) -> MMErrOs2Thread {-# LINE 305 "Sound/MikMod/Errors.hsc" #-} (51) -> MMErrDsPriority {-# LINE 306 "Sound/MikMod/Errors.hsc" #-} (52) -> MMErrDsBuffer {-# LINE 307 "Sound/MikMod/Errors.hsc" #-} (53) -> MMErrDsFormat {-# LINE 308 "Sound/MikMod/Errors.hsc" #-} (54) -> MMErrDsNotify {-# LINE 309 "Sound/MikMod/Errors.hsc" #-} (55) -> MMErrDsEvent {-# LINE 310 "Sound/MikMod/Errors.hsc" #-} (56) -> MMErrDsThread {-# LINE 311 "Sound/MikMod/Errors.hsc" #-} (57) -> MMErrDsUpdate {-# LINE 312 "Sound/MikMod/Errors.hsc" #-} (58) -> MMErrWinmmHandle {-# LINE 313 "Sound/MikMod/Errors.hsc" #-} (59) -> MMErrWinmmAllocated {-# LINE 314 "Sound/MikMod/Errors.hsc" #-} (60) -> MMErrWinmmDeviceid {-# LINE 315 "Sound/MikMod/Errors.hsc" #-} (61) -> MMErrWinmmFormat {-# LINE 316 "Sound/MikMod/Errors.hsc" #-} (62) -> MMErrWinmmUnknown {-# LINE 317 "Sound/MikMod/Errors.hsc" #-} (63) -> MMErrMacSpeed {-# LINE 318 "Sound/MikMod/Errors.hsc" #-} (64) -> MMErrMacStart {-# LINE 319 "Sound/MikMod/Errors.hsc" #-} (65) -> MMErrOsxUnknownDevice {-# LINE 320 "Sound/MikMod/Errors.hsc" #-} (66) -> MMErrOsxBadProperty {-# LINE 321 "Sound/MikMod/Errors.hsc" #-} (67) -> MMErrOsxUnsupportedFormat {-# LINE 322 "Sound/MikMod/Errors.hsc" #-} (68) -> MMErrOsxSetStereo {-# LINE 323 "Sound/MikMod/Errors.hsc" #-} (69) -> MMErrOsxBufferAlloc {-# LINE 324 "Sound/MikMod/Errors.hsc" #-} (70) -> MMErrOsxAddIoProc {-# LINE 325 "Sound/MikMod/Errors.hsc" #-} (71) -> MMErrOsxDeviceStart {-# LINE 326 "Sound/MikMod/Errors.hsc" #-} (72) -> MMErrOsxPthread {-# LINE 327 "Sound/MikMod/Errors.hsc" #-} (73) -> MMErrDoswssStartdma {-# LINE 328 "Sound/MikMod/Errors.hsc" #-} (74) -> MMErrDossbStartdma {-# LINE 329 "Sound/MikMod/Errors.hsc" #-} (75) -> MMErrNoFloat32 {-# LINE 330 "Sound/MikMod/Errors.hsc" #-} (76) -> MMErrOpenalCreatectx {-# LINE 331 "Sound/MikMod/Errors.hsc" #-} (77) -> MMErrOpenalCtxcurrent {-# LINE 332 "Sound/MikMod/Errors.hsc" #-} (78) -> MMErrOpenalGenbuffers {-# LINE 333 "Sound/MikMod/Errors.hsc" #-} (79) -> MMErrOpenalGensources {-# LINE 334 "Sound/MikMod/Errors.hsc" #-} (80) -> MMErrOpenalSource {-# LINE 335 "Sound/MikMod/Errors.hsc" #-} (81) -> MMErrOpenalQueuebuffers {-# LINE 336 "Sound/MikMod/Errors.hsc" #-} (82) -> MMErrOpenalUnqueuebuffers {-# LINE 337 "Sound/MikMod/Errors.hsc" #-} (83) -> MMErrOpenalBufferdata {-# LINE 338 "Sound/MikMod/Errors.hsc" #-} (84) -> MMErrOpenalGetsource {-# LINE 339 "Sound/MikMod/Errors.hsc" #-} (85) -> MMErrOpenalSourceplay {-# LINE 340 "Sound/MikMod/Errors.hsc" #-} (86) -> MMErrOpenalSourcestop {-# LINE 341 "Sound/MikMod/Errors.hsc" #-} (87) -> MMErrAlsaNoconfig {-# LINE 342 "Sound/MikMod/Errors.hsc" #-} (88) -> MMErrAlsaSetparams {-# LINE 343 "Sound/MikMod/Errors.hsc" #-} (89) -> MMErrAlsaSetformat {-# LINE 344 "Sound/MikMod/Errors.hsc" #-} (90) -> MMErrAlsaSetrate {-# LINE 345 "Sound/MikMod/Errors.hsc" #-} (91) -> MMErrAlsaSetchannels {-# LINE 346 "Sound/MikMod/Errors.hsc" #-} (92) -> MMErrAlsaBuffersize {-# LINE 347 "Sound/MikMod/Errors.hsc" #-} (93) -> MMErrAlsaPcmStart {-# LINE 348 "Sound/MikMod/Errors.hsc" #-} (94) -> MMErrAlsaPcmWrite {-# LINE 349 "Sound/MikMod/Errors.hsc" #-} (95) -> MMErrAlsaPcmRecover {-# LINE 350 "Sound/MikMod/Errors.hsc" #-} (96) -> MMErrMax {-# LINE 351 "Sound/MikMod/Errors.hsc" #-} x -> MMErrUnknown x