module MIDI (readFromMidi, writeToMidi) where
import Euterpea.IO.MIDI.ToMidi (writeMidi)
import Euterpea.IO.MIDI.FromMidi2 (fromMidi2)
import qualified Codec.Midi as MIDI
import Types
import EuterpeaUtils (patternToMusic, musicToPattern)
writeToMidi :: FilePath -> Pattern -> IO ()
writeToMidi fn = writeMidi fn . patternToMusic
readFromMidi :: FilePath -> IO Pattern
readFromMidi = fmap (musicToPattern . fromMidi2) . importFile
where
importFile :: FilePath -> IO MIDI.Midi
importFile fn = do
r <- MIDI.importFile fn
case r of
Left err -> error err
Right m -> return m