Still trying to figure this out. I've found that the I get the same problem trying to control IX Split from PeerScale. Pattern data only works in the new WPF editor. If PeerScale targets a synth directly, it works fine from any kind of pattern.
So it looks like it's only pt_note parameters on control machines that don't respond properly from old/PXP patterns. All three machines are MIF_CONTROL_MACHINE and MIF_NO_OUTPUT. The PeerScale->PeerMe! param is MPF_STATE and MPF_TICK_ON_EDIT.
For PeerChord, PeerScale does this in Tick()...
Code:
pCB->ControlChangeImmediate(pc.GetMachine(), GROUP_TRACK, targettrack, 1, p->chord); // Chord
pc.ControlChange_Immediate(targettrack, (octave << 4) + p->root + 1); // Note
For any other machine it just does this...
Code:
pc.ControlChange_Immediate(targettrack, nval);
CPeerCtrl::ControlChange_Immediate() looks like this...
Code:
void CPeerCtrl::ControlChange_Immediate(int track, int value)
{
if (track == TRACK_DEFAULT)
track = m_track;
if (track == TRACK_DEFAULT && m_track == TRACK_DEFAULT)
track = 0;
if (GotParam())
{
if (m_group == GROUP_ATTRIBUTE)
{
char txt[256];
_snprintf(txt, 256, "pCB->SetAttribute(%p,%i,%i)", m_targetmac, m_paramn, value);
OutputDebugString(txt);
pCB->SetAttribute(m_targetmac, m_paramn, value);
if (s_immediatebatchmode)
s_attributebatch.insert(m_targetmac);
else
pCB->AttributesChanged(m_targetmac);
}
else
{
pCB->ControlChangeImmediate(m_targetmac,
m_group,
track,
GetParamNumber_Grouped(),
value);
if (s_immediatebatchmode)
s_immediatebatch.insert(m_targetmac);
else
pCB->SendControlChanges(m_targetmac);
}
}
}
The problem is the same regardless of whether s_immediatebatchmode is true or false.
