ソースを参照

Merge remote-tracking branch 'origin/saas' into saas

zouxuan 2 年 前
コミット
6c598f2aa5

+ 18 - 3
audio-analysis/src/main/java/com/yonge/netty/dto/HardLevelEnum.java

@@ -88,11 +88,25 @@ public enum HardLevelEnum implements BaseEnum<String, HardLevelEnum> {
 		return frequencyThreshold;
 	}
 
-	public int getTempoEffectiveRange(int denominator) {
+	public int getTempoEffectiveRange(int denominator, double duration) {
 		
 		int tempoEffectiveRange = 0;
 		
-		switch (denominator) {
+		if(duration >= 2666){
+			tempoEffectiveRange = tempoEffectiveRangeOf1;
+		}else if(duration >= 1333){
+			tempoEffectiveRange = tempoEffectiveRangeOf2;
+		}else if(duration >= 666){
+			tempoEffectiveRange = tempoEffectiveRangeOf4;
+		}else if(duration >= 333){
+			tempoEffectiveRange = tempoEffectiveRangeOf8;
+		}else if(duration >= 166){
+			tempoEffectiveRange = tempoEffectiveRangeOf16;
+		}else{
+			tempoEffectiveRange = tempoEffectiveRangeOf32;
+		}
+		
+		/*switch (denominator) {
 		case 1:
 			tempoEffectiveRange = tempoEffectiveRangeOf1;
 			break;
@@ -114,7 +128,7 @@ public enum HardLevelEnum implements BaseEnum<String, HardLevelEnum> {
 
 		default:
 			break;
-		}
+		}*/
 		return tempoEffectiveRange;
 	}
 
@@ -132,3 +146,4 @@ public enum HardLevelEnum implements BaseEnum<String, HardLevelEnum> {
 	}
 
 }
+

+ 32 - 11
audio-analysis/src/main/java/com/yonge/netty/dto/UserChannelContext.java

@@ -391,7 +391,7 @@ public class UserChannelContext {
 				//计算延迟偏移值
 				//playTime = musicXmlNote.getTimeStamp() + durationTime;
 				dynamicOffset = chunkAnalysis.getStartTime() - musicXmlNote.getTimeStamp();
-				if(100 * dynamicOffset / musicXmlNote.getDuration() > (100 - hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()))){
+				if(100 * dynamicOffset / musicXmlNote.getDuration() > (100 - hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration()))){
 					dynamicOffset = 0;
 				}
 			}
@@ -532,7 +532,7 @@ public class UserChannelContext {
 
 	public void evaluateForNote(MusicXmlNote musicXmlNote, NoteAnalysis noteAnalysis) {
 		
-		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
+		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration()) / 100;
 		
 		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
 		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
@@ -641,7 +641,7 @@ public class UserChannelContext {
 	
 	private int computeFrequency(MusicXmlNote musicXmlNote) {
 		
-		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
+		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration()) / 100;
 		
 		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
 		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
@@ -691,7 +691,7 @@ public class UserChannelContext {
 	 */
 	private boolean computeTempoWithFrequency(MusicXmlNote musicXmlNote){
 		
-		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
+		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration()) / 100;
 		
 		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
 		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
@@ -838,7 +838,7 @@ public class UserChannelContext {
 		
 		if (tempo) {
 			// 判断进入时间点
-			if(firstPeakIndex * 100 /chunkList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())){
+			if(firstPeakIndex * 100 /chunkList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration())){
 				tempo = false;
 				LOGGER.debug("节奏错误原因:进入时间点太晚");
 			}else{
@@ -857,7 +857,7 @@ public class UserChannelContext {
 	
 	private boolean computeTempoWithAmplitude2(MusicXmlNote musicXmlNote) {
 
-		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) / 100;
+		double floatingRange = musicXmlNote.getDuration() * hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration()) / 100;
 		
 		double endTime = musicXmlNote.getTimeStamp() + dynamicOffset + floatingRange;
 		double startTime = musicXmlNote.getTimeStamp() + dynamicOffset - floatingRange;
@@ -872,7 +872,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());
 		
 		//根据完整度取部分有效信号
-		int elementSize = chunkAnalysisList.size() * (100 - hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator())) / 100;
+		int elementSize = chunkAnalysisList.size() * (100 - hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration())) / 100;
 		List<ChunkAnalysis> chunkList = chunkAnalysisList.subList(0, elementSize);
 		
 		if(chunkList == null || chunkList.size() == 0){
@@ -908,11 +908,31 @@ public class UserChannelContext {
 		
 		// 检测是否有多个波峰
 		boolean tempo = false;
-		boolean isContinue = true;
+		boolean isContinue = false;
 		int firstPeakIndex = -1;
+		int firstPeakValue = 0;
 		int peakSize = 0;
-		
+
 		for (int i = 1; i < chunkAmplitudeList.size(); i++) {
+			if (chunkAmplitudeList.get(i - 1) + hardLevel.getAmplitudeThreshold() >= chunkAmplitudeList.get(i)) {
+				isContinue = false;
+				continue;
+			}
+
+			if(isContinue == false && chunkAmplitudeList.get(i - 1) + hardLevel.getAmplitudeThreshold() < chunkAmplitudeList.get(i)){
+				isContinue = true;
+				peakSize++;
+				
+				if(firstPeakIndex == -1){
+					firstPeakIndex = i;
+					firstPeakValue = chunkAmplitudeList.get(i);
+				}
+			}
+		}
+		
+		LOGGER.debug("PeakSize:" + peakSize + "  FirstPeakIndex:" + firstPeakIndex + " FirstPeakValue:" + firstPeakValue);
+		
+		/*for (int i = 1; i < chunkAmplitudeList.size(); i++) {
 			if (Math.abs(chunkAmplitudeList.get(i) - chunkAmplitudeList.get(i - 1)) < hardLevel.getAmplitudeThreshold()) {
 				continue;
 			}
@@ -932,7 +952,7 @@ public class UserChannelContext {
 					isContinue = false;
 				}
 			}
-		}
+		}*/
 		
 		if(peakSize == 0){
 			tempo = lastChunkAnalysis.isPeak();
@@ -945,7 +965,7 @@ public class UserChannelContext {
 		
 		if (tempo) {
 			// 判断进入时间点
-			if((firstPeakIndex - 1) * 100 /chunkAmplitudeList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator()) * 2){
+			if((firstPeakIndex - 1) * 100 /chunkAmplitudeList.size() > hardLevel.getTempoEffectiveRange(musicXmlNote.getDenominator(), musicXmlNote.getDuration()) * 2){
 				LOGGER.debug("超过范围:{}", (firstPeakIndex - 1) * 100 /chunkAmplitudeList.size());
 				tempo = false;
 			}
@@ -1018,3 +1038,4 @@ public class UserChannelContext {
 	}
 	
 }
+

+ 2 - 2
cms/src/main/java/com/ym/mec/cms/controller/NewsController.java

@@ -154,9 +154,9 @@ public class NewsController extends BaseController {
         if (newsInfo.getType() == 6 || newsInfo.getType() == 4) {
             newsInfo.setTenantId(-1);
         }
-        if (newsInfo.getContent().length() > 7999) {
+        /*if (newsInfo.getContent().length() > 7999) {
             return failed("内容过长");
-        }
+        }*/
         return succeed(sysNewsInformationService.insert(newsInfo));
     }