I want to manually have a function that creates a MIDI file according to users demands, for example.
User write 2 patches that contain 8 bars of 4 quarters of A4 (Concert A - 440hz) and C4 (each as a seperated channel) on 120 speed, at velocity 100, instrument piano (01) and patch 49 or whatever.
How should the MIDI file look like according to the above. My goal is to learn how to create a function that generates MIDI data, then write everything to a MIDI file.
So first I have to understand how to create this function or 开发者_Go百科to understand 'MIDI-file language' so I can write it.
Thanks in advance.
Other good links on the MIDI file format can be found here:
- (.mid) Standard MIDI File Format
- The MIDI Technical Fanatic's Brainwashing Center (really nice resource)
- Essentials of the MIDI protocol
From all the MIDI info I read recently, this seems to be the most comprehensive tutorial, in the other hand the following link is a good place to get started:
MIDI structure at the official MIDI website
Also, NAudio is a .NET library that works with MIDI files by Mark Heath.
I've also found this link very useful, I thought why not share it with people here.
I think this is the best .NET API for messing with MIDI files.
Just wanted to add that Somascape has a very comprehensive and well-laid out resource for MIDI file structure and MIDI protocol. (Check out the drop-down menu on their site for additional resource pages). It helped me a lot recently while writing a MIDI framework for Swift.
精彩评论