zmidi-core-0.3.0: demo/MidiTune.hs
{-# OPTIONS -Wall #-}
--
-- Write a MIDI \"tune\".
--
-- The MIDI AST should be considered too low level to work with
-- directly...
--
module Main where
import ZMidi.Core
import System.Directory
main :: IO ()
main = do
createDirectoryIfMissing True "./out/"
writeMidi "./out/midi_tune.mid" midi_tune01
midi_tune01 :: MidiFile
midi_tune01 = MidiFile
{ mf_header = MidiHeader { hdr_format = MF1
, num_tracks = 2
, time_division = TPB 480
}
, mf_tracks = [ meta_track, sound_track ]
}
where
meta_track = MidiTrack [ (0, MetaEvent $ TextEvent SEQUENCE_NAME "Track 0")
, (0, MetaEvent $ EndOfTrack)
]
sound_track = MidiTrack [ (0, MetaEvent $ TextEvent SEQUENCE_NAME "Track 1")
, (0, MetaEvent $ SetTempo 500000)
, (0, VoiceEvent $ NoteOn 0 60 127)
, (480, VoiceEvent $ NoteOff 0 60 15)
, (0, VoiceEvent $ NoteOn 0 62 127)
, (480, VoiceEvent $ NoteOff 0 62 15)
, (0, VoiceEvent $ NoteOn 0 64 127)
, (480, VoiceEvent $ NoteOff 0 64 15)
, (0, VoiceEvent $ NoteOn 0 66 127)
, (480, VoiceEvent $ NoteOff 0 66 15)
, (0, MetaEvent $ EndOfTrack)
]