Heart Gold
After getting the 8th badge go to Ecrutek City and fight the kimono girls in the dance studio. Once you beat them they will give you the rainbow badge.
Soul Silver
When in Kanto, go to Pewter City. The man standing on the raised surface will give you the rainbow wing.
in goldenrod city
Once you get to pewter city a man somewhere in the city outside will give you the rainbow wing (how easy).
you show him the rainbow wing
After you beat the last team rocket executive on the observation deck, in the radio tower in goldenrod city, you get the rainbow wing from the Rainbow wing from the director.
Rainbow Wing and Clear Bell
You first have to beat team rocket, then the Kimono girls
If you're using heartgold, after beating the Pokemon league go to pewter city and an old man on a hill will give you the rainbow wing in soulsilver and the silver wing in heartgold.
Get the rainbow wing from the radio tower's director and then go to pro.Elm.
you get the rainbow wing from the president in the radio tower along the lines of the story
go t the radio tower and save the manager
you have to beat team rocket then the director gives you the rainbow wing
After you beat Archer (The neo team Rocket Leader) the directer gives it to you