|
@@ -354,12 +354,10 @@ public class UserChannelContext {
|
|
|
delayProcessed = true;
|
|
|
//计算延迟偏移值
|
|
|
//playTime = musicXmlNote.getTimeStamp() + durationTime;
|
|
|
- dynamicOffset = chunkAnalysis.getStartTime();
|
|
|
+ dynamicOffset = chunkAnalysis.getStartTime() - musicXmlNote.getTimeStamp();
|
|
|
}
|
|
|
|
|
|
- musicXmlNote.setTimeStamp(musicXmlNote.getTimeStamp() + dynamicOffset);
|
|
|
-
|
|
|
- if (playTime >= (musicXmlNote.getDuration() + musicXmlNote.getTimeStamp())) {
|
|
|
+ if (playTime >= (musicXmlNote.getDuration() + musicXmlNote.getTimeStamp() + dynamicOffset)) {
|
|
|
|
|
|
if (musicXmlNote.getDontEvaluating()) {
|
|
|
noteAnalysis.setIgnore(true);
|
|
@@ -489,8 +487,8 @@ public class UserChannelContext {
|
|
|
|
|
|
double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
|
|
|
|
|
|
- double endTime = musicXmlNote.getTimeStamp() + floatingRange;
|
|
|
- double startTime = musicXmlNote.getTimeStamp() - floatingRange;
|
|
|
+ double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
|
|
|
+ double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|
|
@@ -596,8 +594,8 @@ public class UserChannelContext {
|
|
|
|
|
|
double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
|
|
|
|
|
|
- double endTime = musicXmlNote.getTimeStamp() + floatingRange;
|
|
|
- double startTime = musicXmlNote.getTimeStamp() - floatingRange;
|
|
|
+ double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
|
|
|
+ double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|
|
@@ -605,7 +603,10 @@ public class UserChannelContext {
|
|
|
double correctedEndTime = correctedStartTime + musicXmlNote.getDuration();
|
|
|
|
|
|
chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(correctedStartTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(correctedEndTime)).collect(Collectors.toList());
|
|
|
-
|
|
|
+
|
|
|
+ //根据完整度取部分有效信号
|
|
|
+ int elementSize = chunkAnalysisList.size() * hardLevel.getIntegrityRange() / 100;
|
|
|
+ chunkAnalysisList = chunkAnalysisList.subList(0, elementSize);
|
|
|
if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
|
|
|
return -1;
|
|
|
}
|
|
@@ -639,8 +640,8 @@ public class UserChannelContext {
|
|
|
|
|
|
double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
|
|
|
|
|
|
- double endTime = musicXmlNote.getTimeStamp() + floatingRange;
|
|
|
- double startTime = musicXmlNote.getTimeStamp() - floatingRange;
|
|
|
+ double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
|
|
|
+ double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|
|
@@ -649,6 +650,10 @@ public class UserChannelContext {
|
|
|
|
|
|
chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(correctedStartTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(correctedEndTime)).collect(Collectors.toList());
|
|
|
|
|
|
+ //根据完整度取部分有效信号
|
|
|
+ int elementSize = chunkAnalysisList.size() * hardLevel.getIntegrityRange() / 100;
|
|
|
+ chunkAnalysisList = chunkAnalysisList.subList(0, elementSize);
|
|
|
+
|
|
|
if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
|
|
|
return false;
|
|
|
}
|
|
@@ -672,8 +677,6 @@ public class UserChannelContext {
|
|
|
|
|
|
List<ChunkAnalysis> chunkList = new ArrayList<ChunkAnalysis>(chunkAnalysisList);
|
|
|
|
|
|
- //根据完整度取部分有效信号
|
|
|
-
|
|
|
if(chunkList.size() == 0){
|
|
|
return false;
|
|
|
}
|
|
@@ -735,8 +738,8 @@ public class UserChannelContext {
|
|
|
|
|
|
double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
|
|
|
|
|
|
- double endTime = musicXmlNote.getTimeStamp() + floatingRange;
|
|
|
- double startTime = musicXmlNote.getTimeStamp() - floatingRange;
|
|
|
+ double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
|
|
|
+ double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|
|
@@ -825,7 +828,7 @@ public class UserChannelContext {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return musicXmlNote.getTimeStamp();
|
|
|
+ return musicXmlNote.getTimeStamp() + dynamicOffset;
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|