|
@@ -372,9 +372,17 @@ public class UserChannelContext {
|
|
}
|
|
}
|
|
totalChunkAnalysisList.add(chunkAnalysis);
|
|
totalChunkAnalysisList.add(chunkAnalysis);
|
|
|
|
|
|
- if(delayProcessed == false && chunkAnalysis.getFrequency() > 100){
|
|
|
|
|
|
+ boolean flag = false;
|
|
|
|
+ if(subjectId == 23 || subjectId == 113){
|
|
|
|
+ flag = chunkAnalysis.getAmplitude() > hardLevel.getAmplitudeThreshold();
|
|
|
|
+ }else{
|
|
|
|
+ flag = chunkAnalysis.getFrequency() > 100;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(delayProcessed == false && flag){
|
|
|
|
|
|
delayProcessed = true;
|
|
delayProcessed = true;
|
|
|
|
+
|
|
//计算延迟偏移值
|
|
//计算延迟偏移值
|
|
//playTime = musicXmlNote.getTimeStamp() + durationTime;
|
|
//playTime = musicXmlNote.getTimeStamp() + durationTime;
|
|
dynamicOffset = chunkAnalysis.getStartTime() - musicXmlNote.getTimeStamp();
|
|
dynamicOffset = chunkAnalysis.getStartTime() - musicXmlNote.getTimeStamp();
|
|
@@ -581,7 +589,6 @@ public class UserChannelContext {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- LOGGER.info("[{}]演奏时长[{}]/[{}][{}] 时间[{}]-[{}]", noteAnalysis.getDurationTime(), playDurationTime, durationTime,playDurationTime * 100 / durationTime, correctedStartTime, correctedEndTime);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
// 计算音分
|
|
// 计算音分
|
|
@@ -779,11 +786,11 @@ public class UserChannelContext {
|
|
|
|
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
|
|
|
|
|
|
- /*double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
|
|
|
|
|
|
+ double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
|
|
double correctedEndTime = correctedStartTime + musicXmlNote.getDuration();
|
|
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());
|
|
chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(correctedStartTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(correctedEndTime)).collect(Collectors.toList());
|
|
- */
|
|
|
|
|
|
+
|
|
if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
|
|
if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
@@ -808,6 +815,8 @@ public class UserChannelContext {
|
|
|
|
|
|
chunkAmplitudeList.add(0, lastChunkAnalysis.getAmplitude());
|
|
chunkAmplitudeList.add(0, lastChunkAnalysis.getAmplitude());
|
|
|
|
|
|
|
|
+ LOGGER.info("--Amplitude:{} Denominator:{}",chunkAmplitudeList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
|
|
|
|
+
|
|
// 检测是否有多个波峰
|
|
// 检测是否有多个波峰
|
|
boolean tempo = false;
|
|
boolean tempo = false;
|
|
boolean isContinue = true;
|
|
boolean isContinue = true;
|
|
@@ -857,6 +866,15 @@ public class UserChannelContext {
|
|
return musicXmlNote.getTimeStamp() + dynamicOffset;
|
|
return musicXmlNote.getTimeStamp() + dynamicOffset;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (subjectId == 23 || subjectId == 113) {
|
|
|
|
+ Optional<ChunkAnalysis> optional = chunkAnalysisList.stream().filter(t -> t.getAmplitude() > hardLevel.getAmplitudeThreshold()).findFirst();
|
|
|
|
+ if(optional.isPresent()){
|
|
|
|
+ return optional.get().getStartTime();
|
|
|
|
+ }else{
|
|
|
|
+ return musicXmlNote.getTimeStamp() + dynamicOffset;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
//判断是否与上一个音是同一个音符
|
|
//判断是否与上一个音是同一个音符
|
|
if(musicXmlNote.getMusicalNotesIndex() > 0){
|
|
if(musicXmlNote.getMusicalNotesIndex() > 0){
|
|
MusicXmlNote preMusicXmlNote = getCurrentMusicNote(null, musicXmlNote.getMusicalNotesIndex() - 1);
|
|
MusicXmlNote preMusicXmlNote = getCurrentMusicNote(null, musicXmlNote.getMusicalNotesIndex() - 1);
|