record dealloc'ed? added by krgn on Thu Aug 1 22:34:56 2013

(import foreign)
(import srfi-14)
(import foreigners)

(foreign-declare "#include \"rawmidi.h\"")

(define-foreign-record-type (midi-port "snd_rawmidi_t")
   (constructor: make-midi-port)
   (destructor: free-midi-port))

(define open-midi-port
  (foreign-lambda* 
   int ((c-pointer input)
        (c-pointer output)
        (c-string file)
        (c-string device)
        (int mode))
   "C_return(rawmidi_hw_open(input, output, file, device, mode));"))

(define write-note 
  (foreign-lambda size_t "rawmidi_hw_write" midi-port u8vector size_t ))

(define print-device-info
  (foreign-lambda int "rawmidi_hw_print_info" c-string))

(define (main)
  (let ((outport (make-midi-port))
        (inport #f)
        (file "/dev/midi2")
        (device "UM-12"))
    (print (open-midi-port inport outport file device 0))
    (print (write-note outport '#u8(#x90 60 100) 3))))

(main)