Get note data from MIDI file

后端 未结 3 1259
借酒劲吻你
借酒劲吻你 2021-02-02 02:43

Is there a way to get the note data from a MIDI file? That is, I want to break down the MIDI file into its constituent parts so they are in the form of a unique word (or any ot

3条回答
  •  花落未央
    2021-02-02 03:40

    Nik Reisman - sorry, but I don't agree with you...parsing midi in C#, C++ is something about 400 rows of code..It's nothing hard and it is nothing difficult.

    I will advise you start with this link: https://web.archive.org/web/20141227205754/http://www.sonicspot.com:80/guide/midifiles.html
    There is everything you need to know about midi and how to read it..

    In the short description how the parser will work:
    1)Open midi in byte mode
    2)Read the header chunk where there is info about size, number of tracks and IMPORTANT file format!!
    - There are 3 types of formats: 0,1,2 (type 2 is really "valuable", there are only few midi files with this type, so you don't need to read the midi if there is type 2)
    - if there is not written: "MThd" (0x4D546864), end with error (it's a bad midi file)
    3)Read track chunk
    - if there is not written: "MTrk" (0x4D54726B) end with error (it's a bad midi file)
    4)Read the midi events.. - There are very many events, you can read them all with if-else commands, or you can read only the events what you want to know, for example NOTE ON, NOTE OFF - Sometimes in some midi files are not NOTE OFF..this event is changed with NOTE ON and velocity 0

    On the websites everything is explained really nicely. If you open the midi file in byte mode you will have only a few methods and everything is then only about if-else commands and there you will catch what is stored right now.
    It is important to understand VARIABLE LENGTH, but on the websites it is also explained. It's not hard. You can google many sites where VARIABLE LENGTH is explained too, with some images and examples. So I don't think that it is hard to explain it in here.

    If you want a bit more advice, write me, I will try it. But parsing midi is not as hard as how it looks. If you have some problems, write me..

提交回复
热议问题