|  | @@ -356,7 +356,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		if (noteAnalysis.getMusicalNotesIndex() >= 0 && noteAnalysis.getMusicalNotesIndex() <= getTotalMusicNoteIndex(null)) {
 | 
	
		
			
				|  |  |  			
 | 
	
		
			
				|  |  | -			LOGGER.info("user:{}  delayProcessed:{}  dynamicOffset:{}  Frequency:{}  splDb:{}  amplitude:{}  time:{}", user, delayProcessed, dynamicOffset, playFrequency, splDb, amplitude, playTime);
 | 
	
		
			
				|  |  | +			LOGGER.debug("user:{}  delayProcessed:{}  dynamicOffset:{}  Frequency:{}  splDb:{}  amplitude:{}  time:{}", user, delayProcessed, dynamicOffset, playFrequency, splDb, amplitude, playTime);
 | 
	
		
			
				|  |  |  			
 | 
	
		
			
				|  |  |  			ChunkAnalysis chunkAnalysis = new ChunkAnalysis(playTime - durationTime, playTime, playFrequency, splDb, power, amplitude);
 | 
	
		
			
				|  |  |  			
 | 
	
	
		
			
				|  | @@ -406,7 +406,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  				
 | 
	
		
			
				|  |  |  				evaluateForNote(musicXmlNote, noteAnalysis);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -				LOGGER.info("当前音符下标[{}] 预计频率:{} 实际频率:{} 节奏:{}", noteAnalysis.getMusicalNotesIndex(), musicXmlNote.getFrequency(), noteAnalysis.getPlayFrequency(),
 | 
	
		
			
				|  |  | +				LOGGER.debug("当前音符下标[{}] 预计频率:{} 实际频率:{} 节奏:{}", noteAnalysis.getMusicalNotesIndex(), musicXmlNote.getFrequency(), noteAnalysis.getPlayFrequency(),
 | 
	
		
			
				|  |  |  						noteAnalysis.isTempo());
 | 
	
		
			
				|  |  |  				
 | 
	
		
			
				|  |  |  				doneNoteAnalysisList.add(noteAnalysis);
 | 
	
	
		
			
				|  | @@ -462,7 +462,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  			sectionAnalysis.setDurationTime(noteAnalysisList.stream().mapToDouble(t -> t.getDurationTime()).sum());
 | 
	
		
			
				|  |  |  			sectionAnalysis.setScore(score);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -			LOGGER.info("小节评分:{}",sectionAnalysis);
 | 
	
		
			
				|  |  | +			LOGGER.debug("小节评分:{}",sectionAnalysis);
 | 
	
		
			
				|  |  |  			doneSectionAnalysisList.add(sectionAnalysis);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		
 | 
	
	
		
			
				|  | @@ -474,6 +474,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  		Map<String, Integer> result = new HashMap<String, Integer>();
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		result.put("playTime", (int) doneNoteAnalysisList.stream().mapToDouble(t -> t.getDurationTime()).sum());
 | 
	
		
			
				|  |  | +        result.put("recordId", recordId.intValue());
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		// 取出需要评测的音符
 | 
	
		
			
				|  |  |  		List<NoteAnalysis> noteAnalysisList = doneNoteAnalysisList.stream().filter(t -> t.isIgnore() == false).collect(Collectors.toList());
 | 
	
	
		
			
				|  | @@ -498,7 +499,6 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  			result.put("cadence", tempoScore);
 | 
	
		
			
				|  |  |  			result.put("intonation", intonationScore);
 | 
	
		
			
				|  |  |  			result.put("integrity", integrityScore);
 | 
	
		
			
				|  |  | -	        result.put("recordId", recordId.intValue());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  			int score = socre / noteAnalysisList.size();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -507,6 +507,11 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  				score = tempoScore;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			result.put("score", score);
 | 
	
		
			
				|  |  | +		} else {
 | 
	
		
			
				|  |  | +			result.put("cadence", 0);
 | 
	
		
			
				|  |  | +			result.put("intonation", 0);
 | 
	
		
			
				|  |  | +			result.put("integrity", 0);
 | 
	
		
			
				|  |  | +			result.put("score", 0);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		return result;
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -570,10 +575,10 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  				if (playDurationTime * 100 / durationTime < hardLevel.getNotPlayRange()) {
 | 
	
		
			
				|  |  |  					noteAnalysis.setMusicalErrorType(NoteErrorType.NOT_PLAY);
 | 
	
		
			
				|  |  | -					LOGGER.info("未演奏:{}", playDurationTime * 100 / durationTime);
 | 
	
		
			
				|  |  | +					LOGGER.debug("未演奏:{}", playDurationTime * 100 / durationTime);
 | 
	
		
			
				|  |  |  				} else if (playDurationTime * 100 / durationTime < hardLevel.getIntegrityRange()) {
 | 
	
		
			
				|  |  |  					noteAnalysis.setMusicalErrorType(NoteErrorType.INTEGRITY_WRONG);
 | 
	
		
			
				|  |  | -					LOGGER.info("完整度不足:{}", playDurationTime * 100 / durationTime);
 | 
	
		
			
				|  |  | +					LOGGER.debug("完整度不足:{}", playDurationTime * 100 / durationTime);
 | 
	
		
			
				|  |  |  				} else if (!noteAnalysis.isTempo()) {
 | 
	
		
			
				|  |  |  					noteAnalysis.setMusicalErrorType(NoteErrorType.CADENCE_WRONG);
 | 
	
		
			
				|  |  |  				} else if (notePlayResult.getStatus() == false) {
 | 
	
	
		
			
				|  | @@ -628,7 +633,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
 | 
	
		
			
				|  |  |  		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  | -		LOGGER.info("------------TimeStamp:{}  Duration:{}  floatingRange:{}  StartTime:{}  EndTime:{}------------", musicXmlNote.getTimeStamp(), musicXmlNote.getDuration(), floatingRange, startTime, endTime);
 | 
	
		
			
				|  |  | +		LOGGER.debug("------------TimeStamp:{}  Duration:{}  floatingRange:{}  StartTime:{}  EndTime:{}------------", musicXmlNote.getTimeStamp(), musicXmlNote.getDuration(), floatingRange, startTime, endTime);
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		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,7 +642,7 @@ 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());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		LOGGER.info("------------ correctedStartTime:{}  correctedEndTime:{}------------", correctedStartTime, correctedEndTime);
 | 
	
		
			
				|  |  | +		LOGGER.debug("------------ correctedStartTime:{}  correctedEndTime:{}------------", correctedStartTime, correctedEndTime);
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		//根据完整度取部分有效信号
 | 
	
		
			
				|  |  |  		int elementSize = chunkAnalysisList.size() * hardLevel.getIntegrityRange() / 100;
 | 
	
	
		
			
				|  | @@ -648,7 +653,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0);
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  | -		LOGGER.info("-------startTime:{}  endTime:{}------", firstChunkAnalysis.getStartTime(), chunkAnalysisList.get(chunkAnalysisList.size() - 1)
 | 
	
		
			
				|  |  | +		LOGGER.debug("-------startTime:{}  endTime:{}------", firstChunkAnalysis.getStartTime(), chunkAnalysisList.get(chunkAnalysisList.size() - 1)
 | 
	
		
			
				|  |  |  				.getEndTime());
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		List<ChunkAnalysis> chunkList = new ArrayList<ChunkAnalysis>(chunkAnalysisList);
 | 
	
	
		
			
				|  | @@ -737,7 +742,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  						if(!((noteFrequencyRange.getMinFrequency() < chunkAnalysis.getFrequency() * 2 && chunkAnalysis.getFrequency() * 2 < noteFrequencyRange.getMaxFrequency())
 | 
	
		
			
				|  |  |  								|| (noteFrequencyRange.getMinFrequency() < chunkAnalysis.getFrequency() / 2 && chunkAnalysis.getFrequency() / 2 < noteFrequencyRange.getMaxFrequency()))){
 | 
	
		
			
				|  |  |  							tempo = false;
 | 
	
		
			
				|  |  | -							LOGGER.info("节奏错误原因:不是同一个音[{}]:{}-{}", chunkAnalysis.getFrequency(), noteFrequencyRange.getMinFrequency(), noteFrequencyRange.getMaxFrequency());
 | 
	
		
			
				|  |  | +							LOGGER.debug("节奏错误原因:不是同一个音[{}]:{}-{}", chunkAnalysis.getFrequency(), noteFrequencyRange.getMinFrequency(), noteFrequencyRange.getMaxFrequency());
 | 
	
		
			
				|  |  |  							break;
 | 
	
		
			
				|  |  |  						}
 | 
	
		
			
				|  |  |  					}
 | 
	
	
		
			
				|  | @@ -745,7 +750,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  						if ((i + 1) / chunkAnalysisList.size() < hardLevel.getIntegrityRange()) {
 | 
	
		
			
				|  |  |  							if (unplayedSize > 0) {
 | 
	
		
			
				|  |  |  								tempo = false;
 | 
	
		
			
				|  |  | -								LOGGER.info("节奏错误原因:信号不连续");
 | 
	
		
			
				|  |  | +								LOGGER.debug("节奏错误原因:信号不连续");
 | 
	
		
			
				|  |  |  								break;
 | 
	
		
			
				|  |  |  							}
 | 
	
		
			
				|  |  |  						}
 | 
	
	
		
			
				|  | @@ -763,13 +768,13 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  			// 判断进入时间点
 | 
	
		
			
				|  |  |  			if(firstPeakIndex * 100 /chunkAnalysisList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())){
 | 
	
		
			
				|  |  |  				tempo = false;
 | 
	
		
			
				|  |  | -				LOGGER.info("节奏错误原因:进入时间点太晚");
 | 
	
		
			
				|  |  | +				LOGGER.debug("节奏错误原因:进入时间点太晚");
 | 
	
		
			
				|  |  |  			}else{
 | 
	
		
			
				|  |  |  				//判断是否与上一个音延续下来的
 | 
	
		
			
				|  |  |  				if(firstChunkAnalysis.getFrequency() > MIN_FREQUECY && lastChunkAnalysis.getFrequency() > MIN_FREQUECY){
 | 
	
		
			
				|  |  |  					tempo = new NoteFrequencyRange(standardFrequecy, firstChunkAnalysis.getFrequency()).equals(new NoteFrequencyRange(standardFrequecy, lastChunkAnalysis.getFrequency())) == false;
 | 
	
		
			
				|  |  |  					if(tempo == false){
 | 
	
		
			
				|  |  | -						LOGGER.info("节奏错误原因:上一个音[{}]延续下来导致的", lastChunkAnalysis.getFrequency());
 | 
	
		
			
				|  |  | +						LOGGER.debug("节奏错误原因:上一个音[{}]延续下来导致的", lastChunkAnalysis.getFrequency());
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
	
		
			
				|  | @@ -785,7 +790,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
 | 
	
		
			
				|  |  |  		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  | -		LOGGER.info("------------TimeStamp:{}  floatingRange:{}  StartTime:{}  EndTime:{}------------", musicXmlNote.getTimeStamp(), floatingRange, startTime, endTime);
 | 
	
		
			
				|  |  | +		LOGGER.debug("------------TimeStamp:{}  floatingRange:{}  StartTime:{}  EndTime:{}------------", musicXmlNote.getTimeStamp(), floatingRange, startTime, endTime);
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		List<ChunkAnalysis> chunkAnalysisList = totalChunkAnalysisList.stream().filter(t -> Double.doubleToLongBits(t.getStartTime()) >= Double.doubleToLongBits(startTime) && Double.doubleToLongBits(t.getEndTime()) <= Double.doubleToLongBits(endTime)).collect(Collectors.toList());
 | 
	
		
			
				|  |  |  		
 | 
	
	
		
			
				|  | @@ -804,12 +809,12 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		ChunkAnalysis firstChunkAnalysis = chunkAnalysisList.get(0);
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  | -		LOGGER.info("-------startTime:{}  endTime:{}------", firstChunkAnalysis.getStartTime(), chunkList.get(chunkList.size() - 1)
 | 
	
		
			
				|  |  | +		LOGGER.debug("-------startTime:{}  endTime:{}------", firstChunkAnalysis.getStartTime(), chunkList.get(chunkList.size() - 1)
 | 
	
		
			
				|  |  |  				.getEndTime());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		if (musicXmlNote.getFrequency() == -1) {// 休止符
 | 
	
		
			
				|  |  |  			
 | 
	
		
			
				|  |  | -			LOGGER.info("--Amplitude:{}  Denominator:{}",chunkList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
 | 
	
		
			
				|  |  | +			LOGGER.debug("--Amplitude:{}  Denominator:{}",chunkList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
 | 
	
		
			
				|  |  |  			return chunkList.stream().filter(t -> t.getAmplitude() > hardLevel.getAmplitudeThreshold()).count() <= 0;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		
 | 
	
	
		
			
				|  | @@ -827,7 +832,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		chunkAmplitudeList.add(0, lastChunkAnalysis.getAmplitude());
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  | -		LOGGER.info("--Amplitude:{}  Denominator:{}",chunkAmplitudeList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
 | 
	
		
			
				|  |  | +		LOGGER.debug("--Amplitude:{}  Denominator:{}",chunkAmplitudeList.stream().map(t -> t).collect(Collectors.toList()), musicXmlNote.getDenominator());
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		// 检测是否有多个波峰
 | 
	
		
			
				|  |  |  		boolean tempo = false;
 | 
	
	
		
			
				|  | @@ -867,7 +872,7 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  		if (tempo) {
 | 
	
		
			
				|  |  |  			// 判断进入时间点
 | 
	
		
			
				|  |  |  			if((firstPeakIndex - 1) * 100 /chunkAmplitudeList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) * 2){
 | 
	
		
			
				|  |  | -				LOGGER.info("超过范围:{}", (firstPeakIndex - 1) * 100 /chunkAmplitudeList.size());
 | 
	
		
			
				|  |  | +				LOGGER.debug("超过范围:{}", (firstPeakIndex - 1) * 100 /chunkAmplitudeList.size());
 | 
	
		
			
				|  |  |  				tempo = false;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -878,17 +883,17 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  	private double queryFirstNoteStartTime(List<ChunkAnalysis> chunkAnalysisList, MusicXmlNote musicXmlNote) {
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		if(chunkAnalysisList == null || chunkAnalysisList.size() == 0){
 | 
	
		
			
				|  |  | -			LOGGER.info("找不到数据,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 | 
	
		
			
				|  |  | +			LOGGER.debug("找不到数据,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 | 
	
		
			
				|  |  |  			return musicXmlNote.getTimeStamp() + dynamicOffset;
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  |  		if (percussionList.contains(subjectId)) {
 | 
	
		
			
				|  |  |  			Optional<ChunkAnalysis> optional = chunkAnalysisList.stream().filter(t -> t.getAmplitude() > hardLevel.getAmplitudeThreshold()).findFirst();
 | 
	
		
			
				|  |  |  			if(optional.isPresent()){
 | 
	
		
			
				|  |  | -				LOGGER.info("范围内查询到信号,correctedStartTime:{}", optional.get().getStartTime());
 | 
	
		
			
				|  |  | +				LOGGER.debug("范围内查询到信号,correctedStartTime:{}", optional.get().getStartTime());
 | 
	
		
			
				|  |  |  				return optional.get().getStartTime();
 | 
	
		
			
				|  |  |  			}else{
 | 
	
		
			
				|  |  | -				LOGGER.info("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 | 
	
		
			
				|  |  | +				LOGGER.debug("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 | 
	
		
			
				|  |  |  				return musicXmlNote.getTimeStamp() + dynamicOffset;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
	
		
			
				|  | @@ -899,10 +904,10 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  			if((int)preMusicXmlNote.getFrequency() == (int)musicXmlNote.getFrequency()){
 | 
	
		
			
				|  |  |  				Optional<ChunkAnalysis> optional = chunkAnalysisList.stream().filter(t -> t.getFrequency() <= MIN_FREQUECY).findFirst();
 | 
	
		
			
				|  |  |  				if(optional.isPresent()){
 | 
	
		
			
				|  |  | -					LOGGER.info("与上一个音同音,有断开,correctedStartTime:{}", optional.get().getStartTime());
 | 
	
		
			
				|  |  | +					LOGGER.debug("与上一个音同音,有断开,correctedStartTime:{}", optional.get().getStartTime());
 | 
	
		
			
				|  |  |  					return optional.get().getEndTime();
 | 
	
		
			
				|  |  |  				}else{
 | 
	
		
			
				|  |  | -					LOGGER.info("与上一个音同音,未断开,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 | 
	
		
			
				|  |  | +					LOGGER.debug("与上一个音同音,未断开,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 | 
	
		
			
				|  |  |  					return musicXmlNote.getTimeStamp() + dynamicOffset;
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
	
		
			
				|  | @@ -915,12 +920,12 @@ public class UserChannelContext {
 | 
	
		
			
				|  |  |  		for (ChunkAnalysis ca : chunkAnalysisList) {
 | 
	
		
			
				|  |  |  			noteFrequencyRange = new NoteFrequencyRange(standardFrequecy, ca.getFrequency());
 | 
	
		
			
				|  |  |  			if (standardNote.equals(noteFrequencyRange)) {
 | 
	
		
			
				|  |  | -				LOGGER.info("范围内查询到信号,correctedStartTime:{}", ca.getStartTime());
 | 
	
		
			
				|  |  | +				LOGGER.debug("范围内查询到信号,correctedStartTime:{}", ca.getStartTime());
 | 
	
		
			
				|  |  |  				return ca.getStartTime();
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		
 | 
	
		
			
				|  |  | -		LOGGER.info("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 | 
	
		
			
				|  |  | +		LOGGER.debug("范围内未查询到信号,correctedStartTime:{}", musicXmlNote.getTimeStamp() + dynamicOffset);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		//return chunkAnalysisList.get(chunkAnalysisList.size() - 1).getEndTime();
 | 
	
		
			
				|  |  |  		return musicXmlNote.getTimeStamp() + dynamicOffset;
 |