Midi direct via USB?

the latest version of Isadora has a serial in actor that could work directly with arduino.

Look for [FtdiPort232.NT.HW.AddReg] and change the the second line below to the one that i've got here.

HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,
71,02,00,00,38,41,00,00,9C,80,00,00,60,00,00,00,34,00,00,00,1A,00,00,00,0D,00,00
,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

Which second line do you mean exctly?
1 [FtdiPort232.NT.HW.AddReg]
2 HKR,,"UpperFilters",0x00010000,"serenum"
3 ;HKR,,"ConfigData",1,01,00,3F,3F,10,27,88,13,C4,09,E2,04,71,02,38,41,9c,80,4E,C0,34,00,1A,00,0D,00,06,40,03,80,00,00,d0,80
4 HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,4E,C0,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

I think this question isn't answered yet.
If re-installing the ftdi drivers wasn't such a pain I could change stuff by trial and error, but somehow I'm not able to uninstall the drivers or change windows' register...

Thanks in advance, Ben

I have been trying to deal with the usb-midi communication problem for a couple of months using Max/MSP as a work around and have come up with pretty mixed reults.

The main downside has to do with the way in which the Max Scheduler handles serial data, which seems to be fairly inconsistent with respect to timing, and also has the occassional tendency to make my system unstable, requiring at least software restarts, sometimes computer reboots. What I came to learn recently is that a big part of this has to do with the USB-serial communication protocol (I think this is what the ftdi chip is using), which was not designed to transmit messages as quickly and as accurrately as I might like from a USB-Midi insrtrument (which is what I am trying to build).

The upside of using Max is that it is relatively easy to simply grab serial data coming from Arduino, convert it into midi, and then send it to any midi-friendly software such as Ableton Live or Reason or whatever. Max/MSP has its own virtual Midi ports that show up in any of these softwares and it is quite easy to send your data to those ports.

Considering the upside, it is pretty attractive to use Max/MSP as a pseudo-driver to fake a USB-MIDI connection. However, neither the Max/MSP platform nor the USB serial connection that is at the heart of this process are robust enough to provide Fast and Consistent MIDI activity (both are which are important to me).

At this point though, I am trying to move away from the Max/MSP based solution, for reasons of consistency and the need for installation/compatibility.

After reading this thread, I have to say that I am with kuk:
Solution C (to create an inbetween serial proxy server) seems to make the most sense. I have essentially been trying to do this with Max/MSP, but dont think it will be sufficient for the job in the end (at least not given the current state of affairs with the software). Unfortunately, I don't personally know of another way to make this inbetween serial proxy server, so my hands are somewhat tied at the moment.

I am looking more into USB-MIDI communication at the moment, and will update here I find anything interesting or useful.

the latest version of Isadora has a serial in actor that could work directly with arduino.

"could" is important, for the moment serial input in Isadora is not able to receive variable bit number because it's not possible to tag (like in max) a serial message. Mark Coniglio and JCipriani are working on it. I prefere for now use a max patch, more secure for me, but the direct solution is the future?

I 've just installed ftdi hacked driver + roland serial driver + MIDI-OX (for those who need more info => http://www.megadrum.info/drivers.php) on my windows XP box.

I can hear a latency, did anyone of you experienced such a problem ?

@Ben : to remove the ftdi driver, download the FTClean from ftdi (windows only : http://www.ftdichip.com/Resources/Utilities/FTClean.zip).
Set 6001 for product ID and read carefully the dialog boxes (one time yes, one time no as far as I remember)

Nicolas

If you're using a Mac, I wrote an OS X application that creates a virtual MIDI instrument from Arduino serial output. This eliminates the need for additional MIDI hardware and pulls in data directly from the Arduino's USB connection. I made an electronic drum kit out of it. See: Google Code Archive - Long-term storage for Google Code Project Hosting. for details.

Try it out...I'd love to hear how it goes!

hi mschaff,
awesome. thank you very much.

do you think that your application could be expanded (or rather reduced) to accept data in the midi format and pass this on to the virtual port instead of taking "raw data" from the arduino?

the reason for this is that my instruments already have midi ports (non-usb), which i don't want to miss because of interoperability. it would be nice to chose to either use the USB or midi-socket. this would also give us more flexibilty for differnet interfaces than drum-triggers like pots and sliders.

if your code is available i'd give it a try. it's probably even simpler than your approach. what do you think?

kuk

The code is available (Java) from the SVN repositiory on the Google Code site. I used NetBeans to write it and then wrapped it in an OS X app wrapper with one of Apple's Developer tools.

The serial port speed seems to be the big problem with MIDI output directly from an Arduino. I ran into that limitation and decided to do the software route to solve the problem.

But if your instrument is already outputting MIDI, why not just get a MIDI interface for it? Cleaner...easier. I tried a single channel M-Audio UNO that worked fine...it was only $40 from Guitar Center.

That said, if you can read the data at the correct serial speed and parse the MIDI properly in Java, I don't see why the code couldn't be made to do exactly what you want.

ok, i didn't see the "source" tabe on the google page, thanks.

The serial port speed seems to be the big problem with MIDI output directly from an Arduino. I ran into that limitation and decided to do the software route to solve the problem.

hmm well. i know about the speed issue concerning midi's 31250 vs the ftdi driver. i thought i'd just use a faster standard baud rate for usb communication. (but didn't realize that would make the standard midi port useless:-( or at least non-standard) I have to think about that.

i have a usb2midi adapter which works great. it's just that i'd like to make these things usb-powered and "one cable" for something like garage band. still i'd like to maintain the old school midi ports because they let me easily connect devices without a computer.(if you're interested: "drool" | arduino prototype - YouTube) i realize i want too much at the same time.

still your app is a huge step forward. i hope to be able to test it tomorrow as i don't have an arduino here. so far the app runs fine, and the interface is self-explaining.

For Windows

You can try GlovePie/MIDIyoke combo. GlovePie can translate many types off inputs to MIDI code, and MIDIyoke can be used as a bridge between Glovepie and your Windows aplication. MIDIyoke is a virtual MIDI port (we use it to hook up our Wii to the computer)

Glovepie, MIDI Yoke and an
helpfull forum

Look for [FtdiPort232.NT.HW.AddReg] and change the the second line below to the one that i've got here.

HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,
71,02,00,00,38,41,00,00,9C,80,00,00,60,00,00,00,34,00,00,00,1A,00,00,00,0D,00,00
,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

Which second line do you mean exctly?
1 [FtdiPort232.NT.HW.AddReg]
2 HKR,,"UpperFilters",0x00010000,"serenum"
3 ;HKR,,"ConfigData",1,01,00,3F,3F,10,27,88,13,C4,09,E2,04,71,02,38,41,9c,80,4E,C0,34,00,1A,00,0D,00,06,40,03,80,00,00,d0,80
4 HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,4E,C0,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

I think this question isn't answered yet.
If re-installing the ftdi drivers wasn't such a pain I could change stuff by trial and error, but somehow I'm not able to uninstall the drivers or change windows' register...

Thanks in advance, Ben

it's 4!

for FTDI USB Driver v2.00.00 included with arduino-0010 you have to change Line 84 in arduino-0010\drivers\FTDI USB Drivers\FTDIPORT.INF :

original HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,4E,C0,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

to

changed HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,60,00,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

or even better insert ; in front of line 84 to comment this line out and then past the changed code in new line below.

ftdi published some infos about changing baud rates as mentioned before: http://www.ftdichip.com/Documents/AppNotes/AN232B-05_BaudRates.pdf

For easy reinstall the ftdi windows driver, search through c:\windows\inf\oem1.inf ... oemX.inf (windows xp) or c:\winnt\inf\oem1.inf ... (windows 2000/NT) and simply delete the old ftdi inf file, for example oem7.inf and oem7.pnf (be carefull to delete only the correct files, its possible that there exist more than one copy of the ftdi inf, depends on your setup. ensure to disconnect arduino before remove driver !!!)

download Roland Serial MIDI Driver Ver.3.2 for Windows XP / Windows 2000 here: http://www.roland.com/products/en/_support/dld.cfm?iCncd=724&ln=en&SearchBy=RcId&dst=P&iRcId=0000010777&dsp=1

arduino>usb>serial>midi setup (Window$):

  • install modded ftdi driver- install Roland Serial MIDI Driver, choose COM3 (depends on your system)- upload sketch to arduino, i used http://todbot.com/arduino/sketches/midi_drum_kit/midi_drum_kit.pde as reference to create my sketch. for infos about midi notes look at http://www.harmony-central.com/MIDI/Doc/table2.html for example- optional: install MIDI-OX (MIDI-OX Page) to look what's going on (goto "Options" > "MIDI Devices" > choose "Roland Serial MIDI" at "MIDI Inputs") OR use arduino serial monitor (set to 38400 baud) to check if data is send by arduino- setup your MIDI target (for example ableton live) to listen for MIDI input from Roland Serial MIDI Driver, Channel 1

Tested with arduino diecimila + modded ftdi driver + roland serial midi driver + modded midi_drum_kit.pde by todbot + some switches connected to arduino + ableton live.

Hope this usefull and answers some questions ?!? :slight_smile:

Weeehaa!
Thanks guys, this thread helped me a ****ing lot!!!

Im kind of new in Arduino comunity (know it since summer, have it since friday) and Im working in a similar project for my master thesis. (Interfacing Arduino equipped with bunch of different sensors via MIDI with software running on PC - in my case Resolume)

So perhaps in the future we can share experiences.

Once more thx for FTDI driver hack quide ;D

I'm planning on trying a simple midi control keyboard (1 octave) once I understand the arduino a bit better.. I'd like to use it with cubase, or reason (whatever i am using at the time). Mayben if i try a layout like the arduinophone (stylaphone thingy) that i saw on youtube, i could get some kool sounds :). i'll look into getting some peizos tot. the drum kit i saw on youtube using peizo speakers as drum pads was way kool :slight_smile:

no doubt i will be in here asking umpteen questions (im such a noob with the arduino and programming and stuff i dont even have the arduino yet :smiley: its in the post as we speak {and is taking its sweet merry time too}, cant wait to build it :d at least i can solder :P)
I hope this thread will help me out :slight_smile:

the plan:
Switches/sensors => Arduino => usb|midi => Cubase/Reason.

fingers crossed :stuck_out_tongue: its blinking led's 1st tho. gotta take it slow :smiley:

having trouble getting cubase or any other sequencer to listen to my arduino or the serial midi port.. i know the arduino is sending data because i see it in the serial monitor of the IDE

hasnt someone created a step by step tutorial on how to get an Arduino to run over serial midi for beginners. with full what port and what settings information. i must be missing something somewhere..

I got the Roland serial midi drivers in, and i implanted the registry data (i assume it went in ok) one program says it cannot open port, and cubase doesn't seem to be listening at all.. Are the ports sposed to be set up the same? ( serial midi- com3 and usb serial- com3).

also can a standard serial port be used for serial midi, to make life a little easier for me? (i have doubts tho, may have to try and get a usb midi cable)

Ok.. I"m not sure if anybody else out there got there arduino MIDI device to work via USB on Mac, but if anybody still have trouble I made a workaround that works.

Basically, instead of sending MIDI data to a USB port, which then needs a driver to allow you MIDI receiving program to see it (Ableton fx), you send data in a format you are comfortable with (like MIDI code fx) and then make a Processing sketch that converts that data into MIDI data and pass it on to your IAC MIDI port on your OS X system. To do this you need to install Processing as well, download the proMIDI Processing library and install it, and download the MMJ Java library which you install in your /Library/Java/Extensions directory. (It might work without the MMJ library but a post I read suggested using it. Look for the post by "basti")
Then you make a sketch in Processing that listens for serial data on your USB port, sort it out according to the type of messages and pass it on to your IAC MIDI port. It works like a dream :smiley:
I"ll post a Processing code example as soon as I get home to my Mac and extend the sketch a bit. So far it only recognizes simple controller messages.

undervand, thanks!! This is exactly what I was looking for. I'd love to see your example processing sketch if you ever got around to writing it.

Look for [FtdiPort232.NT.HW.AddReg] and change the the second line below to the one that i've got here.

HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,
71,02,00,00,38,41,00,00,9C,80,00,00,60,00,00,00,34,00,00,00,1A,00,00,00,0D,00,00
,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

Which second line do you mean exctly?
1 [FtdiPort232.NT.HW.AddReg]
2 HKR,,"UpperFilters",0x00010000,"serenum"
3 ;HKR,,"ConfigData",1,01,00,3F,3F,10,27,88,13,C4,09,E2,04,71,02,38,41,9c,80,4E,C0,34,00,1A,00,0D,00,06,40,03,80,00,00,d0,80
4 HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,4E,C0,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

I think this question isn't answered yet.
If re-installing the ftdi drivers wasn't such a pain I could change stuff by trial and error, but somehow I'm not able to uninstall the drivers or change windows' register...

Thanks in advance, Ben

it's 4!

for FTDI USB Driver v2.00.00 included with arduino-0010 you have to change Line 84 in arduino-0010\drivers\FTDI USB Drivers\FTDIPORT.INF :

original HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,4E,C0,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

to

changed HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,60,00,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00

or even better insert ; in front of line 84 to comment this line out and then past the changed code in new line below.

ftdi published some infos about changing baud rates as mentioned before: http://www.ftdichip.com/Documents/AppNotes/AN232B-05_BaudRates.pdf

For easy reinstall the ftdi windows driver, search through c:\windows\inf\oem1.inf ... oemX.inf (windows xp) or c:\winnt\inf\oem1.inf ... (windows 2000/NT) and simply delete the old ftdi inf file, for example oem7.inf and oem7.pnf (be carefull to delete only the correct files, its possible that there exist more than one copy of the ftdi inf, depends on your setup. ensure to disconnect arduino before remove driver !!!)

download Roland Serial MIDI Driver Ver.3.2 for Windows XP / Windows 2000 here: http://www.roland.com/products/en/_support/dld.cfm?iCncd=724&ln=en&SearchBy=RcId&dst=P&iRcId=0000010777&dsp=1

arduino>usb>serial>midi setup (Window$):

  • install modded ftdi driver- install Roland Serial MIDI Driver, choose COM3 (depends on your system)- upload sketch to arduino, i used http://todbot.com/arduino/sketches/midi_drum_kit/midi_drum_kit.pde as reference to create my sketch. for infos about midi notes look at http://www.harmony-central.com/MIDI/Doc/table2.html for example- optional: install MIDI-OX (MIDI-OX Page) to look what's going on (goto "Options" > "MIDI Devices" > choose "Roland Serial MIDI" at "MIDI Inputs") OR use arduino serial monitor (set to 38400 baud) to check if data is send by arduino- setup your MIDI target (for example ableton live) to listen for MIDI input from Roland Serial MIDI Driver, Channel 1

Tested with arduino diecimila + modded ftdi driver + roland serial midi driver + modded midi_drum_kit.pde by todbot + some switches connected to arduino + ableton live.

Hope this usefull and answers some questions ?!? :slight_smile:

The setup of the Roland driver keeps saying that it can't use COM4. I changed the bits per second to 38400. But it doesn't work. Do you know a solution?
Thanks :slight_smile:

(just bought a Arduino yesterday, but have worked with it for a month last year.)

Weeehaa!
Thanks guys, this thread helped me a ****ing lot!!!

Im kind of new in Arduino comunity (know it since summer, have it since friday) and Im working in a similar project for my master thesis. (Interfacing Arduino equipped with bunch of different sensors via MIDI with software running on PC - in my case Resolume)

So perhaps in the future we can share experiences.

Once more thx for FTDI driver hack quide ;D

Like WTF? I want to do exactly the same :slight_smile:
I want to control Resolume with a dance pad (Dance Dance Revolution thing).

Researching this, I found a new resource I'm surprised I didn't hear about here. Haven't used it yet....

It's called Maple Virtual Midi Cable.

http://www.hurchalla.com/Maple_driver.html

The driver is working! On another Xp install (for resolume).
Going to experiment now for a bit :slight_smile: