the finalizer is called by the .NET runtime, not by NAudio. If you are seeing it, it means that there is a way your midiOut or midiIn is losing its reference. Is there anywhere in your code that sets Gmidi.midiOut = null, or Gmidi.midiIn = null?
Also, have a look at the NAudioDemo which does not have this problem.