yonge 3 years ago
parent
commit
616062d185

+ 18 - 14
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -48,7 +48,7 @@ public class UserChannelContext {
 	
 	private int beatByteLength;
 	
-	private boolean delayPrcessed;
+	private boolean delayProcessed;
 	
 	// 曲目与musicxml对应关系
 	private ConcurrentHashMap<Integer, MusicXmlBasicInfo> songMusicXmlMap = new ConcurrentHashMap<Integer, MusicXmlBasicInfo>();
@@ -191,7 +191,7 @@ public class UserChannelContext {
 		recordId = null;
 		playTime = 0;
 		receivedTime = 0;
-		delayPrcessed = false;
+		delayProcessed = false;
 		dynamicOffset = 0;
 	}
 	
@@ -338,7 +338,7 @@ public class UserChannelContext {
 		
 		if (noteAnalysis.getMusicalNotesIndex() >= 0 && noteAnalysis.getMusicalNotesIndex() <= getTotalMusicNoteIndex(null)) {
 			
-			LOGGER.info("delayPrcessed:{} dynamicOffset:{}  Frequency:{}  splDb:{}  Power:{}  amplitude:{}  rms:{}  time:{}", delayPrcessed, dynamicOffset, playFrequency, splDb, power, amplitude, rms, playTime);
+			LOGGER.info("delayPrcessed:{} dynamicOffset:{}  Frequency:{}  splDb:{}  Power:{}  amplitude:{}  rms:{}  time:{}", delayProcessed, dynamicOffset, playFrequency, splDb, power, amplitude, rms, playTime);
 			
 			ChunkAnalysis chunkAnalysis = new ChunkAnalysis(playTime - durationTime, playTime, playFrequency, splDb, power, amplitude);
 			
@@ -349,15 +349,17 @@ public class UserChannelContext {
 			}
 			totalChunkAnalysisList.add(chunkAnalysis);
 			
-			if(delayPrcessed == false && chunkAnalysis.getFrequency() > 100){
+			if(delayProcessed == false && chunkAnalysis.getFrequency() > 100){
 				
-				delayPrcessed = true;
+				delayProcessed = true;
 				//计算延迟偏移值
 				//playTime = musicXmlNote.getTimeStamp() + durationTime;
 				dynamicOffset = chunkAnalysis.getStartTime();
 			}
 			
-			if (playTime >= (dynamicOffset + musicXmlNote.getDuration() + musicXmlNote.getTimeStamp())) {
+			musicXmlNote.setTimeStamp(musicXmlNote.getTimeStamp() + dynamicOffset);
+			
+			if (playTime >= (musicXmlNote.getDuration() + musicXmlNote.getTimeStamp())) {
 
 				if (musicXmlNote.getDontEvaluating()) {
 					noteAnalysis.setIgnore(true);
@@ -487,8 +489,8 @@ public class UserChannelContext {
 		
 		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
 		
-		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
-		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
+		double endTime = musicXmlNote.getTimeStamp() + floatingRange;
+		double startTime = musicXmlNote.getTimeStamp() - 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());
 		
@@ -594,8 +596,8 @@ public class UserChannelContext {
 		
 		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
 		
-		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
-		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
+		double endTime = musicXmlNote.getTimeStamp() + floatingRange;
+		double startTime = musicXmlNote.getTimeStamp() - 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());
 		
@@ -637,8 +639,8 @@ public class UserChannelContext {
 		
 		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
 		
-		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
-		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
+		double endTime = musicXmlNote.getTimeStamp() + floatingRange;
+		double startTime = musicXmlNote.getTimeStamp() - 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());
 		
@@ -670,6 +672,8 @@ public class UserChannelContext {
 		
 		List<ChunkAnalysis> chunkList = new ArrayList<ChunkAnalysis>(chunkAnalysisList);
 		
+		//根据完整度取部分有效信号
+		
 		if(chunkList.size() == 0){
 			return false;
 		}
@@ -731,8 +735,8 @@ public class UserChannelContext {
 
 		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
 		
-		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
-		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
+		double endTime = musicXmlNote.getTimeStamp() + floatingRange;
+		double startTime = musicXmlNote.getTimeStamp() - 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());