In order to use as a usb device (midi) I need to reprogram the 16u2 yes?
Then, if I want to modify the sketch and want to upload changes, I need to reset the 16u2 code first?
Yes, if you want to upload code over USB. Or you could program the Uno using an ISPprogrammer (as you mention, that could be another Arduino). Or you could use an Arduino-compatible that doesn't require you to flash and reflash a USB controller chip all the time, because you simply select the type of native USB device you want from the IDE. (Hence my suggestion of a Teensy, in the post above).
I just need the new HID library, I don't need a shield of any type?