@midi_track2ascii(tab)

This function read a list of timestamped midi messages, as returned by @midi_read, and produces a tab where the seven previous commands are given in a human readable way, with the channel is uncoupled from the command name. This function can be used for debugging purposes.

For example, suppose that

       $t := @midi_read("bolero.mid")

returns the tab

    TAB[  [0.0,        TAB[255, 3, 6, 66, 111, 108, 101, 114, 111]],
          [0.0,        TAB[255, 81, 3, 11, 188, 206]],
          [0.0,        TAB[255, 88, 4, 4, 2, 24, 8]],
          [1.45032,    TAB[240, 65, 16, 66, 18, 64, 0, 127, 0, 65, 247]],
          [0.717147,   TAB[176, 91, 127]],
          [0.020032,   TAB[177, 91, 127]],
          [0.0400641,  TAB[178, 91, 127]],
          [0.0400641,  TAB[179, 91, 127]],
          [0.0400641,  TAB[180, 91, 127]],
          [0.00400641, TAB[201, 48]],
          [0.0,        TAB[153, 86, 64]],
          [0.00400641, TAB[137, 86, 64]],
          [0.0,        TAB[200, 32]],
          [0.0,        TAB[184, 10, 65]],
          [0.0,        TAB[152, 36, 52]],
          [0.0320512,  TAB[181, 91, 127]],
          [0.00801281, TAB[193, 60]],
          [0.0,        TAB[145, 67, 98]],
          [0.0320512,  TAB[182, 91, 127]],
          [0.0400641,  TAB[183, 91, 127]],
          [0.0360577,  TAB[129, 67, 98]],
          [0.00400641, TAB[184, 91, 127]],
          [0.0400641,  TAB[185, 91, 127]],
          [0.0400641,  TAB[186, 91, 127]],
          [0.0400641,  TAB[187, 91, 127]],
          [0.0400641,  TAB[188, 91, 127]],
          [0.0400641,  TAB[189, 91, 127]],
          [0.0120192,  TAB[145, 67, 98]],
          [0.0120192,  TAB[153, 86, 31]],
          [0.0,        TAB[190, 91, 127]],
          [0.0160256,  TAB[191, 91, 127]],
          [0.0520833,  TAB[129, 67, 98]],
          [0.0160256,  TAB[137, 86, 31]],
          [0.0360577,  TAB[145, 67, 98]],
          [0.0120192,  TAB[153, 86, 31]],
          [0.0240384,  TAB[136, 36, 52]],
          [0.020032,   TAB[129, 67, 98]],
          [0.0160256,  TAB[137, 86, 31]],
          [0.0360577,  TAB[145, 67, 98]],
          [0.0280448,  TAB[153, 86, 31]],
          [0.0440705,  TAB[129, 67, 98]]
    ]

Then

    @midi_tarck2ascii($t)

returns

      TAB[  TAB[<<undef>>],
            TAB[<<undef>>],
        TAB[<<undef>>],
        TAB[<<undef>>],
        TAB["Controller", 0, 91, 127],
        TAB["Controller", 1, 91, 127],
        TAB["Controller", 2, 91, 127],
        TAB["Controller", 3, 91, 127],
        TAB["Controller", 4, 91, 127],
        TAB["PatchChange", 9, 48],
        TAB["NoteOn", 9, "D6", 64],
        TAB["NoteOff", 9, "D6"],
        TAB["PatchChange", 8, 32],
        TAB["Controller", 8, 10, 65],
        TAB["NoteOn", 8, "C2", 52],
        TAB["Controller", 5, 91, 127],
        TAB["PatchChange", 1, 60],
        TAB["NoteOn", 1, "G4", 98],
        TAB["Controller", 6, 91, 127],
        TAB["Controller", 7, 91, 127],
        TAB["NoteOff", 1, "G4"],
        TAB["Controller", 8, 91, 127],
        TAB["Controller", 9, 91, 127],
        TAB["Controller", 10, 91, 127],
        TAB["Controller", 11, 91, 127],
        TAB["Controller", 12, 91, 127],
        TAB["Controller", 13, 91, 127],
        TAB["NoteOn", 1, "G4", 98],
        TAB["NoteOn", 9, "D6", 31],
        TAB["Controller", 14, 91, 127],
        TAB["Controller", 15, 91, 127],
        TAB["NoteOff", 1, "G4"],
        TAB["NoteOff", 9, "D6"],
        TAB["NoteOn", 1, "G4", 98],
        TAB["NoteOn", 9, "D6", 31],
        TAB["NoteOff", 8, "C2"],
        TAB["NoteOff", 1, "G4"],
        TAB["NoteOff", 9, "D6"],
        TAB["NoteOn", 1, "G4", 98],
        TAB["NoteOn", 9, "D6", 31],
        TAB["NoteOff", 1, "G4"]
      ]

The TAB[<<undef>>] is a tab with ony one element, <<undef>>. This corresponds to midi header associated with the file and the track. The seven channel related commands (see [@midiread]) are described with a tab whose first element is the command name (as a string), the second element is the channel number, etc. Cf. the description of teh parameters of a command at @midi_read.

The @midi_track2ascii is mainly used for printing partial information in a human readable format.



See also Handling Midi @hz2midi    @hz2midicent    @hz2symb    @midi_getChannel    @midi_getCommandByte    @midi_getCommand    @midi_getMetaType    @midi_isAftertouch    @midi_isController    @midi_isEndOfTrack    @midi_isMeta    @midi_isNoteOff    @midi_isNoteOn    @midi_isNote    @midi_isPatchChange    @midi_isPitchbend    @midi_isPressure    @midi_isTempo    @midi_read    @midi_track2ascii    @midi2hz    @midicent2hz    @symb2midicent