;; overload print
(bind-func print:[void,XTM_MIDI_EVT*]*
(lambda (obj)
(if (null? obj)
(printout "<NULL_MIDI_MSG>")
(cond ((= (get_midi_evt_type obj) MIDI_NOTE_ON)
(printout "<NOTE-ON pitch: " (get_midi_evt_a obj)
" volume:" (get_midi_evt_b obj)
" chan:" (get_midi_evt_channel obj)
" timestamp:" (get_midi_evt_timestamp obj) ">"))
((= (get_midi_evt_type obj) MIDI_NOTE_OFF)
(printout "<NOTE-OFF pitch:" (get_midi_evt_a obj)
" volume:" (get_midi_evt_b obj)
" chan:" (get_midi_evt_channel obj)
" timestamp:" (get_midi_evt_timestamp obj) ">"))
((= (get_midi_evt_type obj) MIDI_CONTROL_CHANGE)
(printout "<MIDI-CC byte1:" (get_midi_evt_a obj)
" byte2:" (get_midi_evt_b obj)
" chan:" (get_midi_evt_channel obj)
" timestamp:" (get_midi_evt_timestamp obj) ">"))
(else (printout "<UNKNOWN_MIDI_MSG>")))) ;; shouldn't get here
void))