feat: piano roll shows all same-track MIDI items notes as active
This commit is contained in:
@@ -6256,13 +6256,14 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, activeTracks, onClos
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
// Layer 2: Ghost Notes (background reference from other tracks)
|
||||
// Layer 2: Ghost Notes (same-track = active amber, other tracks = reference)
|
||||
if (showGhostNotes && sessionSyncMode && ghostLayers.length > 0) {
|
||||
ghostLayers.forEach(function(layer) {
|
||||
ctx.save();
|
||||
ctx.globalAlpha = 0.25;
|
||||
ctx.fillStyle = layer.track_color || '#888';
|
||||
ctx.strokeStyle = layer.track_color || '#888';
|
||||
var isSameTrackLayer = layer.isSameTrack;
|
||||
ctx.globalAlpha = isSameTrackLayer ? 0.65 : 0.25;
|
||||
ctx.fillStyle = isSameTrackLayer ? 'rgba(251, 191, 36, 0.55)' : (layer.track_color || '#888');
|
||||
ctx.strokeStyle = isSameTrackLayer ? 'rgba(245, 158, 11, 0.9)' : (layer.track_color || '#888');
|
||||
layer.notes.forEach(function(note) {
|
||||
var snapStart = snapValue !== 'free' ? getSnapBeat(note.relative_start_beat, snapValue) : note.relative_start_beat;
|
||||
var rawEnd = note.relative_start_beat + note.duration_beats;
|
||||
@@ -6272,6 +6273,7 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, activeTracks, onClos
|
||||
var w = Math.max(2, (snapEnd - snapStart) * pixelsPerBeat);
|
||||
var h = NoteHeight - 1;
|
||||
ctx.fillRect(x, y, w, h);
|
||||
if (isSameTrackLayer) ctx.strokeRect(x + 0.5, y + 0.5, w - 1, h - 1);
|
||||
});
|
||||
ctx.restore();
|
||||
});
|
||||
@@ -6422,7 +6424,8 @@ const PianoRollTabEditor = ({ st, zoom, bpm, viewportWidth, activeTracks, onClos
|
||||
}
|
||||
var layers = [];
|
||||
ghostLayers.forEach(function(layer) {
|
||||
if (!activePlayTrackIds || activePlayTrackIds.indexOf(layer.track_id) === -1) return;
|
||||
var layerIsSameTrack = layer.isSameTrack;
|
||||
if (!layerIsSameTrack && (!activePlayTrackIds || activePlayTrackIds.indexOf(layer.track_id) === -1)) return;
|
||||
var trk = (activeTracks || []).find(function(t) { return t.id === layer.track_id; });
|
||||
layers.push({
|
||||
trackId: layer.track_id,
|
||||
|
||||
Reference in New Issue
Block a user