You can assign MIDI signals to OnSong through a variety of means. You can use the "midi: (input)" tag in a song's metadata, or you can hold down on the song title of a text-based chord chart to assign MIDI there.
However, you may notice that changes you make in the song viewer will NOT be made to/reflected in the text file. It has been like that for a while. Generally the idea is that you have an “original” MIDI assignment in the text file. So MIDI that is placed in there acts as sort of the base model. The reason being, let's say you put that song into a set, but you want to make a change just for the set. You wouldn’t want to touch the original song in that case. So if you have Separate Styles enabled, and make the change by tapping and holding on the song title, that’s made to the song record IN THAT SET and doesn’t move backwards in the chain. It’s applied on top of the original in the same way that you can write a song in one key and change the key without effecting the original.