diff --git a/build.xml b/build.xml
index 9aa379ec..face69e6 100644
--- a/build.xml
+++ b/build.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/src/fourthline/mabiicco/midi/MMLMidiTrack.java b/src/fourthline/mabiicco/midi/MMLMidiTrack.java
index 0c63196a..aaad0ac0 100644
--- a/src/fourthline/mabiicco/midi/MMLMidiTrack.java
+++ b/src/fourthline/mabiicco/midi/MMLMidiTrack.java
@@ -57,26 +57,20 @@ private void addItem(MMLNoteEvent addEvent) {
MMLNoteEvent prevEvent = noteEventList.get( targetIndex - 1 );
if (addEvent.getNote() == prevEvent.getNote()) {
if ( prevEvent.getTickOffset() == targetTick ) {
- // 開始位置が同じときには, 元あったノートの長さを最小にして, 追加するノートの開始位置をずらす.
- // 前の音とテンポ指定がある場合は元あったノートのほうをずらす.
+ // 開始位置が同じときには, 後発音で更新する.
+ // 前の音とテンポ指定がある場合は元あったノートのまま.
+ // 後発音が V0 の場合は l64音に更新する.
if (MMLTempoEvent.searchEqualsTick(tempoList, targetTick)) {
- addEvent.setTick( MMLTicks.minimumTick() );
- prevEvent.setTick( prevEvent.getTick() - MMLTicks.minimumTick() );
- prevEvent.setTickOffset( addEvent.getTickOffset() + MMLTicks.minimumTick() );
- if (prevEvent.getTick() <= 0) {
- targetIndex--;
- noteEventList.remove(targetIndex);
+ if (addEvent.getVelocity() == 0) {
+ prevEvent.setTick(MMLTicks.minimumTick());
}
+ return;
} else {
- prevEvent.setTick( MMLTicks.minimumTick() );
- addEvent.setTick( addEvent.getTick() - MMLTicks.minimumTick() );;
- addEvent.setTickOffset( addEvent.getTickOffset() + MMLTicks.minimumTick() );
- // ずらした開始位置にもノートがある場合は、古いほうを消す.
- if ( targetIndex < noteEventList.size() ) {
- if (addEvent.getTickOffset() == noteEventList.get(targetIndex).getTickOffset()) {
- noteEventList.remove(targetIndex);
- }
+ if (prevEvent.getVelocity() == 0) {
+ addEvent.setTick(MMLTicks.minimumTick());
}
+ targetIndex--;
+ noteEventList.remove(targetIndex);
}
} else {
trimOverlapNote(prevEvent, addEvent);