diff --git mptrack/View_pat.cpp mptrack/View_pat.cpp index 80b60b14c..1ccbaafdb 100644 --- mptrack/View_pat.cpp +++ mptrack/View_pat.cpp @@ -3553,9 +3553,10 @@ LRESULT CViewPattern::OnRecordPlugParamChange(WPARAM plugSlot, LPARAM paramIndex return 0; CSoundFile &sndFile = pModDoc->GetSoundFile(); + const bool isLiveRecord = IsLiveRecord(); //Work out where to put the new data - const PatternEditPos editPos = GetEditPos(sndFile, IsLiveRecord()); + const PatternEditPos editPos = GetEditPos(sndFile, isLiveRecord); const CHANNELINDEX chn = editPos.channel; const ROWINDEX row = editPos.row; const PATTERNINDEX pattern = editPos.pattern; @@ -3574,11 +3575,24 @@ LRESULT CViewPattern::OnRecordPlugParamChange(WPARAM plugSlot, LPARAM paramIndex { // MPTM: Use PC Notes + // only overwrite existing PC Notes if(m.IsEmpty() || m.IsPcNote()) { m.Set(NOTE_PCS, static_cast(plugSlot + 1), static_cast(paramIndex), static_cast(pPlug->GetParameter(static_cast(paramIndex)) * ModCommand::maxColumnValue)); } + + //PC Note multi-channel recording, issue 1622 + auto recordGroup = pModDoc->GetChannelRecordGroup(chn); + if(isLiveRecord && recordGroup != RecordGroup::NoGroup) + { + auto newChannel = FindGroupRecordChannel(recordGroup, false, chn + 1); + if (newChannel != CHANNELINDEX_INVALID) + { + SetCurrentColumn(newChannel); + } + } + } else if(sndFile.GetModSpecifications().HasCommand(CMD_SMOOTHMIDI)) { // Other formats: Use MIDI macros