fix: fallback channel for unconfigured tracks uses index
When midiChannel is undefined (no instrument set), compute channel from track index to avoid defaulting to 0 and clashing with configured tracks that use channel 0.
This commit is contained in:
+18
-2
@@ -10407,7 +10407,15 @@ const App = () => {
|
||||
const instrumentProgram = track ? track.instrumentProgram : undefined;
|
||||
const synthEngine = track ? track.synth_engine : undefined;
|
||||
var allTracks = activeTracksRef.current || [];
|
||||
var mainCh = track ? (track.midiChannel !== undefined ? track.midiChannel : 0) : 0;
|
||||
var mainCh = 0;
|
||||
if (track) {
|
||||
if (track.midiChannel !== undefined) {
|
||||
mainCh = track.midiChannel;
|
||||
} else {
|
||||
for (var mc = 0; mc < allTracks.length; mc++) { if (allTracks[mc].id === track.id) { mainCh = mc >= 9 ? mc + 1 : mc; break; } }
|
||||
if (mainCh >= 16) mainCh = 0;
|
||||
}
|
||||
}
|
||||
// Compute session beat offset from target item
|
||||
var sessionBeatOffset = 0;
|
||||
var targetTrk = allTracks.find(function(t) { return t.id === st.trackId; });
|
||||
@@ -10438,7 +10446,15 @@ const App = () => {
|
||||
var ghostSynth = layer.synthEngine || (ghostTrack ? ghostTrack.synth_engine : undefined);
|
||||
if (ghostProg === undefined && !ghostSynth) return;
|
||||
var ghostDest = getOrCreateTrackNode(ghostTrack, context);
|
||||
var ghostCh = ghostTrack ? (ghostTrack.midiChannel !== undefined ? ghostTrack.midiChannel : 0) : 0;
|
||||
var ghostCh = 0;
|
||||
if (ghostTrack) {
|
||||
if (ghostTrack.midiChannel !== undefined) {
|
||||
ghostCh = ghostTrack.midiChannel;
|
||||
} else {
|
||||
for (var gc = 0; gc < allTracks.length; gc++) { if (allTracks[gc].id === ghostTrack.id) { ghostCh = gc >= 9 ? gc + 1 : gc; break; } }
|
||||
if (ghostCh >= 16) ghostCh = 0;
|
||||
}
|
||||
}
|
||||
layer.notes.forEach(function(note) {
|
||||
var beat = (note.start_beat || 0) + sessionBeatOffset;
|
||||
var dur = note.duration_beats || 1;
|
||||
|
||||
Reference in New Issue
Block a user