/** * Overwrites a section of the Part (starting at the specified index) with the Units contained in * the given Part. WARNING: DOES NOT WORK IF GIVEN PART WILL EXTEND OVER END OF THIS PART. TODO: * Fix this. //rk Maybe I fixed it * * @param part the Part to paste into this * @param index the slot at which to start pasting over */ public void pasteOver(Part part, int index) { // Trace.log(3, "pasteOver " + part + " onto " + index); int limit = size(); int incoming = part.size(); if (index + incoming < limit) { limit = index + incoming; } for (int i = 0, j = index; j < limit; i++, j++) { Unit unit = part.getUnit(i); if (unit != null) { Unit newUnit = unit.copy(); setUnit(j, newUnit); } else { setUnit(j, null); } } }
/** * A rewritten version of pastOver * * @param part the Part to paste into this * @param index the slot at which to start pasting over */ public void newPasteOver(Part part, int index) { Trace.log(3, "pasteOver " + part + " onto " + index + " " + this.hashCode()); int limit = size(); int incoming = part.size(); // if( index + incoming < limit ) // { // limit = index + incoming; // } int i = 0; int j = index; for (; i < incoming && j < limit; i++, j++) { Unit unit = part.getUnit(i); if (unit == null) { newSetUnit(j, null); } else { newSetUnit(j, unit.copy()); } } }
/** * Modified from pasteOver for time warping Overwrites a section of the Part (starting at the * specified index) with the Units contained in the given Part. * * @param part the Part to paste into this * @param index the slot at which to start pasting over */ public void altPasteOver(Part part, int index) { int limit = size(); int incoming = part.size(); if (index + incoming < limit) { limit = index + incoming; } // How to prevent long duration last note?? // int lastSlot = index + incoming - 1; // setUnit(lastSlot, new Rest()); for (int i = 0, j = index; j < limit; i++, j++) { Unit unit = part.getUnit(i); if (unit != null) { Unit newUnit = unit.copy(); int rhythmValue = newUnit.getRhythmValue(); setUnit(j, newUnit); } else { setUnit(j, null); } } }