! d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc None+/The possible things to be found in MikMod_errnoeMikMod 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.p  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgdhijklefm  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmegfhijdcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  kl bdcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  egfdhijklef Safe-Inferred mnopqrstuv mnopqrstuv srqponmtuv mnopqrstuvNonesClass to handle the bit flags. It's Enum with UWORD (CUShort) instead of Int and without irrelevant functionality.*wxyz{|}~'wxyz{|}~*w~}|{zyx w ~}|{zyx NoneThe result of a readerEof call.BUsed for the very undescriptive possible outcomes of a readerSeek.|Collection of IO operations that MikMod can use to load data from an arbitrary source, such as a memory buffer or zip file.BMove the read position. Return Ok for success or Fail for failure.!Report the current read position.Return a ByteString of length (at most) n and advance the read position. Return an empty ByteString if already at EOF. Return Nothing in case of an error.wReturn one byte and advance the read position. If an error occurs or we are at the end-of-stream, then return Nothing.GReturn EOF if we are at the end of the stream. Otherwise return NotEOF.Static info about a sample.Static info about a module.^Handle to a Module object which contains the music data and current playback state of a song. Pan settings.pWhen loading a module, Curious will cause the loader to attempt to load hidden tracks past the end of the song.8Inclusive or exclusive selection of channels for muting.MikMod distinguishes module channels from voices. Sound effects and music both work by playing samples on voices. At most one sample can play on a voice at a time. Operations on the voice level take a voice number which you can get using  and .<<< NonegAllocate a MREADER and populate it with the correct function pointers. Run the action on the MREADER and free it all even if an error occurs.PMake an MReader from a ByteString and a mutable variable for the read position.*Wrap a Handle so it works like an MReader.hijklmnopqrstuvwxygzhijklmnopqrstuvwxygzhijklmnopqrstuvwxygz NoneQuery the current MikMod global errno and get the MikModError expressed there, if any. This value is only valid if checked immediately after an error occurs. If you are interested in MikModErrors use the "SafeB" versions of the API methods which return an Either MikModError.K{|}~K{|}~K{|}~ None/Get a report of the static aspects of a module.vGet handles to the samples contained in a module. I don't think it would be wise to call sampleFree on these samples.LDuring playback, the number of active channels (not counting NNA channels). HDuring playback, the total number of channels (including NNA channels). FElapsed song time in units of 1/1024 seconds. That's not milliseconds.Current song position.-Current position in the pattern being played.=Set the initial speed of the module. Must be in range 1 - 32.?Set the initial tempo of the module. Must be in range 32 - 255..Set the pan position of a channel in a module./Query the pan position of a particular channel.(Set the volume of a channel in a module.)Query the volume of a particular channel.!Set the tempo of the module. See  .!Set the speed of the module. See  ._Set the Protracker extended speed effect flag. True means process the effect. Default is True.BSet the pan flag. True means process pan effects. Default is True.hSet the wrap flag. True means repeat from restart position at end of song. Default is False, song ends.Set the restart position.~Set the loop flag. False means only process forward loops or same-pattern backward loops. Default is True, process all loops.JSet the fadeout flag of the module. True means fade out. Default is False.ZThis value is added to the module tempo to define actual playback speed. Default is zero.&Channel to set panning on.2Pan position from 0 (far left) to 255 (far right).Channel to set volume on.Volume level from 0 to 128.&& None Far left pan. panLeft = Pan 0."Far right pan. panRight = Pan 255..Get a report of the current state of a sample.mSet the panning value of the sample. Valid values range from panLeft (0) to panRight (255), or PanSurround. *Set the sample playing frequency in Hertz.2Set sample volume to a range 0 to 64 (65 levels).  zModify the sample flags. Useful for setting the loop, reverse, and bi-directional playback characteristics of the sample. See  X to avoid clobbering flags you aren't trying to clear, such as the sample format flags. UQuery the "on disk" flags of the sample if you're curious about the original format.-Query the length of the sample... in samples.*Set the loop starting position in samples.%Set the loop end position in samples.               LGPL3NoneIgSet the global music volume. The argument must be in the range 0 to 128 (There are 129 volume levels).Set the global stereo separation. The argument must be in the range 0 to 128 where 0 means mono sound and 128 means full separation. The default pan sep is 128.Set the global reverb. The argument must be in the range 0 to 15 where 0 means no reverb and 15 means extreme reverb. The default reverb is zero.PSet the global sound effects volume. The argument must be in the range 0 to 128.PSet the global overall sound volume. The argument must be in the range 0 to 128.CThe selected output driver from the global 1-based list of drivers.Change the selected output driver by specifying a 1-based index into the global list of drivers. Setting this to zero, the default, means autodetect. To see the list use ..Get an info report of the sound driver currently in use, if any. MikMod does not expose any functionality via MDriver field manipulation. Set the mix frequency measured in Hertz. Higher values mean more sound quality and more CPU usage. Common values are 8000, 11025, 22100, and 44100. The default is 44100."iModify the "mode flags". These flags affect sound output in various ways. For a full explanation of each one see the MikMod docs. Changing DModeInterp, DModeReverse, or DModeSurround will affect playing immediately. The other flags will require a reset. The default flags are set to [DModeStereo, DModeSurround, DMode16Bits, DModeSoftMusic, DModeSoftSndFX].$See "7 to avoid clobbering flags you aren't trying to clear.%Initialize the MikMod system using an initialization string. An empty string is acceptable (see MikMod docs for more info). If initialization fails it will throw a MikModError.SDon't try this until you register a driver which is supported by your system. See 2.#See also the convenience functions ' and (.&Same as % but doesn't throw exceptions.'jRegisters all drivers and loaders, initializes MikMod, sets a number of sample voices and enables output.(Run an action between ' and )4. It does not handle freeing of Modules or Samples.)Shutdown the MikMod system.*4Returns True if and only if sound output is enabled.+rEnable output. Playing modules will enable output automatically. However playing samples does not. Therefore use +O if you intend to play sound effects with no music. The convenience function '# enables output among other things.,Disable output.-3Get the MikMod version as (major, minor, revision)..@Get a formatted string describing the available drivers, if any./@Get a formatted string describing the available loaders, if any.0OIf your libmikmod has pthread support, returns True. Otherwise this may initialize internal mutexes to support multi-threaded access anyway. A result of True indicates this was successful. False indicates no support for multi-threaded access is available. It is safe to call this multiple times. Only the first call has any effect.sShort story: Before attempting to use MikMod from multiple threads execute this and check that the result is True.0This only has an effect on Win32, OS/2, and EMX.1lExecute the action after calling MikMod_Lock. Calls MikMod_Unlock afterwards even if an error occurred. If 0 returns True then it means all calls to libmikmod will be protected by internal mutexes. Therefore using MikMod functions inside a 1 will deadlock. Allowing clients to manually lock MikMod is probably only useful when manipulating shared data across the API boundary.2?Register all drivers. Use this before initializing MikMod with %.3:Register all loaders. Use this before loading any modules.4Reset the driver using the new global variable settings. If the driver has not been initialized, it will be now. Throws a MikModError in case of failure.5Same as 4 but doesn't throw exceptions.6Set the number of music voices and sample voices to be used for playback. If either parameter is -1, the currently set value will be retained.This is executed by =I as a side effect of loading a module to set the number of music voices.4If this operation fails it will throw a MikModError.7Same as 6 but doesn't throw exceptions.8Update the sound. If you don't call this often enough, then sound might drop out. If you call this too often, the audio driver may eat CPU in a busy loop. Higher quality audio requires calling mikmodUpdate more often (see  T). And finally, on some drivers this is a no-op because there is an audio callback.Known:JOn OSX there is an audio callback and polling mikmodUpdate is unnecessary.KOn Linux mikmodUpdate triggers ALSA's non-blocking IO API and is necessary.9.Returns True if and only if a song is playing.:Free a module and all its contents. If the module was playing then it will be stopped. Discard the ModuleHandle after using this operation.;4Returns the voice corresponding to a module channel.<)Get the currently playing module, if any.=Load a module from a file.0The second argument is the maximum number of channels to allow. Basic 4 channel mods only need 4 music voices. But some impulse tracker modules use a large number of extra channels for new note actions (NNAs). Only the amount needed will be allocated so using a large value here like 64 doesn't hurt.mThis operation has side effects. When the module is loaded the number of music voices will be adjusted (see 6) to accommodate the song. If a song is already playing that needs more voices than the song being loaded, you will hear a reduction in music quality! If want to load many ModuleHandles then use 6P afterward to set the number of music voices to some upper bound for the group.MIf something goes wrong while loading the module it will throw a MikModError.>Same as = but doesn't throw exceptions.?Same as =+ but loads the module data from an MReader.@Same as ? but doesn't throw exceptions.ALoad only the title from a module file. Returns Nothing if there is no title. If something goes wrong it will throw a MikModError.Same as A but doesn't throw exceptions.BMute a channel.C[Mute a range of channels. MuteOperation determines if the range is inclusive or exclusive.D.Return True if and only if a channel is muted.E0Skip to the next position in the current module.F7Go back to the previous position in the current module.G1Returns True if and only if the player is paused.H(Set the position of the current module. IDSet the speed of the current module to a value in the range 1 to 32.JFSet the tempo of the current module to a value in the range 32 to 255.FSet the volume of the current module to a value in the range 0 to 128.KQBegin playing a module. If another module is already playing it will be stopped.LStop the player.M+Toggle the muting of the specified channel.NkToggle the muting of a range of channels. MuteOperation determines if the range is inclusive or exclusive.O:Pause the player if it isn't paused. Otherwise unpause it.PUnmute the given channel.QkToggle the muting of a range of channels. MuteOperation determines if the range is inclusive or exclusive.RLoad a sample from a mono, uncompressed RIFF WAV file. If something goes wrong while loading the sample it will throw a MikModError.SSame as R but doesn't throw exceptions.TSame as R& but read sample data from an MReader.USame as T but doesn't throw exceptions.V0Plays a sound effects sample. Picks a voice from the number of voices allocated for use as sound effects. Returns the voice that the sound is being played on. The oldest playing sample will be interrupted if necessary, unless all playing samples are "critical", in which case the sound will not play.GThe second argument is the position, in samples, to start playing from.WSame behavior as V except that the voice the sound is played on (if any) is given the "critical" status. Note that this will still not result in any critical samples being interrupted.X5Free a sample. Do not sampleFree samples aquired via . Those are freed with :7. Discard the SampleHandle after using this operation.YTSet a voice's volume to a value in the range 0 to 256. There are 257 volume levels.[!Set a voice's frequency in Hertz.]KSet a voice's pan position. 0 is far left. 127 is center. 255 is far right._Play a sample on the specified voice starting from the specified position in samples. The playing sample will have the same "critical status" as the previous sample played on this voice.`Stop a voice from playing.a3Returns True if and only if the specified voice is not playing.bQuery the position (in samples) of the sample playing on this voice. If no sample is playing it will return zero. On some drivers this operation does not work and will return -1.cCompute the "actual playing volume" of the voice. The result will be in the range 0 - 65535. On some drivers this operation does not work and will return zero.S !"#$%&'()*+,-./0123456Number of music voices or -1Number of sample voices or -1789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcK  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcK! "#$('-23%&*./6745,+8)=>?@AKLGO9:;<BCPQMNDEFHIJw~}|{zyxRSTUVWX     _`aYZ[\]^bcegfjhdcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  01S !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN  OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ~                                         g                                       mikmod-0.2.0.0Sound.MikMod.ErrorsSound.MikMod.SynonymsSound.MikMod.FlagsSound.MikMod.Types Sound.MikModplayerGetChannelVoice samplePlaySound.MikMod.MReaderSound.MikMod.InternalSound.MikMod.ModuleplayerSetTempoplayerSetSpeedSound.MikMod.SampleMikModException MikModErrno MMErrUnknownMMErrMaxMMErrAlsaPcmRecoverMMErrAlsaPcmWriteMMErrAlsaPcmStartMMErrAlsaBuffersizeMMErrAlsaSetchannelsMMErrAlsaSetrateMMErrAlsaSetformatMMErrAlsaSetparamsMMErrAlsaNoconfigMMErrOpenalSourcestopMMErrOpenalSourceplayMMErrOpenalGetsourceMMErrOpenalBufferdataMMErrOpenalUnqueuebuffersMMErrOpenalQueuebuffersMMErrOpenalSourceMMErrOpenalGensourcesMMErrOpenalGenbuffersMMErrOpenalCtxcurrentMMErrOpenalCreatectxMMErrNoFloat32MMErrDossbStartdmaMMErrDoswssStartdmaMMErrOsxPthreadMMErrOsxDeviceStartMMErrOsxAddIoProcMMErrOsxBufferAllocMMErrOsxSetStereoMMErrOsxUnsupportedFormatMMErrOsxBadPropertyMMErrOsxUnknownDevice MMErrMacStart MMErrMacSpeedMMErrWinmmUnknownMMErrWinmmFormatMMErrWinmmDeviceidMMErrWinmmAllocatedMMErrWinmmHandle MMErrDsUpdate MMErrDsThread MMErrDsEvent MMErrDsNotify MMErrDsFormat MMErrDsBufferMMErrDsPriorityMMErrOs2Thread MMErrOs2TimerMMErrOs2SemaphoreMMErrOs2Mixsetup MMErrSunInit MMErrSgiMonoMMErrSgiStereo MMErrSgi8bit MMErrSgi16bit MMErrSgiSpeedMMErrOssSetspeedMMErrOssSetstereoMMErrOssSetsamplesizeMMErrOssSetfragmentMMErrHpBuffersizeMMErrHpAudioDescMMErrHpAudioOutputMMErrHpChannelsMMErrHpSetspeedMMErrHpSetsamplesize MMErrGusTimer MMErrGusResetMMErrGusSettingsMMErrAixConfigStartMMErrAixConfigControlMMErrAixConfigInitMMErrAfAudioPort MMErrNonBlock MMErrUlawMMErrStereoOnlyMMErr16bitOnly MMErr8bitOnlyMMErrOpeningAudioMMErrInitializingMixerMMErrInvalidDeviceMMErrDetectingDeviceMMErrItpackInvalidDataMMErrMedSynthsamplesMMErrNotAStreamMMErrNotAModuleMMErrLoadingSampleinfoMMErrLoadingHeaderMMErrLoadingTrackMMErrLoadingPatternMMErrUnknownWaveTypeMMErrOutOfHandlesMMErrSampleTooBigMMErrDynamicLinkingMMErrOutOfMemoryMMErrOpeningFile MMErrNoError MikModErrorCritical NonCriticalgetErrno isNotAnErrordescribeMikModErrormarshalMikModErrnounmarshalMikModErrnoBOOLSLONGULONGSWORDUWORDSBYTEUBYTE decodeBool encodeBoolgenericEncodeBool ModuleFlag UFPanning UFT2Quirks UFXMPeriods UFS3MSlidesUFNoWrapUFNNAUFLinearUFInst UFHighBPM UFBGSlidesUFARPMem SampleFlag SFReverseSFLoopSFBidiSFStereoSFSigned SFITPackedSFDelta SFBigEndianSF16BitsDriverModeFlagDModeNoiseReductionDModeSIMDMixer DModeReverse DModeInterp DModeSurround DModeFloat DModeHQMixerDModeSoftMusicDModeSoftSndfx DModeStereo DMode16BitsFlagtoFlagfromFlag unpackFlags packFlags$fFlagModuleFlag$fFlagSampleFlag$fFlagDriverModeFlag InstrumentIsEOFNotEOFEOFOutcomeFailOkMReader readerSeek readerTell readerRead readerGet readerEof SampleInfo samplePanning sampleSpeed sampleVolume sampleFlags sampleInflags sampleLengthsampleLoopStart sampleLoopEnd SampleHandleSample ModuleInfomoduleSongname moduleModType moduleComment moduleFlagsmoduleNumChannelsmoduleNumVoicesmoduleNumPositionsmoduleNumPatternsmoduleNumInstrumentsmoduleNumSamplesmoduleInstruments ModuleHandleModule MDriverInfo mdriverNamemdriverHardVoiceLimitmdriverSoftVoiceLimit mdriverAliasMDriverPan PanSurround CuriousFlag NotCuriousCurious MuteOperation MuteExclusive MuteInclusiveVoice marshalVoicebyteStringReader handleReadermikmodGetError getModuleInfogetModuleSamplesgetModuleRealChannelsgetModuleTotalChannelsgetModuleSongTimegetModuleSongPositiongetModulePatternPositionsetModuleInitSpeedgetModuleInitSpeedsetModuleInitTempogetModuleInitTemposetModulePanninggetModulePanningsetModuleChannelVolumegetModuleChannelVolume setModuleBPM getModuleBPMsetModuleSongSpeedgetModuleSongSpeedsetModuleExtSpeedgetModuleExtSpeedsetModulePanFlaggetModulePanFlag setModuleWrap getModuleWrapsetModuleRepeatPositiongetModuleRepeatPosition setModuleLoop getModuleLoopsetModuleFadeoutgetModuleFadeoutsetModuleRelativeSpeedgetModuleRelativeSpeedpanLeftpanRight getSampleInfosetSamplePanninggetSamplePanningsetSampleSpeedgetSampleSpeedsetSampleVolumegetSampleVolumemodifySampleFlagssetSampleFlagsgetSampleFlagsgetSampleInFlagsgetSampleLengthsetSampleLoopStartgetSampleLoopStartsetSampleLoopEndgetSampleLoopEndmikmodSetMusicVolumemikmodGetMusicVolumemikmodSetPanSepmikmodGetPanSepmikmodSetReverbmikmodGetReverbmikmodSetSndFXVolumemikmodGetSndFXVolumemikmodSetVolumemikmodGetVolumemikmodGetDeviceIndexmikmodSetDeviceIndexmikmodGetDrivermikmodSetMixFreqmikmodGetMixFreqmikmodModifyDriverModeFlagsmikmodGetDriverModeFlagsmikmodSetDriverModeFlags mikmodInitmikmodInitSafe mikmodSetup runMikMod mikmodExit mikmodActivemikmodEnableOutputmikmodDisableOutputmikmodGetVersionmikmodInfoDrivermikmodInfoLoadermikmodInitThreads withMikModmikmodRegisterAllDriversmikmodRegisterAllLoaders mikmodResetmikmodResetSafemikmodSetNumVoicesmikmodSetNumVoicesSafe mikmodUpdate playerActive playerFreeplayerGetModule playerLoadplayerLoadSafeplayerLoadGenericplayerLoadGenericSafeplayerLoadTitleplayerMuteChannelplayerMuteChannels playerMutedplayerNextPositionplayerPrevPosition playerPausedplayerSetPosition playerStart playerStopplayerToggleMuteChannelplayerToggleMuteChannelsplayerTogglePauseplayerUnmuteChannelplayerUnmuteChannels sampleLoadsampleLoadSafesampleLoadGenericsampleLoadGenericSafesamplePlayCritical sampleFreevoiceSetVolumevoiceGetVolumevoiceSetFrequencyvoiceGetFrequencyvoiceSetPanningvoiceGetPanning voicePlay voiceStop voiceStoppedvoiceGetPositionvoiceRealVolumec_MikMod_strerror$fExceptionMikModException$fShowMikModException withMReaderEofFnGetFnReadFnTellFnSeekFnMREADERmkEofmkGetmkReadmkTellmkSeek genericEofunmarshalSeekModemakeSeekmakeTellmakeReadmakeGetmakeEof%unsafeWriteByteStringToMemoryLocation c_MikMod_freec_Voice_RealVolumec_Voice_GetPositionc_Voice_Stopped c_Voice_Stop c_Voice_Playc_Voice_GetPanningc_Voice_SetPanningc_Voice_GetFrequencyc_Voice_SetFrequencyc_Voice_GetVolumec_Voice_SetVolume c_Sample_Playc_Sample_LoadGeneric c_Sample_Load c_Sample_Freec_Player_UnmuteChannelsc_Player_UnmuteChannelc_Player_TogglePausec_Player_ToggleMuteChannelsc_Player_ToggleMuteChannel c_Player_Stopc_Player_Startc_Player_SetVolumec_Player_SetTempoc_Player_SetSpeedc_Player_SetPositionc_Player_Pausedc_Player_PrevPositionc_Player_NextPositionc_Player_Mutedc_Player_MuteChannelsc_Player_MuteChannelc_Player_LoadTitleGenericc_Player_LoadTitlec_Player_LoadGeneric c_Player_Loadc_Player_GetModulec_Player_GetChannelVoice c_Player_Freec_Player_Activec_MikMod_Updatec_MikMod_SetNumVoicesc_MikMod_Resetc_MikMod_RegisterAllLoadersc_MikMod_RegisterAllDriversc_MikMod_Unlock c_MikMod_Lockc_MikMod_InitThreads c_MikMod_Initc_MikMod_InfoLoaderc_MikMod_InfoDriverc_MikMod_GetVersion c_MikMod_Exitc_MikMod_EnableOutputc_MikMod_DisableOutputc_MikMod_Active c_md_mode c_md_mixfreq c_md_driver c_md_device c_md_volumec_md_sndfxvolume c_md_reverb c_md_pansepc_md_musicvolumec_MikMod_criticalc_MikMod_errnomarshalMuteOperation peekMDriver sfxCriticalmarshalCuriousmikmodGetStringpeekCStringMaybepeekCStringErrorunpackInstrumentNamesgetInstrumentNamesizeOfInstrumentpackPan unpackPanplayerLoadTitleSafeplayerSetVolume