Browse Source

Merge branch 'music_score'

Joburgess 4 years ago
parent
commit
ce944f0f64

+ 8 - 2
mec-biz/src/main/java/com/ym/mec/biz/handler/WebSocketHandler.java

@@ -41,6 +41,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketHandler.class);
 
+    //存储客户端链接
     public static final Map<String, WebSocketSession> WS_CLIENTS = new ConcurrentHashMap<>();
 
     private BigDecimal oneHundred = new BigDecimal(100);
@@ -123,6 +124,9 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
                 calTotalScore(phone);
                 createHeader(phone);
                 break;
+            case SoundSocketService.RECORD_CANCEL:
+                createHeader(phone);
+                break;
             default:
                 break;
         }
@@ -142,6 +146,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         dispatcher.addAudioProcessor(new PitchProcessor(algo, simpleRate, simpleSize, (pitchDetectionResult, audioEvent) -> {
             int timeStamp = (int) (userSoundInfoMap.get(phone).getMeasureStartTime() + audioEvent.getTimeStamp()*1000);
             float pitch = pitchDetectionResult.getPitch();
+            LOGGER.info("频率:{}, {}", timeStamp, pitch);
             recordInfo.add(new MusicPitchDetailDto(timeStamp, pitch));
         }));
         dispatcher.run();
@@ -153,6 +158,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
         userSoundInfoMap.get(phone).getRecordMeasurePithInfo().addAll(recordInfo);
         for (Map.Entry<Integer, Integer> userMeasureEndTimeMapEntry : userSoundInfoMap.get(phone).getMeasureEndTime().entrySet()) {
             if(recordTime>userMeasureEndTimeMapEntry.getValue()){
+//                LOGGER.info("评测时间:{}", recordTime);
                 measureCompare(phone, userMeasureEndTimeMapEntry.getKey());
                 userSoundInfoMap.get(phone).getMeasureEndTime().remove(userMeasureEndTimeMapEntry.getKey());
                 break;
@@ -248,7 +254,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
             //音准匹配数量
             float intonationNum = 0;
             //音准匹配误差范围
-            float intonationErrRange = 30;
+            float intonationErrRange = 10;
             //音准有效阈值
             float intonationValidDuty = 0.5f;
 
@@ -274,7 +280,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
                 //时间范围内匹配次数
                 float compareNum = 0;
                 for (MusicPitchDetailDto recordInfo : userSoundInfoMap.get(phone).getRecordMeasurePithInfo()) {
-                    LOGGER.info("频率:{}, {}", musicXmlInfo.getFrequency(), recordInfo.getFrequency());
+//                    LOGGER.info("频率:{}, {}", musicXmlInfo.getFrequency(), recordInfo.getFrequency());
                     //如果在时间范围之外直接跳过
                     if(recordInfo.getTimeStamp()<startTimeStamp||recordInfo.getTimeStamp()>endTimeStamp){
                         continue;

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SoundSocketService.java

@@ -10,5 +10,6 @@ public interface SoundSocketService {
     String MUSIC_XML = "musicXml";
     String RECORD_START = "recordStart";
     String RECORD_END = "recordEnd";
+    String RECORD_CANCEL = "recordCancel";
 
 }