public TownsMidiOutputChannel AllocateOutputChannel(int pri)
{
TownsMidiOutputChannel res = null;
for (int i = 0; i < 6; i++)
{
if (++_allocCurPos == 6)
{
_allocCurPos = 0;
}
var s = _out[_allocCurPos].CheckPriority(pri);
if (s == (int)CheckPriorityStatus.Disconnected)
{
return(_out[_allocCurPos]);
}
if (s != (int)CheckPriorityStatus.HighPriority)
{
pri = (int)s;
res = _out[_allocCurPos];
}
}
if (res != null)
{
res.Disconnect();
}
return(res);
}