|
@@ -269,11 +269,23 @@ public class WebSocketHandler extends AbstractWebSocketHandler {
|
|
|
|
|
|
int totalCompareNum = userSoundInfoMap.get(phone).getMeasureXmlInfoMap().get(measureIndex).size();
|
|
|
|
|
|
- for (MusicPitchDetailDto musicXmlInfo : userSoundInfoMap.get(phone).getMeasureXmlInfoMap().get(measureIndex)) {
|
|
|
- int ignoreTime = (int) (musicXmlInfo.getDuration() * 0.1);
|
|
|
+ //如果是第一小节,需要计算出录音与播放不同步导致的空白时间偏移量
|
|
|
+ if(measureIndex==0){
|
|
|
+ int hasPitchNum = 0;
|
|
|
+ for (MusicPitchDetailDto recordInfo : userSoundInfoMap.get(phone).getRecordMeasurePithInfo()) {
|
|
|
+ if(recordInfo.getFrequency()>0){
|
|
|
+ hasPitchNum++;
|
|
|
+ }
|
|
|
+ if(hasPitchNum>3){
|
|
|
+ userSoundInfoMap.get(phone).setOffsetTime(recordInfo.getTimeStamp());
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- int startTimeStamp = musicXmlInfo.getTimeStamp() + ignoreTime;
|
|
|
- int endTimeStamp = musicXmlInfo.getTimeStamp()+musicXmlInfo.getDuration() - ignoreTime;
|
|
|
+ for (MusicPitchDetailDto musicXmlInfo : userSoundInfoMap.get(phone).getMeasureXmlInfoMap().get(measureIndex)) {
|
|
|
+ int startTimeStamp = musicXmlInfo.getTimeStamp()-100 + userSoundInfoMap.get(phone).getOffsetTime();
|
|
|
+ int endTimeStamp = musicXmlInfo.getTimeStamp()+musicXmlInfo.getDuration()-100 + userSoundInfoMap.get(phone).getOffsetTime();
|
|
|
|
|
|
//时间范围内有效音准数量
|
|
|
float recordValidIntonationNum = 0;
|