module Sound.MIDI.Example.ControllerRamp {- Main -} where

import qualified Sound.MIDI.File      as MidiFile
import qualified Sound.MIDI.File.Save as Save

-- import qualified Sound.MIDI.File.Event.Meta as MetaEvent
import qualified Sound.MIDI.File.Event      as Event

import qualified Sound.MIDI.Message.Channel       as ChannelMsg
import qualified Sound.MIDI.Message.Channel.Voice as VoiceMsg

-- import qualified Sound.MIDI.Parser.Report as Report

import qualified Data.EventList.Relative.TimeBody as EventList
-- import Data.EventList.Relative.MixedBody ((/.), (./), )

import qualified Data.ByteString.Lazy as B

-- import qualified Numeric.NonNegative.Wrapper as NonNeg



example :: MidiFile.T
example =
   let chan = ChannelMsg.toChannel 0
   in  MidiFile.Cons MidiFile.Parallel (MidiFile.Ticks 10)
          [EventList.fromPairList $
           map (\x -> (50, Event.MIDIEvent (ChannelMsg.Cons chan (ChannelMsg.Voice (VoiceMsg.Control VoiceMsg.mainVolume x)))))
               [0..127]]

main :: IO ()
main =
   B.writeFile "controller-ramp.mid"
      (Save.toByteString example)