あ、ちょっと言葉が足りなかったので補足しますが、MidiStateプロパティの中の
  If cState(i) = LCase(mciRetString) Then
ここは明らかにまずい。

>>239に書いたように、mciRetStringはまずAPI呼ぶ前にナル文字で埋めとく必要があるし、
APIによってセットされた文字列を検査するときも、下のMSDNにあるようにLeft$とInstrを
組み合わせてナル文字の前で切ってやる必要があると思う。
http://www.microsoft.com/japan/developer/library/VBCon98/vbconpassingstringstodllprocedure.htm