(bind-func rtmidi_register_callback
"Register a midi sink/source"
(lambda (dev:RtMidiInPtr callback_name:i8* user_data:i8*)
(let ((len (strlen callback_name))
(callback_name_native:i8* (salloc (+ len 8))))
(strncpy callback_name_native callback_name (+ 1 len))
(strncpy (pref-ptr callback_name_native len) "_native" 8)
(let ((fptr (llvm_get_function_ptr callback_name_native)))
(if (null? fptr)
(printf "Error: cannot find xtlang function %s\n" callback_name)
(begin
(rtmidi_in_set_callback dev (cast fptr RtMidiCCallback) user_data)
(printf "\nregistered %s as MIDI callback function\n\n" callback_name)))))))