module Sound.MIDI.Example.ControllerRamp where
import qualified Sound.MIDI.File as MidiFile
import qualified Sound.MIDI.File.Save as Save
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 Data.EventList.Relative.TimeBody as EventList
import qualified Data.ByteString.Lazy as B
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)