yonge 3 سال پیش
والد
کامیت
e422dbf105
1فایلهای تغییر یافته به همراه22 افزوده شده و 4 حذف شده
  1. 22 4
      audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

+ 22 - 4
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -372,9 +372,17 @@ public class UserChannelContext {
 			}
 			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;
+				
 				//计算延迟偏移值
 				//playTime = musicXmlNote.getTimeStamp() + durationTime;
 				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());
 		
-		/*double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
+		double correctedStartTime = queryFirstNoteStartTime(chunkAnalysisList, musicXmlNote);
 		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());
-		*/
+		
 		if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
 			return false;
 		}
@@ -808,6 +815,8 @@ public class UserChannelContext {
 
 		chunkAmplitudeList.add(0, lastChunkAnalysis.getAmplitude());
 		
+		LOGGER.info("--Amplitude:{}  Denominator:{}",chunkAmplitudeList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
+		
 		// 检测是否有多个波峰
 		boolean tempo = false;
 		boolean isContinue = true;
@@ -857,6 +866,15 @@ public class UserChannelContext {
 			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){
 			MusicXmlNote preMusicXmlNote = getCurrentMusicNote(null, musicXmlNote.getMusicalNotesIndex() - 1);