-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Parse song module files from Amiga MED and OctaMED
--
-- MED (Music EDitor) and its successor OctaMED were popular music
-- trackers on the Amiga: https://en.wikipedia.org/wiki/OctaMED.
-- This is a library for parsing the binary module data.
--
-- With the Cabal flag -fbuildExamples you can build two example
-- programs:
--
--
-- - unmed2: Loads song module files and show their content on
-- standard output.
-- - animed: Create a PostScript document showing how a song
-- is played. Also creates an FFmpeg cue file for the concat
-- input type. This way you can create videos with MED music plus
-- precisely timed animations of the played tracks. See the included
-- Makefile for the command calls for creation of complete music
-- videos from MMD files.
--
@package med-module
@version 0.0
module Sound.MED.Basic.Human
class Human a
human :: Human a => a -> String
bold :: String -> String
bold_on :: String
bold_off :: String
module Sound.MED.Basic.Amiga
type MEM = Ptr ()
type PTR = Word32
type LONG = Int32
type ULONG = Word32
type WORD = Int16
type UWORD = Word16
type BYTE = Int8
type UBYTE = Word8
type Peek a = MEM -> PTR -> IO a
peekOffset :: (Storable a) => Peek a
peekBig :: (Storable a, HasBigEndian a) => Peek a
peekPTR :: Peek PTR
peekLONG :: Peek LONG
peekULONG :: Peek ULONG
peekWORD :: Peek WORD
peekUWORD :: Peek UWORD
peekBYTE :: Peek BYTE
peekUBYTE :: Peek UBYTE
($?) :: (PTR -> IO a) -> PTR -> IO (Maybe a)
infixr 0 $?
skipIf :: Bool -> IO a -> IO (Maybe a)
loadMEM :: String -> IO MEM
freeMEM :: MEM -> IO ()
pointerRange :: PTR -> ULONG -> Int -> [PTR]
pointerRangeGen :: (Integral i) => PTR -> ULONG -> i -> [PTR]
-- | Return empty list if start pointer is zero.
pointerRangeGenCheck :: (Integral i) => PTR -> ULONG -> i -> [PTR]
pointerRangeGen2 :: (Integral i, Integral j) => PTR -> ULONG -> i -> j -> [PTR]
chunk :: (Integral i) => i -> [a] -> [[a]]
-- | Strings tend to be fixed width fields with trailing zeros.
stringFromBytes :: [UBYTE] -> String
module Sound.MED.Raw.CmdPageData
data CmdPageData
CmdPageData :: UBYTE -> UBYTE -> CmdPageData
[command] :: CmdPageData -> UBYTE
[databyte] :: CmdPageData -> UBYTE
peek :: MEM -> PTR -> IO CmdPageData
instance GHC.Show.Show Sound.MED.Raw.CmdPageData.CmdPageData
module Sound.MED.Raw.BlockCmdPageTable
data BlockCmdPageTable
BlockCmdPageTable :: UWORD -> UWORD -> [Maybe [[CmdPageData]]] -> BlockCmdPageTable
[num_pages] :: BlockCmdPageTable -> UWORD
[reserved] :: BlockCmdPageTable -> UWORD
[pages] :: BlockCmdPageTable -> [Maybe [[CmdPageData]]]
peek :: UWORD -> UWORD -> MEM -> PTR -> IO BlockCmdPageTable
peekPage :: UWORD -> UWORD -> MEM -> PTR -> IO (Maybe [[CmdPageData]])
instance GHC.Show.Show Sound.MED.Raw.BlockCmdPageTable.BlockCmdPageTable
module Sound.MED.Raw.BlockInfo
data BlockInfo
BlockInfo :: Maybe [ULONG] -> Maybe [UBYTE] -> ULONG -> Maybe BlockCmdPageTable -> [ULONG] -> BlockInfo
[hlmask] :: BlockInfo -> Maybe [ULONG]
[blockname] :: BlockInfo -> Maybe [UBYTE]
[blocknamelen] :: BlockInfo -> ULONG
[pagetable] :: BlockInfo -> Maybe BlockCmdPageTable
[reserved] :: BlockInfo -> [ULONG]
peek :: UWORD -> UWORD -> MEM -> PTR -> IO BlockInfo
instance GHC.Show.Show Sound.MED.Raw.BlockInfo.BlockInfo
module Sound.MED.Raw.InstrExt
data InstrExt
InstrExt :: Maybe UBYTE -> Maybe UBYTE -> Maybe UBYTE -> Maybe BYTE -> Maybe UBYTE -> Maybe UBYTE -> Maybe UWORD -> Maybe UBYTE -> Maybe UBYTE -> Maybe ULONG -> Maybe ULONG -> InstrExt
[hold] :: InstrExt -> Maybe UBYTE
[decay] :: InstrExt -> Maybe UBYTE
[suppress_midi_off] :: InstrExt -> Maybe UBYTE
[finetune] :: InstrExt -> Maybe BYTE
[default_pitch] :: InstrExt -> Maybe UBYTE
[instr_flags] :: InstrExt -> Maybe UBYTE
[long_midi_preset] :: InstrExt -> Maybe UWORD
[output_device] :: InstrExt -> Maybe UBYTE
[reserved] :: InstrExt -> Maybe UBYTE
[long_repeat] :: InstrExt -> Maybe ULONG
[long_replen] :: InstrExt -> Maybe ULONG
peek :: UWORD -> MEM -> PTR -> IO InstrExt
instance GHC.Show.Show Sound.MED.Raw.InstrExt.InstrExt
module Sound.MED.Raw.MMD0NoteData
data MMD0NoteData
MMD0NoteData :: UBYTE -> UBYTE -> UBYTE -> UBYTE -> MMD0NoteData
[note] :: MMD0NoteData -> UBYTE
[instrument] :: MMD0NoteData -> UBYTE
[command] :: MMD0NoteData -> UBYTE
[databyte] :: MMD0NoteData -> UBYTE
peek :: MEM -> PTR -> IO MMD0NoteData
instance GHC.Show.Show Sound.MED.Raw.MMD0NoteData.MMD0NoteData
module Sound.MED.Raw.MMD0Block
data MMD0Block
MMD0Block :: UBYTE -> UBYTE -> [[MMD0NoteData]] -> MMD0Block
[numtracks] :: MMD0Block -> UBYTE
[lines] :: MMD0Block -> UBYTE
[notedata] :: MMD0Block -> [[MMD0NoteData]]
peek :: MEM -> PTR -> IO MMD0Block
instance GHC.Show.Show Sound.MED.Raw.MMD0Block.MMD0Block
module Sound.MED.Raw.MMD0Sample
data MMD0Sample
MMD0Sample :: UWORD -> UWORD -> UBYTE -> UBYTE -> UBYTE -> BYTE -> MMD0Sample
[rep] :: MMD0Sample -> UWORD
[replen] :: MMD0Sample -> UWORD
[midich] :: MMD0Sample -> UBYTE
[midipreset] :: MMD0Sample -> UBYTE
[svol] :: MMD0Sample -> UBYTE
[strans] :: MMD0Sample -> BYTE
peek :: MEM -> PTR -> IO MMD0Sample
instance GHC.Show.Show Sound.MED.Raw.MMD0Sample.MMD0Sample
module Sound.MED.Raw.MMD0Song
data MMD0Song
MMD0Song :: [MMD0Sample] -> UWORD -> UWORD -> [UBYTE] -> UWORD -> BYTE -> UBYTE -> UBYTE -> UBYTE -> [UBYTE] -> UBYTE -> UBYTE -> MMD0Song
[sample] :: MMD0Song -> [MMD0Sample]
[numblocks] :: MMD0Song -> UWORD
[songlen] :: MMD0Song -> UWORD
[playseq] :: MMD0Song -> [UBYTE]
[deftempo] :: MMD0Song -> UWORD
[playtransp] :: MMD0Song -> BYTE
[flags] :: MMD0Song -> UBYTE
[flags2] :: MMD0Song -> UBYTE
[tempo2] :: MMD0Song -> UBYTE
[trkvol] :: MMD0Song -> [UBYTE]
[mastervol] :: MMD0Song -> UBYTE
[numsamples] :: MMD0Song -> UBYTE
peek :: MEM -> PTR -> IO MMD0Song
instance GHC.Show.Show Sound.MED.Raw.MMD0Song.MMD0Song
module Sound.MED.Raw.MMD1NoteData
data MMD1NoteData
MMD1NoteData :: UBYTE -> UBYTE -> UBYTE -> UBYTE -> MMD1NoteData
[note] :: MMD1NoteData -> UBYTE
[instrument] :: MMD1NoteData -> UBYTE
[command] :: MMD1NoteData -> UBYTE
[databyte] :: MMD1NoteData -> UBYTE
peek :: MEM -> PTR -> IO MMD1NoteData
instance GHC.Show.Show Sound.MED.Raw.MMD1NoteData.MMD1NoteData
module Sound.MED.Raw.MMD1Block
data MMD1Block
MMD1Block :: UWORD -> UWORD -> Maybe BlockInfo -> [[MMD1NoteData]] -> MMD1Block
[numtracks] :: MMD1Block -> UWORD
[lines] :: MMD1Block -> UWORD
[info] :: MMD1Block -> Maybe BlockInfo
[notedata] :: MMD1Block -> [[MMD1NoteData]]
peek :: MEM -> PTR -> IO MMD1Block
instance GHC.Show.Show Sound.MED.Raw.MMD1Block.MMD1Block
module Sound.MED.Generic.Block
type Note = Int
type Inst = Int
type Cmd = Int
type Val = Int
type Highlight = Bool
type Line = (Maybe Highlight, [(Note, Inst, [(Cmd, Val)])])
data MEDBlock
MEDBlock :: Maybe String -> Int -> Int -> Int -> [Line] -> MEDBlock
[name] :: MEDBlock -> Maybe String
[tracks] :: MEDBlock -> Int
[lines] :: MEDBlock -> Int
[pages] :: MEDBlock -> Int
[seqdata] :: MEDBlock -> [Line]
medblock0 :: MMD0Block -> MEDBlock
medblock1 :: MMD1Block -> MEDBlock
highlightLine :: Int -> Line -> String
humanLine :: Int -> [(Note, Inst, [(Cmd, Val)])] -> String
notes :: [String]
instance Sound.MED.Basic.Human.Human Sound.MED.Generic.Block.MEDBlock
module Sound.MED.Raw.MMDARexxTrigCmd
data MMDARexxTrigCmd
MMDARexxTrigCmd :: Maybe MMDARexxTrigCmd -> UBYTE -> UBYTE -> WORD -> [UBYTE] -> [UBYTE] -> UWORD -> UWORD -> MMDARexxTrigCmd
[next] :: MMDARexxTrigCmd -> Maybe MMDARexxTrigCmd
[cmdnum] :: MMDARexxTrigCmd -> UBYTE
[pad] :: MMDARexxTrigCmd -> UBYTE
[cmdtype] :: MMDARexxTrigCmd -> WORD
[cmd] :: MMDARexxTrigCmd -> [UBYTE]
[port] :: MMDARexxTrigCmd -> [UBYTE]
[cmd_len] :: MMDARexxTrigCmd -> UWORD
[port_len] :: MMDARexxTrigCmd -> UWORD
peek :: MEM -> PTR -> IO MMDARexxTrigCmd
instance GHC.Show.Show Sound.MED.Raw.MMDARexxTrigCmd.MMDARexxTrigCmd
module Sound.MED.Raw.MMDARexx
data MMDARexx
MMDARexx :: UWORD -> UWORD -> Maybe MMDARexxTrigCmd -> MMDARexx
[reserved] :: MMDARexx -> UWORD
[trigcmdlen] :: MMDARexx -> UWORD
[trigcmd] :: MMDARexx -> Maybe MMDARexxTrigCmd
peek :: MEM -> PTR -> IO MMDARexx
instance GHC.Show.Show Sound.MED.Raw.MMDARexx.MMDARexx
module Sound.MED.Raw.MMDDump
data MMDDump
MMDDump :: ULONG -> [UBYTE] -> UWORD -> Maybe [UBYTE] -> MMDDump
[len] :: MMDDump -> ULONG
[dat] :: MMDDump -> [UBYTE]
[ext_len] :: MMDDump -> UWORD
[name] :: MMDDump -> Maybe [UBYTE]
peek :: MEM -> PTR -> IO MMDDump
instance GHC.Show.Show Sound.MED.Raw.MMDDump.MMDDump
module Sound.MED.Raw.MMDDumpData
data MMDDumpData
MMDDumpData :: UWORD -> [UWORD] -> [MMDDump] -> MMDDumpData
[numdumps] :: MMDDumpData -> UWORD
[reserved] :: MMDDumpData -> [UWORD]
[dumps] :: MMDDumpData -> [MMDDump]
peek :: MEM -> PTR -> IO MMDDumpData
instance GHC.Show.Show Sound.MED.Raw.MMDDumpData.MMDDumpData
module Sound.MED.Raw.MMDInfo
data MMDInfo
MMDInfo :: Maybe MMDInfo -> UWORD -> UWORD -> ULONG -> [UBYTE] -> MMDInfo
[next] :: MMDInfo -> Maybe MMDInfo
[reserved] :: MMDInfo -> UWORD
[typ] :: MMDInfo -> UWORD
[len] :: MMDInfo -> ULONG
[dat] :: MMDInfo -> [UBYTE]
peek :: MEM -> PTR -> IO MMDInfo
instance GHC.Show.Show Sound.MED.Raw.MMDInfo.MMDInfo
module Sound.MED.Raw.MMDInstrInfo
data MMDInstrInfo
MMDInstrInfo :: Maybe [UBYTE] -> MMDInstrInfo
[name] :: MMDInstrInfo -> Maybe [UBYTE]
peek :: UWORD -> MEM -> PTR -> IO MMDInstrInfo
instance GHC.Show.Show Sound.MED.Raw.MMDInstrInfo.MMDInstrInfo
module Sound.MED.Raw.MMDMIDICmd3x
data MMDMIDICmd3x
MMDMIDICmd3x :: UBYTE -> UBYTE -> UWORD -> [UBYTE] -> [UWORD] -> MMDMIDICmd3x
[struct_ver] :: MMDMIDICmd3x -> UBYTE
[pad] :: MMDMIDICmd3x -> UBYTE
[num_of_settings] :: MMDMIDICmd3x -> UWORD
[ctrlr_types] :: MMDMIDICmd3x -> [UBYTE]
[ctrlr_numbers] :: MMDMIDICmd3x -> [UWORD]
peek :: MEM -> PTR -> IO MMDMIDICmd3x
instance GHC.Show.Show Sound.MED.Raw.MMDMIDICmd3x.MMDMIDICmd3x
module Sound.MED.Raw.NotationInfo
data NotationInfo
NotationInfo :: UBYTE -> UBYTE -> [WORD] -> [UBYTE] -> [UBYTE] -> [BYTE] -> UBYTE -> NotationInfo
[n_of_sharps] :: NotationInfo -> UBYTE
[flags] :: NotationInfo -> UBYTE
[trksel] :: NotationInfo -> [WORD]
[trkshow] :: NotationInfo -> [UBYTE]
[trkghost] :: NotationInfo -> [UBYTE]
[notetr] :: NotationInfo -> [BYTE]
[pad] :: NotationInfo -> UBYTE
peek :: MEM -> PTR -> IO NotationInfo
instance GHC.Show.Show Sound.MED.Raw.NotationInfo.NotationInfo
module Sound.MED.Raw.MMD0exp
data MMD0exp
MMD0exp :: PTR -> [InstrExt] -> UWORD -> UWORD -> [UBYTE] -> ULONG -> [MMDInstrInfo] -> UWORD -> UWORD -> ULONG -> [UWORD] -> [UBYTE] -> Maybe NotationInfo -> [UBYTE] -> ULONG -> Maybe MMDDumpData -> Maybe MMDInfo -> Maybe MMDARexx -> Maybe MMDMIDICmd3x -> [ULONG] -> ULONG -> MMD0exp
[nextmod] :: MMD0exp -> PTR
[exp_smp] :: MMD0exp -> [InstrExt]
[s_ext_entries] :: MMD0exp -> UWORD
[s_ext_entrsz] :: MMD0exp -> UWORD
[annotxt] :: MMD0exp -> [UBYTE]
[annolen] :: MMD0exp -> ULONG
[iinfo] :: MMD0exp -> [MMDInstrInfo]
[i_ext_entries] :: MMD0exp -> UWORD
[i_ext_entrsz] :: MMD0exp -> UWORD
[jumpmask] :: MMD0exp -> ULONG
[rgbtable] :: MMD0exp -> [UWORD]
[channelsplit] :: MMD0exp -> [UBYTE]
[n_info] :: MMD0exp -> Maybe NotationInfo
[songname] :: MMD0exp -> [UBYTE]
[songnamelen] :: MMD0exp -> ULONG
[dumps] :: MMD0exp -> Maybe MMDDumpData
[mmdinfo] :: MMD0exp -> Maybe MMDInfo
[mmdrexx] :: MMD0exp -> Maybe MMDARexx
[mmdcmd3x] :: MMD0exp -> Maybe MMDMIDICmd3x
[reserved2] :: MMD0exp -> [ULONG]
[tag_end] :: MMD0exp -> ULONG
peek :: MEM -> PTR -> IO MMD0exp
instance GHC.Show.Show Sound.MED.Raw.MMD0exp.MMD0exp
module Sound.MED.Raw.PlaySeq
data PlaySeq
PlaySeq :: [UBYTE] -> ULONG -> ULONG -> UWORD -> [UWORD] -> PlaySeq
[name] :: PlaySeq -> [UBYTE]
[reserved0] :: PlaySeq -> ULONG
[reserved1] :: PlaySeq -> ULONG
[len] :: PlaySeq -> UWORD
[seq] :: PlaySeq -> [UWORD]
peek :: MEM -> PTR -> IO PlaySeq
instance GHC.Show.Show Sound.MED.Raw.PlaySeq.PlaySeq
module Sound.MED.Generic.PlaySeq
data MEDPlaySeq
MEDPlaySeq :: String -> [Int] -> MEDPlaySeq
[name] :: MEDPlaySeq -> String
-- | block indices
[indices] :: MEDPlaySeq -> [Int]
playSeq0 :: MMD0Song -> MEDPlaySeq
playSeq2 :: PlaySeq -> MEDPlaySeq
instance Sound.MED.Basic.Human.Human Sound.MED.Generic.PlaySeq.MEDPlaySeq
module Sound.MED.Raw.MMD2Song
data MMD2Song
MMD2Song :: [MMD0Sample] -> UWORD -> UWORD -> [PlaySeq] -> [UWORD] -> [UBYTE] -> UWORD -> UWORD -> [BYTE] -> ULONG -> UWORD -> UWORD -> UBYTE -> UBYTE -> UWORD -> BYTE -> [UBYTE] -> UWORD -> BYTE -> UBYTE -> UBYTE -> UBYTE -> [UBYTE] -> UBYTE -> UBYTE -> MMD2Song
[sample] :: MMD2Song -> [MMD0Sample]
[numblocks] :: MMD2Song -> UWORD
[songlen] :: MMD2Song -> UWORD
[playseqtable] :: MMD2Song -> [PlaySeq]
[sectiontable] :: MMD2Song -> [UWORD]
[trackvols] :: MMD2Song -> [UBYTE]
[numtracks] :: MMD2Song -> UWORD
[numpseqs] :: MMD2Song -> UWORD
[trackpans] :: MMD2Song -> [BYTE]
[flags3] :: MMD2Song -> ULONG
[voladj] :: MMD2Song -> UWORD
[channels] :: MMD2Song -> UWORD
[mix_echotype] :: MMD2Song -> UBYTE
[mix_echodepth] :: MMD2Song -> UBYTE
[mix_echolen] :: MMD2Song -> UWORD
[mix_stereosep] :: MMD2Song -> BYTE
[pad0] :: MMD2Song -> [UBYTE]
[deftempo] :: MMD2Song -> UWORD
[playtransp] :: MMD2Song -> BYTE
[flags] :: MMD2Song -> UBYTE
[flags2] :: MMD2Song -> UBYTE
[tempo2] :: MMD2Song -> UBYTE
[pad1] :: MMD2Song -> [UBYTE]
[mastervol] :: MMD2Song -> UBYTE
[numsamples] :: MMD2Song -> UBYTE
peek :: MEM -> PTR -> IO MMD2Song
instance GHC.Show.Show Sound.MED.Raw.MMD2Song.MMD2Song
module Sound.MED.Generic.Tempo
data MEDTempo
MEDTempo :: Mode -> Int -> MEDTempo
[mode] :: MEDTempo -> Mode
[primary, secondary] :: MEDTempo -> Int
data Mode
Speed :: Mode
Octa :: Mode
BPM :: Int -> Mode
[linesPerBeat] :: Mode -> Int
song0Tempo :: MMD0Song -> MEDTempo
song2Tempo :: MMD2Song -> MEDTempo
-- | Interpret tempo related commands.
update :: MEDTempo -> (Cmd, Val) -> MEDTempo
toTime :: Fractional a => MEDTempo -> a
module Sound.MED.Raw.SampleInstr
data SampleInstr
SampleInstr :: WORD -> Either [[BYTE]] [[WORD]] -> SampleInstr
[octaves] :: SampleInstr -> WORD
[chans] :: SampleInstr -> Either [[BYTE]] [[WORD]]
peek :: ULONG -> WORD -> Bool -> Bool -> MEM -> PTR -> IO SampleInstr
instance GHC.Show.Show Sound.MED.Raw.SampleInstr.SampleInstr
module Sound.MED.Raw.SynthWF
data SynthWF
SynthWF :: UWORD -> [BYTE] -> SynthWF
[len2] :: SynthWF -> UWORD
[wfdata] :: SynthWF -> [BYTE]
peek :: MEM -> PTR -> IO SynthWF
instance GHC.Show.Show Sound.MED.Raw.SynthWF.SynthWF
module Sound.MED.Raw.HybridInstr
data HybridInstr
HybridInstr :: UBYTE -> [UBYTE] -> UWORD -> UWORD -> UWORD -> UWORD -> UBYTE -> UBYTE -> UWORD -> [UBYTE] -> [UBYTE] -> PTR -> [Maybe SynthWF] -> HybridInstr
[defaultdecay] :: HybridInstr -> UBYTE
[reserved] :: HybridInstr -> [UBYTE]
[rep] :: HybridInstr -> UWORD
[replen] :: HybridInstr -> UWORD
[voltbllen] :: HybridInstr -> UWORD
[wftbllen] :: HybridInstr -> UWORD
[volspeed] :: HybridInstr -> UBYTE
[wfspeed] :: HybridInstr -> UBYTE
[wforms] :: HybridInstr -> UWORD
[voltbl] :: HybridInstr -> [UBYTE]
[wftbl] :: HybridInstr -> [UBYTE]
[wf0] :: HybridInstr -> PTR
[wf] :: HybridInstr -> [Maybe SynthWF]
peek :: MEM -> PTR -> IO HybridInstr
instance GHC.Show.Show Sound.MED.Raw.HybridInstr.HybridInstr
module Sound.MED.Raw.SynthInstr
data SynthInstr
SynthInstr :: UBYTE -> [UBYTE] -> UWORD -> UWORD -> UWORD -> UWORD -> UBYTE -> UBYTE -> UWORD -> [UBYTE] -> [UBYTE] -> [Maybe SynthWF] -> SynthInstr
[defaultdecay] :: SynthInstr -> UBYTE
[reserved] :: SynthInstr -> [UBYTE]
[rep] :: SynthInstr -> UWORD
[replen] :: SynthInstr -> UWORD
[voltbllen] :: SynthInstr -> UWORD
[wftbllen] :: SynthInstr -> UWORD
[volspeed] :: SynthInstr -> UBYTE
[wfspeed] :: SynthInstr -> UBYTE
[wforms] :: SynthInstr -> UWORD
[voltbl] :: SynthInstr -> [UBYTE]
[wftbl] :: SynthInstr -> [UBYTE]
[wf] :: SynthInstr -> [Maybe SynthWF]
peek :: MEM -> PTR -> IO SynthInstr
instance GHC.Show.Show Sound.MED.Raw.SynthInstr.SynthInstr
module Sound.MED.Raw.InstrHdr
data Instrument
Unknown :: Instrument
Hybrid :: HybridInstr -> Instrument
Synthetic :: SynthInstr -> Instrument
Sample :: SampleInstr -> Instrument
data InstrHdr
InstrHdr :: ULONG -> WORD -> Bool -> Bool -> Bool -> Instrument -> InstrHdr
[len] :: InstrHdr -> ULONG
[stype] :: InstrHdr -> WORD
[s16] :: InstrHdr -> Bool
[stereo] :: InstrHdr -> Bool
[md16] :: InstrHdr -> Bool
[dat] :: InstrHdr -> Instrument
peek :: MEM -> PTR -> IO InstrHdr
instance GHC.Show.Show Sound.MED.Raw.InstrHdr.InstrHdr
instance GHC.Show.Show Sound.MED.Raw.InstrHdr.Instrument
module Sound.MED.Generic.Instrument
data MEDInstrument
MEDInstrument :: Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe Int -> Maybe String -> MEDInstrument
[rep] :: MEDInstrument -> Maybe Int
[replen] :: MEDInstrument -> Maybe Int
[midich] :: MEDInstrument -> Maybe Int
[midipreset] :: MEDInstrument -> Maybe Int
[svol] :: MEDInstrument -> Maybe Int
[strans] :: MEDInstrument -> Maybe Int
[hold] :: MEDInstrument -> Maybe Int
[decay] :: MEDInstrument -> Maybe Int
[suppress_midi_off] :: MEDInstrument -> Maybe Int
[finetune] :: MEDInstrument -> Maybe Int
[default_pitch] :: MEDInstrument -> Maybe Int
[instr_flags] :: MEDInstrument -> Maybe Int
[long_midi_preset] :: MEDInstrument -> Maybe Int
[output_device] :: MEDInstrument -> Maybe Int
[long_repeat] :: MEDInstrument -> Maybe Int
[long_replen] :: MEDInstrument -> Maybe Int
[name] :: MEDInstrument -> Maybe String
medinstruments :: [Maybe InstrHdr] -> [MMD0Sample] -> [MMDInstrInfo] -> [InstrExt] -> [MEDInstrument]
medinstrument :: Maybe InstrHdr -> Maybe MMD0Sample -> Maybe MMDInstrInfo -> Maybe InstrExt -> MEDInstrument
instance GHC.Show.Show Sound.MED.Generic.Instrument.MEDInstrument
instance Sound.MED.Basic.Human.Human Sound.MED.Generic.Instrument.MEDInstrument
module Sound.MED.Raw.MMD0
data MMD0
MMD0 :: ULONG -> ULONG -> MMD0Song -> UWORD -> UWORD -> [MMD0Block] -> UBYTE -> UBYTE -> UBYTE -> UBYTE -> [Maybe InstrHdr] -> ULONG -> Maybe MMD0exp -> ULONG -> UWORD -> UWORD -> UWORD -> UWORD -> WORD -> UBYTE -> UBYTE -> MMD0
[id] :: MMD0 -> ULONG
[modlen] :: MMD0 -> ULONG
[song] :: MMD0 -> MMD0Song
[psecnum] :: MMD0 -> UWORD
[pseq] :: MMD0 -> UWORD
[blockarr] :: MMD0 -> [MMD0Block]
[mmdflags] :: MMD0 -> UBYTE
[reserved1] :: MMD0 -> UBYTE
[reserved2] :: MMD0 -> UBYTE
[reserved3] :: MMD0 -> UBYTE
[smplarr] :: MMD0 -> [Maybe InstrHdr]
[reserved4] :: MMD0 -> ULONG
[expdata] :: MMD0 -> Maybe MMD0exp
[reserved5] :: MMD0 -> ULONG
[pstate] :: MMD0 -> UWORD
[pblock] :: MMD0 -> UWORD
[pline] :: MMD0 -> UWORD
[pseqnum] :: MMD0 -> UWORD
[actplayline] :: MMD0 -> WORD
[counter] :: MMD0 -> UBYTE
[extra_songs] :: MMD0 -> UBYTE
peek :: MEM -> PTR -> IO MMD0
instance GHC.Show.Show Sound.MED.Raw.MMD0.MMD0
module Sound.MED.Raw.MMD1
data MMD1
MMD1 :: ULONG -> ULONG -> MMD0Song -> UWORD -> UWORD -> [MMD1Block] -> UBYTE -> UBYTE -> UBYTE -> UBYTE -> [Maybe InstrHdr] -> ULONG -> Maybe MMD0exp -> ULONG -> UWORD -> UWORD -> UWORD -> UWORD -> WORD -> UBYTE -> UBYTE -> MMD1
[id] :: MMD1 -> ULONG
[modlen] :: MMD1 -> ULONG
[song] :: MMD1 -> MMD0Song
[psecnum] :: MMD1 -> UWORD
[pseq] :: MMD1 -> UWORD
[blockarr] :: MMD1 -> [MMD1Block]
[mmdflags] :: MMD1 -> UBYTE
[reserved1] :: MMD1 -> UBYTE
[reserved2] :: MMD1 -> UBYTE
[reserved3] :: MMD1 -> UBYTE
[smplarr] :: MMD1 -> [Maybe InstrHdr]
[reserved4] :: MMD1 -> ULONG
[expdata] :: MMD1 -> Maybe MMD0exp
[reserved5] :: MMD1 -> ULONG
[pstate] :: MMD1 -> UWORD
[pblock] :: MMD1 -> UWORD
[pline] :: MMD1 -> UWORD
[pseqnum] :: MMD1 -> UWORD
[actplayline] :: MMD1 -> WORD
[counter] :: MMD1 -> UBYTE
[extra_songs] :: MMD1 -> UBYTE
peek :: MEM -> PTR -> IO MMD1
instance GHC.Show.Show Sound.MED.Raw.MMD1.MMD1
module Sound.MED.Raw.MMD2
data MMD2
MMD2 :: ULONG -> ULONG -> MMD2Song -> UWORD -> UWORD -> [MMD1Block] -> UBYTE -> UBYTE -> UBYTE -> UBYTE -> [Maybe InstrHdr] -> ULONG -> Maybe MMD0exp -> ULONG -> UWORD -> UWORD -> UWORD -> UWORD -> WORD -> UBYTE -> UBYTE -> MMD2
[id] :: MMD2 -> ULONG
[modlen] :: MMD2 -> ULONG
[song] :: MMD2 -> MMD2Song
[psecnum] :: MMD2 -> UWORD
[pseq] :: MMD2 -> UWORD
[blockarr] :: MMD2 -> [MMD1Block]
[mmdflags] :: MMD2 -> UBYTE
[reserved1] :: MMD2 -> UBYTE
[reserved2] :: MMD2 -> UBYTE
[reserved3] :: MMD2 -> UBYTE
[smplarr] :: MMD2 -> [Maybe InstrHdr]
[reserved4] :: MMD2 -> ULONG
[expdata] :: MMD2 -> Maybe MMD0exp
[reserved5] :: MMD2 -> ULONG
[pstate] :: MMD2 -> UWORD
[pblock] :: MMD2 -> UWORD
[pline] :: MMD2 -> UWORD
[pseqnum] :: MMD2 -> UWORD
[actplayline] :: MMD2 -> WORD
[counter] :: MMD2 -> UBYTE
[extra_songs] :: MMD2 -> UBYTE
peek :: MEM -> PTR -> IO MMD2
instance GHC.Show.Show Sound.MED.Raw.MMD2.MMD2
module Sound.MED.Raw.MMD3
data MMD3
MMD3 :: ULONG -> ULONG -> MMD2Song -> UWORD -> UWORD -> [MMD1Block] -> UBYTE -> UBYTE -> UBYTE -> UBYTE -> [Maybe InstrHdr] -> ULONG -> Maybe MMD0exp -> ULONG -> UWORD -> UWORD -> UWORD -> UWORD -> WORD -> UBYTE -> UBYTE -> MMD3
[id] :: MMD3 -> ULONG
[modlen] :: MMD3 -> ULONG
[song] :: MMD3 -> MMD2Song
[psecnum] :: MMD3 -> UWORD
[pseq] :: MMD3 -> UWORD
[blockarr] :: MMD3 -> [MMD1Block]
[mmdflags] :: MMD3 -> UBYTE
[reserved1] :: MMD3 -> UBYTE
[reserved2] :: MMD3 -> UBYTE
[reserved3] :: MMD3 -> UBYTE
[smplarr] :: MMD3 -> [Maybe InstrHdr]
[reserved4] :: MMD3 -> ULONG
[expdata] :: MMD3 -> Maybe MMD0exp
[reserved5] :: MMD3 -> ULONG
[pstate] :: MMD3 -> UWORD
[pblock] :: MMD3 -> UWORD
[pline] :: MMD3 -> UWORD
[pseqnum] :: MMD3 -> UWORD
[actplayline] :: MMD3 -> WORD
[counter] :: MMD3 -> UBYTE
[extra_songs] :: MMD3 -> UBYTE
peek :: MEM -> PTR -> IO MMD3
instance GHC.Show.Show Sound.MED.Raw.MMD3.MMD3
module Sound.MED.Generic
data MED
MED :: [MEDInstrument] -> [MEDBlock] -> [MEDPlaySeq] -> MEDTempo -> MED
[instrs] :: MED -> [MEDInstrument]
[blocks] :: MED -> [MEDBlock]
[playseqs] :: MED -> [MEDPlaySeq]
[tempo] :: MED -> MEDTempo
peek :: MEM -> IO MED
load :: FilePath -> IO MED
instance Sound.MED.Basic.Human.Human Sound.MED.Generic.MED