Skip to content

lue-bird/elm-midi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

still TODO

  • implement running status (ugh)

a bytes parser for MIDI (.mid) files.

Some ideas on what you can use this for:

  • creating an animations for a song
  • creating a rhythm game
  • analyzing a song
  • visualizing a song, e.g. in guitar tabs
  • transforming a song to instructions that produce certain sounds. Watch this: https://www.youtube.com/watch/4rcnu8j1Xqk
  • playing a song 🧠
  • ...

A basic example for parsing a selected file using

update event =
    case event of
        MidiFileSelectClicked ->
            \state ->
                ( state
                , File.Select.file [ "audio/midi" ] MidiFileSelected
                )

        MidiFileSelected midiFile ->
            \state ->
                ( state
                , midiFile |> File.toBytes |> Task.perform SelectedMidiFileBytesReceived
                )

        SelectedMidiFileBytesReceived midiFileBytes ->
            \state ->
                ( { state
                    | midi =
                        midiFileBytes
                            |> Bytes.Parser.run Midi.file
                  }
                , Cmd.none
                )

complete example

not supported

  • encoding

created with the help of

sample midi files for testing