|
@@ -100,6 +100,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
case SoundSocketService.MUSIC_XML:
|
|
|
userSoundInfoMap.put(phone, new SoundCompareHelper());
|
|
|
List<MusicPitchDetailDto> musicXmlInfos = JSON.parseArray(bodyObject.getString("musicXmlInfos"), MusicPitchDetailDto.class);
|
|
|
+ userSoundInfoMap.get(phone).setMusicXmlInfos(musicXmlInfos);
|
|
|
musicXmlInfos = musicXmlInfos.stream().filter(m->!m.getDontEvaluating()).collect(Collectors.toList());
|
|
|
userSoundInfoMap.get(phone).setMusicScoreId(bodyObject.getInteger("id"));
|
|
|
userSoundInfoMap.get(phone).setMeasureXmlInfoMap(musicXmlInfos.stream().collect(Collectors.groupingBy(MusicPitchDetailDto::getMeasureIndex)));
|
|
@@ -211,6 +212,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
exception.printStackTrace();
|
|
|
LOGGER.info("发生了错误,移除客户端: {}", phone);
|
|
|
WS_CLIENTS.remove(phone);
|
|
|
+ userSoundInfoMap.remove(phone);
|
|
|
createHeader(phone);
|
|
|
}
|
|
|
|
|
@@ -220,6 +222,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
String phone = session.getPrincipal().getName().split(":")[1];
|
|
|
LOGGER.info("{}离线", phone);
|
|
|
WS_CLIENTS.remove(phone);
|
|
|
+ userSoundInfoMap.remove(phone);
|
|
|
createHeader(phone);
|
|
|
}
|
|
|
|
|
@@ -264,7 +267,6 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
userSoundInfoMap.get(phone).setAccessFile(null);
|
|
|
}
|
|
|
// userSoundInfoMap.get(phone).setRecordMeasurePithInfo(null);
|
|
|
- LOGGER.info("评分数据:{}", JSON.toJSONString(userSoundInfoMap.get(phone)));
|
|
|
userSoundInfoMap.remove(phone);
|
|
|
}
|
|
|
|
|
@@ -306,11 +308,18 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
|
|
|
for (int i = 0; i < userSoundInfoMap.get(phone).getMeasureXmlInfoMap().get(measureIndex).size(); i++) {
|
|
|
MusicPitchDetailDto musicXmlInfo = userSoundInfoMap.get(phone).getMeasureXmlInfoMap().get(measureIndex).get(i);
|
|
|
+
|
|
|
int ot5 = (int) (musicXmlInfo.getDuration()*0.05);
|
|
|
int halfOt = (int) (musicXmlInfo.getDuration()*0.35);
|
|
|
int startTimeStamp = musicXmlInfo.getTimeStamp() + userSoundInfoMap.get(phone).getOffsetTime() + ot5;
|
|
|
int endTimeStamp = musicXmlInfo.getTimeStamp() + userSoundInfoMap.get(phone).getOffsetTime() + musicXmlInfo.getDuration() - ot5;
|
|
|
|
|
|
+ int preMeasureEndTimeStamp = startTimeStamp;
|
|
|
+ List<MusicPitchDetailDto> ms = userSoundInfoMap.get(phone).getMusicXmlInfos().stream().filter(m -> m.getMeasureIndex() == musicXmlInfo.getMeasureIndex() - 1).collect(Collectors.toList());
|
|
|
+ if(!CollectionUtils.isEmpty(ms)){
|
|
|
+ preMeasureEndTimeStamp = ms.get(0).getEndTimeStamp() + userSoundInfoMap.get(phone).getOffsetTime();
|
|
|
+ }
|
|
|
+
|
|
|
//时间范围内有效节奏数量
|
|
|
float cadenceValidNum = 0;
|
|
|
//时间范围内有效音频数量
|
|
@@ -335,7 +344,7 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
if(newMeasure){
|
|
|
break;
|
|
|
}
|
|
|
- if(recordInfo.getTimeStamp()<startTimeStamp||recordInfo.getTimeStamp()>(startTimeStamp+halfOt)){
|
|
|
+ if(recordInfo.getTimeStamp()<preMeasureEndTimeStamp||recordInfo.getTimeStamp()>startTimeStamp){
|
|
|
continue;
|
|
|
}
|
|
|
if(Math.abs(recordInfo.getFrequency()-preMusicalNotesPitch)>10){
|
|
@@ -669,6 +678,8 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
|
|
|
//存储评分数据
|
|
|
sysMusicCompareRecordService.saveMusicCompareData(phone, userSoundInfoMap.get(phone).getMusicScoreId(), userSoundInfoMap.get(phone).getUserMeasureScoreMap());
|
|
|
+
|
|
|
+ LOGGER.info("评分数据:{}", JSON.toJSONString(userSoundInfoMap.get(phone)));
|
|
|
}
|
|
|
|
|
|
/**
|