zmidi-core-0.8.0: Read and write MIDI files.

Copyright(c) Stephen Tetley 2010-2015
LicenseBSD3
MaintainerStephen Tetley <stephen.tetley@gmail.com>
Stabilityunstable
PortabilityAs per dependencies.
Safe HaskellNone
LanguageHaskell98

ZMidi.Core.ReadFile

Contents

Description

A top down (Parsec style) MIDI file parser.

For valid input, the parser should parse without error (i.e all cases of event types are fully enumerated). Malformed input (syntactically bad events, or truncated data) will cause fatal parse errors.

Note - the parser returns a literal result if the input uses Running Status, i.e, - the answer matches the input - where running status uses a NoteOn event with velocity 0 to stand for a NoteOff, the parser likewise returns a Note-On. Use the ZMidi.Core.Canonical to translate the input to canonical form where note-offs are encoded directly with NoteOff.

Synopsis

Read a MIDI file

readMidi :: FilePath -> IO (Either ParseErr MidiFile) Source

Read a well formed MIDI file.

Auxiallary types

data ParseErr Source

ParseErr is the position of the error and a message.

Constructors

ParseErr !Pos !ErrMsg 

type Pos = Int Source

Position of the parser in the input stream.

This is exposed by the ReadFile API and may be useful for disassembling a MIDI file that causes a parse failure.

type ErrMsg = String Source

Error message - alias for String.