Go Down

Topic: Due as USBHost for Midikeyboard (Read 1 time) previous topic - next topic

Feb 13, 2014, 03:05 pm Last Edit: Feb 15, 2014, 02:57 pm by OptimusPrime Reason: 1
Hi,
I'm looking for a way to connect my Midikeyboard (MAudio Oxygen 61) to my Arduino Due via USB. This could end up in an extremly cheap and flexible way to access analog audio gear without the need of expensive analog keyboards.
I already digged into some interesting links i found on the forum and the web, i like to share with you.

http://makezine.com/2010/11/30/usbhacking/ - he already did it! - but i can't access his code.
http://www.beyondlogic.org/usbnutshell/usb1.shtml - how usb works in a nutshell
http://forum.arduino.cc/index.php?PHPSESSID=ttpp845u9t0ld93dj9adhgt0n6&topic=199608.0 - this code gives me quite realistic values.
http://www.usb.org/developers/devclass_docs/midi10.pdf - midi standard explained

Now i have to establish the connection between the due and the keyboard. I already read through the library files of USBHost (Usb.cpp, Usb.h) and tried to understand the magic going on in the MouseController.h / .cpp
I got quite stuck here. What are basically the next steps to go, to access the data from the keyboard?
I experimented a little bit with accessing the endpoints in my device, but i can only configure the standard endpoint 0.

Anyone out there already tried something similar?
Thanks a lot!

[EDIT]
Today i stumbled upon a very interesting link
http://www.usbmadesimple.co.uk/ums_4.htm
Still some help appreciated ;)

jajambo

Hi.

About [font=Verdana] i can only configure the standard endpoint 0[/font].
It was expected.
Because USB-MIDI device is one of USB -Audio device, not USB-HID device.
The USB keyboard/mouse are belong USB-HID and use the interrupt transfer of USB.
But the USB Audio device used the isochronous transfer of USB, normally.
USB MIDI device 1.0 http://www.usb.org/developers/devclass_docs/midi10.pdf

I haven't completed to study above document.
But I guess if you want to port it from USB Keyboard/Mouse drvier,
You should do something as below.
1.change the class id, subclass id, protocol id.
2.You should remove useless setup transfer that USB-HID have in enumeration stage
3.you should add specific setup transfer if it was mentioned in above document
  before enumeration completed
4. register the  isochronous transfer into host that will help you to complete the transfer that you want.

Grumpy_Mike

You can not do that. You need a USB host shield - that contains another processor that acts as a USB host, the Arduino only has a USB client on it and that is a different thing.

Go Up